A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/classclang_1_1ento_1_1CheckerContext.html below:

clang: clang::ento::CheckerContext Class Reference

#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"

  CheckerContext (NodeBuilder &builder, ExprEngine &eng, ExplodedNode *pred, const ProgramPoint &loc, bool wasInlined=false)   AnalysisManagergetAnalysisManager ()   ConstraintManagergetConstraintManager ()   StoreManagergetStoreManager ()   ExplodedNodegetPredecessor ()   Returns the previous node in the exploded graph, which includes the state of the program before the checker ran.
  const ProgramPoint  getLocation () const   const ProgramStateRefgetState () const   bool  isDifferent ()   Check if the checker changed the state of the execution; ex: added a new transition or a bug report.
  unsigned  blockCount () const   Returns the number of times the current block has been visited along the analyzed path.
  ASTContextgetASTContext ()   const ASTContextgetASTContext () const   const LangOptionsgetLangOpts () const   const LocationContextgetLocationContext () const   const StackFrameContextgetStackFrame () const   bool  inTopFrame () const   Return true if the current LocationContext has no caller context.
  BugReportergetBugReporter ()   const SourceManagergetSourceManager ()   PreprocessorgetPreprocessor ()   SValBuildergetSValBuilder ()   SymbolManagergetSymbolManager ()   ProgramStateManagergetStateManager ()   AnalysisDeclContextgetCurrentAnalysisDeclContext () const   unsigned  getBlockID () const   Get the blockID.
  SVal  getSVal (const Stmt *S) const   Get the value of arbitrary expressions at this point in the path.
  bool  isGreaterOrEqual (const Expr *E, unsigned long long Val)   Returns true if the value of E is greater than or equal to Val under unsigned comparison.
  bool  isNegative (const Expr *E)   Returns true if the value of E is negative.
  ExplodedNodeaddTransition (ProgramStateRef State=nullptr, const ProgramPointTag *Tag=nullptr)   Generates a new transition in the program state graph (ExplodedGraph).
  ExplodedNodeaddTransition (ProgramStateRef State, ExplodedNode *Pred, const ProgramPointTag *Tag=nullptr)   Generates a new transition with the given predecessor.
  ExplodedNodegenerateSink (ProgramStateRef State, ExplodedNode *Pred, const ProgramPointTag *Tag=nullptr)   Generate a sink node.
  void  addSink (ProgramStateRef State=nullptr, const ProgramPointTag *Tag=nullptr)   Add a sink node to the current path of execution, halting analysis.
  ExplodedNodegenerateErrorNode (ProgramStateRef State=nullptr, const ProgramPointTag *Tag=nullptr)   Generate a transition to a node that will be used to report an error.
  ExplodedNodegenerateErrorNode (ProgramStateRef State, ExplodedNode *Pred, const ProgramPointTag *Tag=nullptr)   Generate a transition to a node that will be used to report an error.
  ExplodedNodegenerateNonFatalErrorNode (ProgramStateRef State=nullptr, const ProgramPointTag *Tag=nullptr)   Generate a transition to a node that will be used to report an error.
  ExplodedNodegenerateNonFatalErrorNode (ProgramStateRef State, ExplodedNode *Pred, const ProgramPointTag *Tag=nullptr)   Generate a transition to a node that will be used to report an error.
  void  emitReport (std::unique_ptr< BugReport > R)   Emit the diagnostics report.
  LLVM_ATTRIBUTE_RETURNS_NONNULL const NoteTaggetNoteTag (NoteTag::Callback &&Cb, bool IsPrunable=false)   Produce a program point tag that displays an additional path note to the user.
  const NoteTaggetNoteTag (std::function< std::string(PathSensitiveBugReport &)> &&Cb, bool IsPrunable=false)   A shorthand version of getNoteTag that doesn't require you to accept the 'BugReporterContext' argument when you don't need it.
  const NoteTaggetNoteTag (std::function< std::string()> &&Cb, bool IsPrunable=false)   A shorthand version of getNoteTag that doesn't require you to accept the arguments when you don't need it.
  const NoteTaggetNoteTag (StringRef Note, bool IsPrunable=false)   A shorthand version of getNoteTag that accepts a plain note.
  const NoteTaggetNoteTag (std::function< void(PathSensitiveBugReport &BR, llvm::raw_ostream &OS)> &&Cb, bool IsPrunable=false)   A shorthand version of getNoteTag that accepts a lambda with stream for note.
  StringRef  getDeclDescription (const Decl *D)   Returns the word that should be used to refer to the declaration in the report.
  const FunctionDeclgetCalleeDecl (const CallExpr *CE) const   Get the declaration of the called function (path-sensitive).
  StringRef  getCalleeName (const FunctionDecl *FunDecl) const   Get the name of the called function (path-sensitive).
  const IdentifierInfogetCalleeIdentifier (const CallExpr *CE) const   Get the identifier of the called function (path-sensitive).
  StringRef  getCalleeName (const CallExpr *CE) const   Get the name of the called function (path-sensitive).
  StringRef  getMacroNameOrSpelling (SourceLocation &Loc)   Depending on wither the location corresponds to a macro, return either the macro name or the token spelling.
  static const MemRegiongetLocationRegionIfPostStore (const ExplodedNode *N)   If the given node corresponds to a PostStore program point, retrieve the location region as it was uttered in the code.
  static bool  isCLibraryFunction (const FunctionDecl *FD, StringRef Name=StringRef())   Returns true if the given function is an externally-visible function in the top-level namespace, such as malloc.
  static bool  isHardenedVariantOf (const FunctionDecl *FD, StringRef Name)   In builds that use source hardening (-D_FORTIFY_SOURCE), many standard functions are implemented as macros that expand to calls of hardened functions that take additional arguments compared to the "usual" variant and perform additional input validation.
  const bool  wasInlined   If we are post visiting a call, this flag will be set if the call was inlined.
 

