clang: clang::ento::ConditionBRVisitor Class Reference (original) (raw)

Visitor that tries to report interesting diagnostics from conditions. More...

#include "[clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h](BugReporterVisitors%5F8h%5Fsource.html)"

Public Member Functions
void Profile (llvm::FoldingSetNodeID &ID) const override
PathDiagnosticPieceRef VisitNode (const ExplodedNode *N, BugReporterContext &BRC, PathSensitiveBugReport &BR) override
Return a diagnostic piece which should be associated with the given node.
PathDiagnosticPieceRef VisitNodeImpl (const ExplodedNode *N, BugReporterContext &BRC, PathSensitiveBugReport &BR)
PathDiagnosticPieceRef VisitTerminator (const Stmt *Term, const ExplodedNode *N, const CFGBlock *SrcBlk, const CFGBlock *DstBlk, PathSensitiveBugReport &R, BugReporterContext &BRC)
PathDiagnosticPieceRef VisitTrueTest (const Expr *Cond, BugReporterContext &BRC, PathSensitiveBugReport &R, const ExplodedNode *N, bool TookTrue)
PathDiagnosticPieceRef VisitTrueTest (const Expr *Cond, const DeclRefExpr *DR, BugReporterContext &BRC, PathSensitiveBugReport &R, const ExplodedNode *N, bool TookTrue, bool IsAssuming)
PathDiagnosticPieceRef VisitTrueTest (const Expr *Cond, const BinaryOperator *BExpr, BugReporterContext &BRC, PathSensitiveBugReport &R, const ExplodedNode *N, bool TookTrue, bool IsAssuming)
PathDiagnosticPieceRef VisitTrueTest (const Expr *Cond, const MemberExpr *ME, BugReporterContext &BRC, PathSensitiveBugReport &R, const ExplodedNode *N, bool TookTrue, bool IsAssuming)
PathDiagnosticPieceRef VisitConditionVariable (StringRef LhsString, const Expr *CondVarExpr, BugReporterContext &BRC, PathSensitiveBugReport &R, const ExplodedNode *N, bool TookTrue)
bool printValue (const Expr *CondVarExpr, raw_ostream &Out, const ExplodedNode *N, bool TookTrue, bool IsAssuming)
Tries to print the value of the given expression.
bool patternMatch (const Expr *Ex, const Expr *ParentEx, raw_ostream &Out, BugReporterContext &BRC, PathSensitiveBugReport &R, const ExplodedNode *N, std::optional< bool > &prunable, bool IsSameFieldName)
- Public Member Functions inherited from clang::ento::BugReporterVisitor
BugReporterVisitor ()=default
BugReporterVisitor (const BugReporterVisitor &)=default
BugReporterVisitor (BugReporterVisitor &&)
BugReporterVisitor & operator= (const BugReporterVisitor &)=delete
BugReporterVisitor & operator= (BugReporterVisitor &&)=delete
virtual ~BugReporterVisitor ()
virtual PathDiagnosticPieceRef VisitNode (const ExplodedNode *Succ, BugReporterContext &BRC, PathSensitiveBugReport &BR)=0
Return a diagnostic piece which should be associated with the given node.
virtual void finalizeVisitor (BugReporterContext &BRC, const ExplodedNode *EndPathNode, PathSensitiveBugReport &BR)
Last function called on the visitor, no further calls to VisitNode would follow.
virtual PathDiagnosticPieceRef getEndPath (BugReporterContext &BRC, const ExplodedNode *N, PathSensitiveBugReport &BR)
Provide custom definition for the final diagnostic piece on the path - the piece, which is displayed before the path is expanded.
virtual void Profile (llvm::FoldingSetNodeID &ID) const =0
Static Public Member Functions
static const char * getTag ()
Return the tag associated with this visitor.
static bool isPieceMessageGeneric (const PathDiagnosticPiece *Piece)
- Static Public Member Functions inherited from clang::ento::BugReporterVisitor
static PathDiagnosticPieceRef getDefaultEndPath (const BugReporterContext &BRC, const ExplodedNode *N, const PathSensitiveBugReport &BR)
Generates the default final diagnostic piece.

Visitor that tries to report interesting diagnostics from conditions.

Definition at line 447 of file BugReporterVisitors.h.

getTag()

const char * ConditionBRVisitor::getTag ( ) static

isPieceMessageGeneric()

patternMatch()

Definition at line 2868 of file BugReporterVisitors.cpp.

References clang::Lexer::getAsCharRange(), clang::ento::SVal::getAsRegion(), clang::ento::BugReporterContext::getASTContext(), clang::Stmt::getBeginLoc(), clang::Stmt::getEndLoc(), clang::ASTContext::getLangOpts(), clang::ento::ExplodedNode::getLocationContext(), clang::ento::ProgramState::getLValue(), clang::ento::BugReporterContext::getSourceManager(), clang::Stmt::getSourceRange(), clang::Lexer::getSourceText(), clang::ento::ExplodedNode::getState(), clang::ento::ProgramState::getSVal(), clang::CharSourceRange::getTokenRange(), clang::Expr::getType(), clang::Expr::IgnoreParenCasts(), clang::isa(), clang::Lexer::isAtEndOfMacroExpansion(), clang::Lexer::isAtStartOfMacroExpansion(), clang::ento::PathSensitiveBugReport::isInteresting(), clang::SourceLocation::isMacroID(), clang::Type::isObjCObjectPointerType(), clang::Type::isPointerType(), SM, and V.

printValue()

Profile()

void clang::ento::ConditionBRVisitor::Profile ( llvm::FoldingSetNodeID & ID) const inlineoverridevirtual

VisitConditionVariable()

VisitNode()

Return a diagnostic piece which should be associated with the given node.

Note that this function does not get run on the very last node of the report, as the PathDiagnosticPiece associated with the last node should be unique. Use getEndPath to customize the note associated with the report end instead.

The last parameter can be used to register a new visitor with the given BugReport while processing a node.

Implements clang::ento::BugReporterVisitor.

Definition at line 2681 of file BugReporterVisitors.cpp.

VisitNodeImpl()

VisitTerminator()

VisitTrueTest() [1/4]

VisitTrueTest() [2/4]

Definition at line 2953 of file BugReporterVisitors.cpp.

References clang::BinaryOperator::getLHS(), clang::ento::ExplodedNode::getLocationContext(), clang::BinaryOperator::getOpcode(), clang::BinaryOperator::getOpcodeStr(), clang::BinaryOperator::getRHS(), clang::ento::BugReporterContext::getSourceManager(), clang::Expr::IgnoreParenCasts(), clang::BinaryOperator::isAssignmentOp(), clang::BinaryOperator::isComparisonOp(), isVarAnInterestingCondition(), SM, and WillBeUsedForACondition.

VisitTrueTest() [3/4]

VisitTrueTest() [4/4]


The documentation for this class was generated from the following files: