dhscanner-bitcode-0.1.0.3: Intermediate language for static code analysis
Safe HaskellSafe-Inferred
LanguageHaskell2010

Callable

Description

  • The intermediate language (IL) / intermediate representation (IR) / bitcode are all synonyms for a data structure able to represent code originating from multiple programming languages.
  • In our context, the main purpose is to enable an efficient and uniform static code analysis, as part of the dhscanner framework for CI/CD container security checks.
  • dhscanner 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, then, the resulting abstract syntax trees are sent to code generation, where they are translated into a collection of callables.
  • A callable is a sequence of commands corresponding to either a function, a method, a lambda or (in languages like python) a script.
Synopsis

Documentation

data Callables Source #

Constructors

Callables 

Instances

Instances details
FromJSON Callables Source # 
Instance details

Defined in Callable

ToJSON Callables Source # 
Instance details

Defined in Callable

Generic Callables Source # 
Instance details

Defined in Callable

Associated Types

type Rep Callables :: Type -> Type

Methods

from :: Callables -> Rep Callables x

to :: Rep Callables x -> Callables

Show Callables Source # 
Instance details

Defined in Callable

Methods

showsPrec :: Int -> Callables -> ShowS

show :: Callables -> String

showList :: [Callables] -> ShowS

Eq Callables Source # 
Instance details

Defined in Callable

Methods

(==) :: Callables -> Callables -> Bool

(/=) :: Callables -> Callables -> Bool

Ord Callables Source # 
Instance details

Defined in Callable

Methods

compare :: Callables -> Callables -> Ordering

(<) :: Callables -> Callables -> Bool

(<=) :: Callables -> Callables -> Bool

(>) :: Callables -> Callables -> Bool

(>=) :: Callables -> Callables -> Bool

max :: Callables -> Callables -> Callables

min :: Callables -> Callables -> Callables

type Rep Callables Source # 
Instance details

Defined in Callable

type Rep Callables = D1 ('MetaData "Callables" "Callable" "dhscanner-bitcode-0.1.0.3-inplace" 'False) (C1 ('MetaCons "Callables" 'PrefixI 'True) (S1 ('MetaSel ('Just "actualCallables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Callable])))

data Callable Source #

Four kinds of callables.

Instances

Instances details
FromJSON Callable Source # 
Instance details

Defined in Callable

ToJSON Callable Source # 
Instance details

Defined in Callable

Generic Callable Source # 
Instance details

Defined in Callable

Associated Types

type Rep Callable :: Type -> Type

Methods

from :: Callable -> Rep Callable x

to :: Rep Callable x -> Callable

Show Callable Source # 
Instance details

Defined in Callable

Methods

showsPrec :: Int -> Callable -> ShowS

show :: Callable -> String

showList :: [Callable] -> ShowS

Eq Callable Source # 
Instance details

Defined in Callable

Methods

(==) :: Callable -> Callable -> Bool

(/=) :: Callable -> Callable -> Bool

Ord Callable Source # 
Instance details

Defined in Callable

Methods

compare :: Callable -> Callable -> Ordering

(<) :: Callable -> Callable -> Bool

(<=) :: Callable -> Callable -> Bool

(>) :: Callable -> Callable -> Bool

(>=) :: Callable -> Callable -> Bool

max :: Callable -> Callable -> Callable

min :: Callable -> Callable -> Callable

type Rep Callable Source # 
Instance details

Defined in Callable

type Rep Callable = D1 ('MetaData "Callable" "Callable" "dhscanner-bitcode-0.1.0.3-inplace" 'False) ((C1 ('MetaCons "Method" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 MethodContent)) :+: C1 ('MetaCons "Lambda" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 LambdaContent))) :+: (C1 ('MetaCons "Script" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ScriptContent)) :+: C1 ('MetaCons "Function" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FunctionContent))))

data MethodContent Source #

Instances

Instances details
FromJSON MethodContent Source # 
Instance details

Defined in Callable

ToJSON MethodContent Source # 
Instance details

Defined in Callable

Generic MethodContent Source # 
Instance details

Defined in Callable

Associated Types

type Rep MethodContent :: Type -> Type

Show MethodContent Source # 
Instance details

Defined in Callable

Methods

showsPrec :: Int -> MethodContent -> ShowS

show :: MethodContent -> String

showList :: [MethodContent] -> ShowS

Eq MethodContent Source # 
Instance details

Defined in Callable

Ord MethodContent Source # 
Instance details

Defined in Callable

type Rep MethodContent Source # 
Instance details

Defined in Callable

type Rep MethodContent = D1 ('MetaData "MethodContent" "Callable" "dhscanner-bitcode-0.1.0.3-inplace" 'False) (C1 ('MetaCons "MethodContent" 'PrefixI 'True) ((S1 ('MetaSel ('Just "methodName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 MethdName) :*: S1 ('MetaSel ('Just "hostingClassName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ClassName)) :*: (S1 ('MetaSel ('Just "hostingClassSupers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Fqn]) :*: (S1 ('MetaSel ('Just "methodBody") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cfg) :*: S1 ('MetaSel ('Just "methodLocation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Location)))))

data LambdaContent Source #

Constructors

LambdaContent 

Instances

Instances details
FromJSON LambdaContent Source # 
Instance details

Defined in Callable

ToJSON LambdaContent Source # 
Instance details

Defined in Callable

Generic LambdaContent Source # 
Instance details

Defined in Callable

Associated Types

type Rep LambdaContent :: Type -> Type

Show LambdaContent Source # 
Instance details

Defined in Callable

Methods

showsPrec :: Int -> LambdaContent -> ShowS

show :: LambdaContent -> String

showList :: [LambdaContent] -> ShowS

Eq LambdaContent Source # 
Instance details

Defined in Callable

Ord LambdaContent Source # 
Instance details

Defined in Callable

type Rep LambdaContent Source # 
Instance details

Defined in Callable

type Rep LambdaContent = D1 ('MetaData "LambdaContent" "Callable" "dhscanner-bitcode-0.1.0.3-inplace" 'False) (C1 ('MetaCons "LambdaContent" 'PrefixI 'True) (S1 ('MetaSel ('Just "lambdaBody") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cfg) :*: S1 ('MetaSel ('Just "lambdaLocation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Location)))

data ScriptContent Source #

Constructors

ScriptContent 

Fields

Instances

Instances details
FromJSON ScriptContent Source # 
Instance details

Defined in Callable

ToJSON ScriptContent Source # 
Instance details

Defined in Callable

Generic ScriptContent Source # 
Instance details

Defined in Callable

Associated Types

type Rep ScriptContent :: Type -> Type

Show ScriptContent Source # 
Instance details

Defined in Callable

Methods

showsPrec :: Int -> ScriptContent -> ShowS

show :: ScriptContent -> String

showList :: [ScriptContent] -> ShowS

Eq ScriptContent Source # 
Instance details

Defined in Callable

Ord ScriptContent Source # 
Instance details

Defined in Callable

type Rep ScriptContent Source # 
Instance details

Defined in Callable

type Rep ScriptContent = D1 ('MetaData "ScriptContent" "Callable" "dhscanner-bitcode-0.1.0.3-inplace" 'False) (C1 ('MetaCons "ScriptContent" 'PrefixI 'True) (S1 ('MetaSel ('Just "filename") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "scriptBody") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cfg)))

data Annotation Source #

Constructors

Annotation 

Fields

Instances

Instances details
FromJSON Annotation Source # 
Instance details

Defined in Callable

ToJSON Annotation Source # 
Instance details

Defined in Callable

Generic Annotation Source # 
Instance details

Defined in Callable

Associated Types

type Rep Annotation :: Type -> Type

Methods

from :: Annotation -> Rep Annotation x

to :: Rep Annotation x -> Annotation

Show Annotation Source # 
Instance details

Defined in Callable

Methods

showsPrec :: Int -> Annotation -> ShowS

show :: Annotation -> String

showList :: [Annotation] -> ShowS

Eq Annotation Source # 
Instance details

Defined in Callable

Methods

(==) :: Annotation -> Annotation -> Bool

(/=) :: Annotation -> Annotation -> Bool

Ord Annotation Source # 
Instance details

Defined in Callable

type Rep Annotation Source # 
Instance details

Defined in Callable

type Rep Annotation = D1 ('MetaData "Annotation" "Callable" "dhscanner-bitcode-0.1.0.3-inplace" 'False) (C1 ('MetaCons "Annotation" 'PrefixI 'True) (S1 ('MetaSel ('Just "annotationFqn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "annotationConstantStrings") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String])))

data FunctionContent Source #

Instances

Instances details
FromJSON FunctionContent Source # 
Instance details

Defined in Callable

ToJSON FunctionContent Source # 
Instance details

Defined in Callable

Generic FunctionContent Source # 
Instance details

Defined in Callable

Associated Types

type Rep FunctionContent :: Type -> Type

Show FunctionContent Source # 
Instance details

Defined in Callable

Methods

showsPrec :: Int -> FunctionContent -> ShowS

show :: FunctionContent -> String

showList :: [FunctionContent] -> ShowS

Eq FunctionContent Source # 
Instance details

Defined in Callable

Ord FunctionContent Source # 
Instance details

Defined in Callable

type Rep FunctionContent Source # 
Instance details

Defined in Callable

type Rep FunctionContent = D1 ('MetaData "FunctionContent" "Callable" "dhscanner-bitcode-0.1.0.3-inplace" 'False) (C1 ('MetaCons "FunctionContent" 'PrefixI 'True) ((S1 ('MetaSel ('Just "funcName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FuncName) :*: S1 ('MetaSel ('Just "funcBody") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cfg)) :*: (S1 ('MetaSel ('Just "funcAnnotations") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Annotation]) :*: S1 ('MetaSel ('Just "funcLocation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Location))))