Definition at line 24 of file CheckerContext.h.

◆ CheckerContext() ◆ addSink() ◆ addTransition() [1/2]

Generates a new transition with the given predecessor.

Allows checkers to generate a chain of nodes.

Parameters
State The state of the generated node. Pred The transition will be generated from the specified Pred node to the newly generated node. Tag The tag to uniquely identify the creation site.

Definition at line 182 of file CheckerContext.h.

◆ addTransition() [2/2]

Generates a new transition in the program state graph (ExplodedGraph).

Uses the default CheckerContext predecessor node.

Parameters
State The state of the generated node. If not specified, the state will not be changed, but the new node will have the checker's tag. Tag The tag is used to uniquely identify the creation site. If no tag is specified, a default tag, unique to the given checker, will be used. Tags are used to prevent states generated at different sites from caching out.

Definition at line 170 of file CheckerContext.h.

References getState().

Referenced by addSink(), and generateNonFatalErrorNode().

◆ blockCount() unsigned clang::ento::CheckerContext::blockCount ( ) const inline ◆ emitReport() void clang::ento::CheckerContext::emitReport ( std::unique_ptr< BugReportR ) inline ◆ generateErrorNode() [1/2]

Generate a transition to a node that will be used to report an error.

This node will be a sink. That is, it will stop exploration of the given path.

Parameters
State The state of the generated node. Pred The transition will be generated from the specified Pred node to the newly generated node. Tag The tag to uniquely identify the creation site. If null, the default tag for the checker will be used.

Definition at line 225 of file CheckerContext.h.

References generateSink(), and clang::ProgramPoint::getTag().

◆ generateErrorNode() [2/2]

Generate a transition to a node that will be used to report an error.

This node will be a sink. That is, it will stop exploration of the given path.

Parameters
State The state of the generated node. Tag The tag to uniquely identify the creation site. If null, the default tag for the checker will be used.

Definition at line 210 of file CheckerContext.h.

References generateSink(), and clang::ProgramPoint::getTag().

◆ generateNonFatalErrorNode() [1/2]

Generate a transition to a node that will be used to report an error.

