14#ifndef LLVM_CLANG_STATICANALYZER_CORE_BUGREPORTER_Z3CROSSCHECKVISITOR_H
15#define LLVM_CLANG_STATICANALYZER_CORE_BUGREPORTER_Z3CROSSCHECKVISITOR_H
27 std::optional<bool>
IsSAT = std::nullopt;
34 void Profile(llvm::FoldingSetNodeID &
ID)
const override;
45 bool OverwriteConstraintsOnExistingSyms);
87 unsigned AccumulatedZ3QueryTimeInEqClass = 0;
Stores options for the analyzer from the command line.
BugReporterVisitors are used to add custom diagnostics along a path.
The oracle will decide if a report should be accepted or rejected based on the results of the Z3 solv...
Z3CrosscheckOracle(const AnalyzerOptions &Opts)
Z3Decision interpretQueryResult(const Z3CrosscheckVisitor::Z3Result &Meta)
Updates the internal state with the new Z3Result and makes a decision how to proceed:
The bug visitor will walk all the nodes in a path and collect all the constraints.
PathDiagnosticPieceRef VisitNode(const ExplodedNode *N, BugReporterContext &BRC, PathSensitiveBugReport &BR) override
Return a diagnostic piece which should be associated with the given node.
void Profile(llvm::FoldingSetNodeID &ID) const override
void finalizeVisitor(BugReporterContext &BRC, const ExplodedNode *EndPathNode, PathSensitiveBugReport &BR) override
Last function called on the visitor, no further calls to VisitNode would follow.
llvm::ImmutableMap< SymbolRef, RangeSet > ConstraintMap
std::shared_ptr< PathDiagnosticPiece > PathDiagnosticPieceRef
unsigned Z3QueryTimeMilliseconds
std::optional< bool > IsSAT