|
clang 24.0.0git
|
This is the simplest builder which generates nodes in the ExplodedGraph. More...
#include "clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h"
Protected Attributes | |
| const NodeBuilderContext & | C |
| ExplodedNodeSet & | Frontier |
| The frontier set - a set of nodes which need to be propagated after the builder dies. | |
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.
TODO: This "main benefit" is often useless, in fact the only significant use is within CheckerManager::ExpandGraphWithCheckers. There this logic ensures that if a checker performs multiple transitions on the same path, then only the last of them is "built upon" by other checkers or the engine.
However, there are also many short-lived temporary NodeBuilder instances where the generateNode is called in a very predictable manner (once, or once for each source node) and the frontier management is overkill. These locations should be gradually simplified by using the method CoreEngine::makeNode() instead of the temporary NodeBuilders.
Definition at line 265 of file CoreEngine.h.
|
inline |
Definition at line 274 of file CoreEngine.h.
Referenced by NodeBuilder(), and NodeBuilder().
|
inline |
Definition at line 277 of file CoreEngine.h.
References Frontier, and NodeBuilder().
|
inline |
Definition at line 283 of file CoreEngine.h.
References Frontier, and NodeBuilder().
|
inline |
Definition at line 332 of file CoreEngine.h.
References Frontier.
|
inline |
Definition at line 333 of file CoreEngine.h.
References Frontier.
| ExplodedNode * NodeBuilder::generateNode | ( | const ProgramPoint & | PP, |
| ProgramStateRef | State, | ||
| ExplodedNode * | Pred, | ||
| bool | MarkAsSink = false ) |
Generates a node in the ExplodedGraph.
Definition at line 674 of file CoreEngine.cpp.
Referenced by generateNode(), and generateSink().
|
inline |
Definition at line 304 of file CoreEngine.h.
References generateNode(), clang::ProgramPoint::getProgramPoint(), clang::ento::ExplodedNode::getStackFrame(), and clang::ProgramPoint::PostStmtKind.
|
inline |
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.
Definition at line 298 of file CoreEngine.h.
References generateNode().
Referenced by generateSink().
|
inline |
Definition at line 314 of file CoreEngine.h.
References generateSink(), clang::ProgramPoint::getProgramPoint(), clang::ento::ExplodedNode::getStackFrame(), and clang::ProgramPoint::PostStmtKind.
|
inline |
Definition at line 324 of file CoreEngine.h.
References Frontier.
|
inline |
Definition at line 326 of file CoreEngine.h.
References Frontier.
|
inline |
Definition at line 331 of file CoreEngine.h.
References Frontier.
|
protected |
Definition at line 267 of file CoreEngine.h.
Referenced by generateNode(), and NodeBuilder().
|
protected |
The frontier set - a set of nodes which need to be propagated after the builder dies.
Definition at line 271 of file CoreEngine.h.
Referenced by addNodes(), addNodes(), generateNode(), getResults(), NodeBuilder(), NodeBuilder(), NodeBuilder(), takeNodes(), and takeNodes().