cabal-version: 3.0
name: dhscanner-bitcode
category: sast
synopsis: Intermediate language for static code analysis
description:
The [intermediate language \/ intermediate representation \/ bitcode](https://en.wikipedia.org/wiki/Intermediate_representation#Intermediate_language)
(IL \/ IR \/ bitcode) is a data structure able to represent code originating from /multiple/
programming languages. Its main purpose is to enable an efficient and uniform /static code analysis/,
as part of the [dhscanner](https://github.com/OrenGitHub/dhscanner) framework
for [CI/CD](https://en.wikipedia.org/wiki/CI/CD) container security checks.
As part of that framework, it targets mostly languages used for /cloud native applications/:
__Python__, __Ruby__, __Php__, __Javascript__, __Typescript__, __Java__, __C#__ and __Golang__.
Typically, a collection of files are first parsed using relevant
[parsers](https://github.com/OrenGitHub/dhscanner.1.parsers), then,
the resulting collection of abstract syntax trees is sent to code generation,
where it is translated into a collection of /callables/.
A callable is a sequence of commands corresponding to either a function, a method
or (in languages like python) a script. The design of commands was done with simplicity
in mind. The commands resemble an abstract RISC-style assembley, motivated by keeping
later-phases analyses as simple as possible.
version: 1.0.6
license: GPL-3.0-only
license-file: LICENSE
author: OrenGitHub
maintainer: Oren Ish Shalom
copyright: (c) 2024 Oren Ish Shalom
homepage: https://github.com/OrenGitHub/dhscanner
stability: experimental
build-type: Simple
common ghc_options
ghc-options: -Wall -O2
library
import:
ghc_options
exposed-modules:
Bitcode,
Callable,
Cfg,
Fqn
build-depends:
aeson,
base >=4.17 && <=4.20,
containers,
dhscanner-ast >= 1.1.0,
hs-source-dirs:
src
default-language:
Haskell2010
test-suite dhscanner-bitcode-test
import:
ghc_options
type:
exitcode-stdio-1.0
hs-source-dirs:
test
main-is:
Main.hs
build-depends:
base,
dhscanner-ast,
dhscanner-bitcode,
containers,
QuickCheck,
random
default-language:
Haskell2010