| Class | Description |
|---|---|
| ActualControlFlowGraph |
Supposed to become the new implementation of a control flow graph inside
EvoSuite
The "actual" CFG does not contain single cfg.BytecodeInstructions as nodes,
but contains cfg.BasicBlocks - look at that class for more information
Simply put this is a minimized version of the complete/raw CFG the
cfg.BytecodeAnalyzer and cfg.CFGGenerator produce - which holds a node for
every BytecodeInstruction
Out of the above described raw CFG the following "pin-points" are extracted:
1) the entryNode (first instruction in the method)
2) all exitNodes (outDegree 0)
3.1) all branches (outDegree>1) 3.2) in a subsequent step all targets of all
branches
4.1) all joins (inDegree>1) 4.2) in a subsequent step all sources of all
joins
All those "pin-points" are put into a big set (some of the above categories
may overlap) and for all those single BytecodeInstrucions their corresponding
BasicBlock is computed and added to this CFGs vertexSet.
|
| ASMWrapper |
Wrapper class for the underlying byteCode instruction library ASM
Gives access to a lot of methods that interpret the raw information in
AbstractInsnNode to usable chunks of information, inside EvoSuite
This class is supposed to hide the ASM library from the rest of EvoSuite as
much as possible
After initialization, all information about byteCode instructions should be
accessible via the BytecodeInstruction-, DefUse- and BranchPool.
|
| BasicBlock |
This class is used to represent basic blocks in the control flow graph.
|
| BytecodeAnalyzer |
This class analyzes the byteCode from a method in the CUT and generates it's
CFG using a cfg.CFGGenerator
This is done using the ASM library, extending from it's asm.Analyzer and
redirecting the calls to newControlFlowEdge() to an instance of
cfg.CFGGenerator which in turn builds up a graph representation of the CFG,
which later is used to build a "smaller" CFG containing not
BytecodeInstructions but BasicBlocks of BytecodeInstructions which are always
executed successively
|
| BytecodeInstruction |
Internal representation of a BytecodeInstruction
Extends ASMWrapper which serves as an interface to the ASM library.
|
| BytecodeInstructionFactory | |
| BytecodeInstructionIdComparator |
Orders CFGVertices according to their id
This is mainly used to put BytecodeInstructions into a PriorityQueue in
ControlFlowGraph.getMaximalInitialDistance()
|
| BytecodeInstructionPool |
BytecodeInstructionPool class.
|
| CFGClassAdapter |
The CFGClassAdapter calls a CFG generator for relevant methods
|
| CFGFrame | |
| CFGGenerator |
This classed is used to create the RawControlFlowGraph which can then be used
to create the ActualControlFlowGraph
When analyzing a CUT the BytecodeAnalyzer creates an instance of this class
for each method contained in it
This class's methods get called in the following order:
- upon constructing, the method at hand is registered via
registerMethodNode() which fills the BytecodeInstructionPool with all
instructions inside that method
- then registerControlFlowEdge() is called by the BytecodeAnalyzer for each
possible transition from one byteCode instruction to another within the
current method.
|
| CFGMethodAdapter |
Create a minimized control flow graph for the method and store it.
|
| ControlDependency | |
| ControlFlowEdge | |
| ControlFlowGraph<V> |
Abstract base class for both forms of CFGs inside EvoSuite
One implementation of this is cfg.RawControlFlowGraph, which is also known as
the complete CFG The other implementation of this is
cfg.ActualControlFlowGraph which is also known as the minimal CFG Look at the
respective classes for more detailed information
The CFGs can be accessed via the GraphPool which holds for each CUT and each
of their methods a complete and a minimal CFG
CFGs are created by the CFGGenerator during the analysis of the CUTs'
byteCode performed by the BytecodeAnalyzer
|
| EntryBlock | |
| ExitBlock | |
| RawControlFlowGraph |
Represents the complete CFG of a method
Essentially this is a graph containing all BytecodeInstrucions of a method as
nodes.
|
Copyright © 2010–2017 EvoSuite. All rights reserved.