class NodeBuilder
Declaration
class NodeBuilder { /* full declaration omitted */ };
Description
This is the simplest builder which generates nodes in the ExplodedGraph. The main benefit of the builder is that it automatically tracks the frontier nodes (or destination set). This is the set of nodes which should be propagated to the next step / builder. They are the nodes which have been added to the builder (either as the input node set or as the newly constructed nodes) but did not have any outgoing transitions added.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:241
Member Variables
- protected const clang::ento::NodeBuilderContext& C
- protected bool Finalized
- Specifies if the builder results have been finalized. For example, if it is set to false, autotransitions are yet to be generated.
- protected bool HasGeneratedNodes = false
- protected clang::ento::ExplodedNodeSet& Frontier
- The frontier set - a set of nodes which need to be propagated after the builder dies.
Method Overview
- public NodeBuilder(clang::ento::ExplodedNode * SrcNode, clang::ento::ExplodedNodeSet & DstSet, const clang::ento::NodeBuilderContext & Ctx, bool F = true)
- public NodeBuilder(const clang::ento::ExplodedNodeSet & SrcSet, clang::ento::ExplodedNodeSet & DstSet, const clang::ento::NodeBuilderContext & Ctx, bool F = true)
- public void addNodes(clang::ento::ExplodedNode * N)
- public void addNodes(const clang::ento::ExplodedNodeSet & S)
- private virtual void anchor()
- public clang::ento::NodeBuilder::iterator begin()
- protected virtual bool checkResults()
- public clang::ento::NodeBuilder::iterator end()
- protected virtual void finalizeResults()
- public clang::ento::ExplodedNode * generateNode(const clang::ProgramPoint & PP, clang::ento::ProgramStateRef State, clang::ento::ExplodedNode * Pred)
- protected clang::ento::ExplodedNode * generateNodeImpl(const clang::ProgramPoint & PP, clang::ento::ProgramStateRef State, clang::ento::ExplodedNode * Pred, bool MarkAsSink = false)
- public clang::ento::ExplodedNode * generateSink(const clang::ProgramPoint & PP, clang::ento::ProgramStateRef State, clang::ento::ExplodedNode * Pred)
- public const clang::ento::NodeBuilderContext & getContext()
- public const clang::ento::ExplodedNodeSet & getResults()
- public bool hasGeneratedNodes()
- protected bool hasNoSinksInFrontier()
- public void takeNodes(const clang::ento::ExplodedNodeSet & S)
- public void takeNodes(clang::ento::ExplodedNode * N)
- public virtual ~NodeBuilder()
Methods
¶NodeBuilder(
clang::ento::ExplodedNode* SrcNode,
clang::ento::ExplodedNodeSet& DstSet,
const clang::ento::NodeBuilderContext& Ctx,
bool F = true)
NodeBuilder(
clang::ento::ExplodedNode* SrcNode,
clang::ento::ExplodedNodeSet& DstSet,
const clang::ento::NodeBuilderContext& Ctx,
bool F = true)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:278
Parameters
- clang::ento::ExplodedNode* SrcNode
- clang::ento::ExplodedNodeSet& DstSet
- const clang::ento::NodeBuilderContext& Ctx
- bool F = true
¶NodeBuilder(
const clang::ento::ExplodedNodeSet& SrcSet,
clang::ento::ExplodedNodeSet& DstSet,
const clang::ento::NodeBuilderContext& Ctx,
bool F = true)
NodeBuilder(
const clang::ento::ExplodedNodeSet& SrcSet,
clang::ento::ExplodedNodeSet& DstSet,
const clang::ento::NodeBuilderContext& Ctx,
bool F = true)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:284
Parameters
- const clang::ento::ExplodedNodeSet& SrcSet
- clang::ento::ExplodedNodeSet& DstSet
- const clang::ento::NodeBuilderContext& Ctx
- bool F = true
¶void addNodes(clang::ento::ExplodedNode* N)
void addNodes(clang::ento::ExplodedNode* N)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:343
Parameters
¶void addNodes(
const clang::ento::ExplodedNodeSet& S)
void addNodes(
const clang::ento::ExplodedNodeSet& S)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:342
Parameters
- const clang::ento::ExplodedNodeSet& S
¶virtual void anchor()
virtual void anchor()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:242
¶clang::ento::NodeBuilder::iterator begin()
clang::ento::NodeBuilder::iterator begin()
Description
Iterators through the results frontier.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:322
¶virtual bool checkResults()
virtual bool checkResults()
Description
Checks if the results are ready.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:258
¶clang::ento::NodeBuilder::iterator end()
clang::ento::NodeBuilder::iterator end()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:328
¶virtual void finalizeResults()
virtual void finalizeResults()
Description
Allow subclasses to finalize results before result_begin() is executed.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:270
¶clang::ento::ExplodedNode* generateNode(
const clang::ProgramPoint& PP,
clang::ento::ProgramStateRef State,
clang::ento::ExplodedNode* Pred)
clang::ento::ExplodedNode* generateNode(
const clang::ProgramPoint& PP,
clang::ento::ProgramStateRef State,
clang::ento::ExplodedNode* Pred)
Description
Generates a node in the ExplodedGraph.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:294
Parameters
- const clang::ProgramPoint& PP
- clang::ento::ProgramStateRef State
- clang::ento::ExplodedNode* Pred
¶clang::ento::ExplodedNode* generateNodeImpl(
const clang::ProgramPoint& PP,
clang::ento::ProgramStateRef State,
clang::ento::ExplodedNode* Pred,
bool MarkAsSink = false)
clang::ento::ExplodedNode* generateNodeImpl(
const clang::ProgramPoint& PP,
clang::ento::ProgramStateRef State,
clang::ento::ExplodedNode* Pred,
bool MarkAsSink = false)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:272
Parameters
- const clang::ProgramPoint& PP
- clang::ento::ProgramStateRef State
- clang::ento::ExplodedNode* Pred
- bool MarkAsSink = false
¶clang::ento::ExplodedNode* generateSink(
const clang::ProgramPoint& PP,
clang::ento::ProgramStateRef State,
clang::ento::ExplodedNode* Pred)
clang::ento::ExplodedNode* generateSink(
const clang::ProgramPoint& PP,
clang::ento::ProgramStateRef State,
clang::ento::ExplodedNode* Pred)
Description
Generates a sink in the ExplodedGraph. When a node is marked as sink, the exploration from the node is stopped - the node becomes the last node on the path and certain kinds of bugs are suppressed.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:307
Parameters
- const clang::ProgramPoint& PP
- clang::ento::ProgramStateRef State
- clang::ento::ExplodedNode* Pred
¶const clang::ento::NodeBuilderContext&
getContext()
const clang::ento::NodeBuilderContext&
getContext()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:333
¶const clang::ento::ExplodedNodeSet& getResults()
const clang::ento::ExplodedNodeSet& getResults()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:313
¶bool hasGeneratedNodes()
bool hasGeneratedNodes()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:334
¶bool hasNoSinksInFrontier()
bool hasNoSinksInFrontier()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:262
¶void takeNodes(
const clang::ento::ExplodedNodeSet& S)
void takeNodes(
const clang::ento::ExplodedNodeSet& S)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:336
Parameters
- const clang::ento::ExplodedNodeSet& S
¶void takeNodes(clang::ento::ExplodedNode* N)
void takeNodes(clang::ento::ExplodedNode* N)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:341
Parameters
¶virtual ~NodeBuilder()
virtual ~NodeBuilder()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h:291