This node will not be a sink. That is, exploration will continue along this path.

Parameters
State The state of the generated node. Pred The transition will be generated from the specified Pred node to the newly generated node. Tag The tag to uniquely identify the creation site. If null, the default tag for the checker will be used.

Definition at line 255 of file CheckerContext.h.

References addTransition(), and clang::ProgramPoint::getTag().

◆ generateNonFatalErrorNode() [2/2]

Generate a transition to a node that will be used to report an error.

This node will not be a sink. That is, exploration will continue along this path.

Parameters
State The state of the generated node. Tag The tag to uniquely identify the creation site. If null, the default tag for the checker will be used.

Definition at line 240 of file CheckerContext.h.

References addTransition(), and clang::ProgramPoint::getTag().

◆ generateSink() ◆ getAnalysisManager() ◆ getASTContext() [1/2] ASTContext & clang::ento::CheckerContext::getASTContext ( ) inline ◆ getASTContext() [2/2] const ASTContext & clang::ento::CheckerContext::getASTContext ( ) const inline ◆ getBlockID() unsigned clang::ento::CheckerContext::getBlockID ( ) const inline ◆ getBugReporter() BugReporter & clang::ento::CheckerContext::getBugReporter ( ) inline ◆ getCalleeDecl() ◆ getCalleeIdentifier() ◆ getCalleeName() [1/2] StringRef clang::ento::CheckerContext::getCalleeName ( const CallExprCE ) const inline ◆ getCalleeName() [2/2] StringRef CheckerContext::getCalleeName ( const FunctionDeclFunDecl ) const ◆ getConstraintManager() ◆ getCurrentAnalysisDeclContext() ◆ getDeclDescription() StringRef CheckerContext::getDeclDescription ( const DeclD )

Returns the word that should be used to refer to the declaration in the report.

Definition at line 41 of file CheckerContext.cpp.

References D.

◆ getLangOpts() const LangOptions & clang::ento::CheckerContext::getLangOpts ( ) const inline ◆ getLocation() ◆ getLocationContext() const LocationContext * clang::ento::CheckerContext::getLocationContext ( ) const inline ◆ getLocationRegionIfPostStore() static const MemRegion * clang::ento::CheckerContext::getLocationRegionIfPostStore ( const ExplodedNodeN ) inlinestatic ◆ getMacroNameOrSpelling() StringRef CheckerContext::getMacroNameOrSpelling ( SourceLocationLoc ) ◆ getNoteTag() [1/5] ◆ getNoteTag() [2/5] const NoteTag * clang::ento::CheckerContext::getNoteTag ( std::function< std::string()> &&  Cb, bool  IsPrunable = false  ) inline

A shorthand version of getNoteTag that doesn't require you to accept the arguments when you don't need it.

Parameters
Cb Callback without parameters. IsPrunable Whether the note is prunable. It allows BugReporter to omit the note from the report if it would make the displayed bug path significantly shorter.

Definition at line 305 of file CheckerContext.h.

References getNoteTag().

◆ getNoteTag() [3/5]

A shorthand version of getNoteTag that doesn't require you to accept the 'BugReporterContext' argument when you don't need it.

Parameters
Cb Callback only with 'BugReport &' parameter. IsPrunable Whether the note is prunable. It allows BugReporter to omit the note from the report if it would make the displayed bug path significantly shorter.

Definition at line 290 of file CheckerContext.h.

References getNoteTag().

◆ getNoteTag() [4/5]

A shorthand version of getNoteTag that accepts a lambda with stream for note.

Parameters
Cb Callback with 'BugReport &' and 'llvm::raw_ostream &'. IsPrunable Whether the note is prunable. It allows BugReporter to omit the note from the report if it would make the displayed bug path significantly shorter.

Definition at line 332 of file CheckerContext.h.

References getNoteTag(), and clang::ento::OS.

◆ getNoteTag() [5/5] const NoteTag * clang::ento::CheckerContext::getNoteTag ( StringRef  Note, bool  IsPrunable = false  ) inline

