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

When a region containing undefined value or '0' value is passed as an argument in a call, marks the call as interesting. More...

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

Inheritance diagram for clang::ento::UndefOrNullArgVisitor:

Public Member Functions
UndefOrNullArgVisitor (const MemRegion *InR)
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.
- 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

Detailed Description

When a region containing undefined value or '0' value is passed as an argument in a call, marks the call as interesting.

As a result, BugReporter will not prune the path through the function even if the region's contents are not modified/accessed by the call.

Definition at line 553 of file BugReporterVisitors.h.

Constructor & Destructor Documentation

clang::ento::UndefOrNullArgVisitor::UndefOrNullArgVisitor ( const MemRegion * InR) inline

Member Function Documentation

Profile()

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

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 3312 of file BugReporterVisitors.cpp.

References clang::Call, clang::ProgramPoint::getAs(), clang::ento::CallEventManager::getCaller(), clang::ento::ProgramStateManager::getCallEventManager(), clang::ento::ExplodedNode::getLocation(), clang::Type::getPointeeType(), clang::ento::ExplodedNode::getState(), clang::ento::BugReporterContext::getStateManager(), clang::Type::isAnyPointerType(), clang::QualType::isConstQualified(), clang::Type::isReferenceType(), clang::ento::MemRegion::isSubRegionOf(), clang::ento::SVal::isUndef(), clang::ento::SVal::isZeroConstant(), clang::ento::PathSensitiveBugReport::markInteresting(), clang::ento::MemRegion::StripCasts(), and clang::T.


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