RecoverForXCompilationUnit

io.joern.x2cpg.passes.frontend.RecoverForXCompilationUnit
abstract class RecoverForXCompilationUnit[ComputationalUnit <: AstNode](cu: ComputationalUnit, builder: DiffGraphBuilder, globalTable: SymbolTable[GlobalKey]) extends RecursiveTask[Unit]

Performs type recovery from the root of a compilation unit level

Attributes

ComputationalUnit

the AstNode type used to represent a computational unit of the language.

builder

the graph builder

cu

a compilation unit, e.g. file, procedure, type, etc.

Graph
Supertypes
class RecursiveTask[Unit]
class ForkJoinTask[Unit]
trait Serializable
trait Future[Unit]
class Object
trait Matchable
class Any

Members list

Concise view

Value members

Abstract methods

Generates a task to create an import task.

Generates a task to create an import task.

Attributes

node

the import node or method definition node.

symbolTable

the local table.

Returns:

a forkable SetXProcedureDefTask task.

def importNodes(cu: AstNode): Traversal[CfgNode]

Attributes

Returns:

the import nodes of this computational unit.

def visitAssignments(assignment: Assignment): Unit

Using assignment and import information (in the global symbol table), will propagate these types in the symbol table.

Using assignment and import information (in the global symbol table), will propagate these types in the symbol table.

Attributes

assignment

assignment call pointer.

Concrete methods

protected def assignments: Traversal[Assignment]
override def compute(): Unit

Attributes

Definition Classes
RecursiveTask
def internalMethodNodes(cu: AstNode): Traversal[Method]

Attributes

cu

the current computational unit.

Returns:

the methods defined within this computational unit.

def postVisitImports(): Unit

The initial import setting is over-approximated, so this step checks the CPG for any matches and prunes against these findings. If there are no findings, it will leave the table as is. The latter is significant for external types or methods.

The initial import setting is over-approximated, so this step checks the CPG for any matches and prunes against these findings. If there are no findings, it will leave the table as is. The latter is significant for external types or methods.

Attributes

Provides an entrypoint to add known symbols and their possible types.

Provides an entrypoint to add known symbols and their possible types.

Attributes

protected def setImportsFromDeclaredProcedures(procedureDeclarations: Traversal[CfgNode]): Unit

Using import information and internally defined procedures, will generate a mapping between how functions and types are aliased and called and themselves.

Using import information and internally defined procedures, will generate a mapping between how functions and types are aliased and called and themselves.

Attributes

procedureDeclarations

imports to types or functions and internally defined methods themselves.

protected def setTypeInformation(): Unit

Using an entry from the symbol table, will queue the CPG modification to persist the recovered type information.

Using an entry from the symbol table, will queue the CPG modification to persist the recovered type information.

Attributes

Inherited methods

def cancel(x$0: Boolean): Boolean

Attributes

Inherited from:
ForkJoinTask
final def compareAndSetForkJoinTaskTag(x$0: Short, x$1: Short): Boolean

Attributes

Inherited from:
ForkJoinTask
def complete(x$0: Unit): Unit

Attributes

Inherited from:
ForkJoinTask
def completeExceptionally(x$0: Throwable): Unit

Attributes

Inherited from:
ForkJoinTask
final def fork(): ForkJoinTask[V]

Attributes

Inherited from:
ForkJoinTask
final def get(x$0: Long, x$1: TimeUnit): V

Attributes

Inherited from:
ForkJoinTask
final def get(): V

Attributes

Inherited from:
ForkJoinTask
final def getException(): Throwable

Attributes

Inherited from:
ForkJoinTask
final def getForkJoinTaskTag(): Short

Attributes

Inherited from:
ForkJoinTask
final def getRawResult(): V

Attributes

Inherited from:
RecursiveTask
final def invoke(): V

Attributes

Inherited from:
ForkJoinTask
final def isCancelled(): Boolean

Attributes

Inherited from:
ForkJoinTask
final def isCompletedAbnormally(): Boolean

Attributes

Inherited from:
ForkJoinTask
final def isCompletedNormally(): Boolean

Attributes

Inherited from:
ForkJoinTask
final def isDone(): Boolean

Attributes

Inherited from:
ForkJoinTask
final def join(): V

Attributes

Inherited from:
ForkJoinTask
final def quietlyComplete(): Unit

Attributes

Inherited from:
ForkJoinTask
final def quietlyInvoke(): Unit

Attributes

Inherited from:
ForkJoinTask
final def quietlyJoin(): Unit

Attributes

Inherited from:
ForkJoinTask
def reinitialize(): Unit

Attributes

Inherited from:
ForkJoinTask
final def setForkJoinTaskTag(x$0: Short): Short

Attributes

Inherited from:
ForkJoinTask
def tryUnfork(): Boolean

Attributes

Inherited from:
ForkJoinTask

Concrete fields

Stores type information for local structures that live within this compilation unit, e.g. local variables.

Stores type information for local structures that live within this compilation unit, e.g. local variables.

Attributes