A shorthand version of getNoteTag that accepts a plain note.

Parameters
Note The note. IsPrunable Whether the note is prunable. It allows BugReporter to omit the note from the report if it would make the displayed bug path significantly shorter.

Definition at line 318 of file CheckerContext.h.

References getNoteTag(), and clang::Note.

◆ getPredecessor() ExplodedNode * clang::ento::CheckerContext::getPredecessor ( ) inline

Returns the previous node in the exploded graph, which includes the state of the program before the checker ran.

Note, checkers should not retain the node in their state since the nodes might get invalidated.

Definition at line 71 of file CheckerContext.h.

Referenced by addSink().

◆ getPreprocessor() Preprocessor & clang::ento::CheckerContext::getPreprocessor ( ) inline ◆ getSourceManager() const SourceManager & clang::ento::CheckerContext::getSourceManager ( ) inline ◆ getStackFrame() ◆ getState() ◆ getStateManager() ◆ getStoreManager() StoreManager & clang::ento::CheckerContext::getStoreManager ( ) inline ◆ getSVal() SVal clang::ento::CheckerContext::getSVal ( const StmtS ) const inline ◆ getSValBuilder() SValBuilder & clang::ento::CheckerContext::getSValBuilder ( ) inline ◆ getSymbolManager() SymbolManager & clang::ento::CheckerContext::getSymbolManager ( ) inline ◆ inTopFrame() bool clang::ento::CheckerContext::inTopFrame ( ) const inline ◆ isCLibraryFunction() bool CheckerContext::isCLibraryFunction ( const FunctionDeclFD, StringRef  Name = StringRef()  ) static

Returns true if the given function is an externally-visible function in the top-level namespace, such as malloc.

If a name is provided, the function must additionally match the given name.

Note that this also accepts functions from the std namespace (because headers like <cstdlib> declare them there) and does not check if the function is declared as 'extern "C"' or if it uses C++ name mangling.

Definition at line 49 of file CheckerContext.cpp.

References clang::ASTContext::BuiltinInfo, clang::Decl::getASTContext(), clang::FunctionDecl::getBuiltinID(), clang::Decl::getDeclContext(), clang::NamedDecl::getIdentifier(), clang::IdentifierInfo::getName(), clang::Builtin::Context::getName(), clang::DeclContext::getRedeclContext(), clang::NamedDecl::isExternallyVisible(), clang::FunctionDecl::isInlined(), clang::DeclContext::isStdNamespace(), and clang::DeclContext::isTranslationUnit().

Referenced by clang::ento::CallEvent::isGlobalCFunction().

◆ isDifferent() bool clang::ento::CheckerContext::isDifferent ( ) inline

Check if the checker changed the state of the execution; ex: added a new transition or a bug report.

Definition at line 77 of file CheckerContext.h.

◆ isGreaterOrEqual() bool CheckerContext::isGreaterOrEqual ( const ExprE, unsigned long long  Val  ) ◆ isHardenedVariantOf() bool CheckerContext::isHardenedVariantOf ( const FunctionDeclFD, StringRef  Name  ) static

In builds that use source hardening (-D_FORTIFY_SOURCE), many standard functions are implemented as macros that expand to calls of hardened functions that take additional arguments compared to the "usual" variant and perform additional input validation.

For example, a memcpy call may expand to __memcpy_chk() or __builtin___memcpy_chk().

This method returns true if FD declares a fortified variant of the standard library function Name.

NOTE: This method relies on heuristics; extend it if you need to handle a hardened variant that's not yet covered by it.

Definition at line 116 of file CheckerContext.cpp.

References clang::NamedDecl::getIdentifier(), and clang::IdentifierInfo::getName().

◆ isNegative() bool CheckerContext::isNegative ( const ExprE ) ◆ wasInlined const bool clang::ento::CheckerContext::wasInlined

If we are post visiting a call, this flag will be set if the call was inlined.

In all other cases it will be false.

Definition at line 39 of file CheckerContext.h.

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


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4