clang
8.0.0
|
#include "clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclBase.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
#include "clang/AST/Stmt.h"
#include "clang/AST/Type.h"
#include "clang/ASTMatchers/ASTMatchFinder.h"
#include "clang/Analysis/AnalysisDeclContext.h"
#include "clang/Analysis/CFG.h"
#include "clang/Analysis/CFGStmtMap.h"
#include "clang/Analysis/ProgramPoint.h"
#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Lex/Lexer.h"
#include "clang/StaticAnalyzer/Core/AnalyzerOptions.h"
#include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h"
#include "clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/SMTConv.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/None.h"
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <deque>
#include <memory>
#include <string>
#include <utility>
Go to the source code of this file.
Functions | |
static const Expr * | peelOffPointerArithmetic (const BinaryOperator *B) |
static StringRef | getMacroName (SourceLocation Loc, BugReporterContext &BRC) |
static bool | isFunctionMacroExpansion (SourceLocation Loc, const SourceManager &SM) |
static bool | wasRegionOfInterestModifiedAt (const SubRegion *RegionOfInterest, const ExplodedNode *N, SVal ValueAfter) |
static bool | isInitializationOfVar (const ExplodedNode *N, const VarRegion *VR) |
Returns true if N represents the DeclStmt declaring and initializing VR . More... | |
static void | showBRDiagnostics (const char *action, llvm::raw_svector_ostream &os, const MemRegion *R, SVal V, const DeclStmt *DS) |
Show diagnostics for initializing or declaring a region R with a bad value. More... | |
static void | showBRParamDiagnostics (llvm::raw_svector_ostream &os, const VarRegion *VR, SVal V) |
Display diagnostics for passing bad region as a parameter. More... | |
static void | showBRDefaultDiagnostics (llvm::raw_svector_ostream &os, const MemRegion *R, SVal V) |
Show default diagnostics for storing bad region. More... | |
static const MemRegion * | getLocationRegionIfReference (const Expr *E, const ExplodedNode *N) |
|
static |
Definition at line 1472 of file BugReporterVisitors.cpp.
References clang::ProgramPoint::getAs(), clang::CFGBlock::getTerminator(), clang::Expr::IgnoreParenCasts(), peelOffPointerArithmetic(), and clang::CFGBlock::succ_begin().
|
static |
Loc
. Definition at line 189 of file BugReporterVisitors.cpp.
References clang::Lexer::getImmediateMacroName().
|
static |
Definition at line 199 of file BugReporterVisitors.cpp.
References clang::CharSourceRange::getBegin(), clang::SourceManager::getDecomposedLoc(), clang::SrcMgr::SLocEntry::getExpansion(), clang::SourceManager::getImmediateExpansionRange(), clang::SourceManager::getSLocEntry(), clang::SrcMgr::ExpansionInfo::isFunctionMacroExpansion(), clang::SourceManager::isMacroArgExpansion(), and clang::SourceLocation::isMacroID().
|
static |
Returns true if N
represents the DeclStmt declaring and initializing VR
.
Definition at line 1008 of file BugReporterVisitors.cpp.
References clang::DeclStmt::getSingleDecl(), clang::LocationContext::getStackFrame(), and P.
Referenced by showBRDefaultDiagnostics().
|
static |
Definition at line 74 of file BugReporterVisitors.cpp.
References clang::BinaryOperator::getLHS(), clang::BinaryOperator::getRHS(), clang::Expr::getType(), clang::BinaryOperator::isAdditiveOp(), and clang::Type::isPointerType().
Referenced by getLocationRegionIfReference().
|
static |
Show default diagnostics for storing bad region.
Definition at line 1108 of file BugReporterVisitors.cpp.
References clang::CallEventManager::getCaller(), clang::Expr::IgnoreParenCasts(), isInitializationOfVar(), and P.
|
static |
Show diagnostics for initializing or declaring a region R
with a bad value.
Definition at line 1036 of file BugReporterVisitors.cpp.
References clang::DeclStmt::getSingleDecl().
|
static |
Display diagnostics for passing bad region as a parameter.
Definition at line 1078 of file BugReporterVisitors.cpp.
|
static |
RegionOfInterest
was modified at N
, where ReturnState
is a state associated with the return from the current frame. Definition at line 214 of file BugReporterVisitors.cpp.
References clang::ast_matchers::binaryOperator, clang::RecordDecl::fields(), clang::Type::getAsRecordDecl(), clang::NamedDecl::getNameAsString(), clang::Type::getPointeeType(), clang::LocationContext::getStackFrame(), clang::ValueDecl::getType(), clang::Decl::hasBody(), clang::ast_matchers::hasDeclaration(), clang::ast_matchers::hasDescendant, clang::SourceManager::isInSystemHeader(), clang::QualType::isNull(), isPointerToConst(), clang::Type::isReferenceType(), clang::Type::isVoidType(), clang::ast_matchers::objcIvarRefExpr, P, Parent, SM, State, and clang::ast_matchers::stmt.