clang  3.9.0
Public Types | Public Member Functions | Public Attributes | List of all members
clang::ento::PathDiagnostic Class Reference

PathDiagnostic - PathDiagnostic objects represent a single path-sensitive diagnostic. More...

#include <PathDiagnostic.h>

Inheritance diagram for clang::ento::PathDiagnostic:
[legend]
Collaboration diagram for clang::ento::PathDiagnostic:
[legend]

Public Types

typedef std::deque
< std::string >
::const_iterator 
meta_iterator
 

Public Member Functions

 PathDiagnostic (StringRef CheckName, const Decl *DeclWithIssue, StringRef bugtype, StringRef verboseDesc, StringRef shortDesc, StringRef category, PathDiagnosticLocation LocationToUnique, const Decl *DeclToUnique)
 
 ~PathDiagnostic ()
 
PathPiecesgetActivePath ()
 Return the path currently used by builders for constructing the PathDiagnostic. More...
 
PathPiecesgetMutablePieces ()
 Return a mutable version of 'path'. More...
 
unsigned full_size ()
 Return the unrolled size of the path. More...
 
void pushActivePath (PathPieces *p)
 
void popActivePath ()
 
bool isWithinCall () const
 
void setEndOfPath (std::unique_ptr< PathDiagnosticPiece > EndPiece)
 
void appendToDesc (StringRef S)
 
void resetPath ()
 
void resetDiagnosticLocationToMainFile ()
 If the last piece of the report point to the header file, resets the location of the report to be the last location in the main source file. More...
 
StringRef getVerboseDescription () const
 
StringRef getShortDescription () const
 
StringRef getCheckName () const
 
StringRef getBugType () const
 
StringRef getCategory () const
 
const DeclgetDeclWithIssue () const
 Return the semantic context where an issue occurred. More...
 
meta_iterator meta_begin () const
 
meta_iterator meta_end () const
 
void addMeta (StringRef s)
 
PathDiagnosticLocation getLocation () const
 
PathDiagnosticLocation getUniqueingLoc () const
 Get the location on which the report should be uniqued. More...
 
const DeclgetUniqueingDecl () const
 Get the declaration containing the uniqueing location. More...
 
void flattenLocations ()
 
void Profile (llvm::FoldingSetNodeID &ID) const
 Profiles the diagnostic, independent of the path it references. More...
 
void FullProfile (llvm::FoldingSetNodeID &ID) const
 Profiles the diagnostic, including its path. More...
 

Public Attributes

const PathPiecespath
 

Detailed Description

PathDiagnostic - PathDiagnostic objects represent a single path-sensitive diagnostic.

It represents an ordered-collection of PathDiagnosticPieces, each which represent the pieces of the path.

Definition at line 716 of file PathDiagnostic.h.

Member Typedef Documentation

typedef std::deque<std::string>::const_iterator clang::ento::PathDiagnostic::meta_iterator

Definition at line 805 of file PathDiagnostic.h.

Constructor & Destructor Documentation

PathDiagnostic::PathDiagnostic ( StringRef  CheckName,
const Decl DeclWithIssue,
StringRef  bugtype,
StringRef  verboseDesc,
StringRef  shortDesc,
StringRef  category,
PathDiagnosticLocation  LocationToUnique,
const Decl DeclToUnique 
)

Definition at line 106 of file PathDiagnostic.cpp.

PathDiagnostic::~PathDiagnostic ( )

Definition at line 104 of file PathDiagnostic.cpp.

Member Function Documentation

void clang::ento::PathDiagnostic::addMeta ( StringRef  s)
inline

Definition at line 808 of file PathDiagnostic.h.

void clang::ento::PathDiagnostic::appendToDesc ( StringRef  S)
inline

Definition at line 775 of file PathDiagnostic.h.

References S.

Referenced by resetDiagnosticLocationToMainFile().

void clang::ento::PathDiagnostic::flattenLocations ( )
inline

Definition at line 825 of file PathDiagnostic.h.

References E, and I.

unsigned PathDiagnostic::full_size ( )

Return the unrolled size of the path.

Definition at line 1046 of file PathDiagnostic.cpp.

References compute_path_size().

void PathDiagnostic::FullProfile ( llvm::FoldingSetNodeID &  ID) const

Profiles the diagnostic, including its path.

Two diagnostics with the same issue along different paths will generate different profiles.

Definition at line 1108 of file PathDiagnostic.cpp.

References E, I, and clang::Profile().

PathPieces& clang::ento::PathDiagnostic::getActivePath ( )
inline

Return the path currently used by builders for constructing the PathDiagnostic.

Definition at line 749 of file PathDiagnostic.h.

Referenced by GenerateAlternateExtensivePathDiagnostic(), GenerateExtensivePathDiagnostic(), GenerateMinimalPathDiagnostic(), and setEndOfPath().

StringRef clang::ento::PathDiagnostic::getBugType ( ) const
inline

Definition at line 797 of file PathDiagnostic.h.

Referenced by compare().

StringRef clang::ento::PathDiagnostic::getCategory ( ) const
inline

Definition at line 798 of file PathDiagnostic.h.

Referenced by compare().

StringRef clang::ento::PathDiagnostic::getCheckName ( ) const
inline

Definition at line 796 of file PathDiagnostic.h.

const Decl* clang::ento::PathDiagnostic::getDeclWithIssue ( ) const
inline

Return the semantic context where an issue occurred.

If the issue occurs along a path, this represents the "central" area where the bug manifests.

Definition at line 803 of file PathDiagnostic.h.

Referenced by compare().

PathDiagnosticLocation clang::ento::PathDiagnostic::getLocation ( ) const
inline

Definition at line 810 of file PathDiagnostic.h.

Referenced by compare(), and GenerateAlternateExtensivePathDiagnostic().

PathPieces& clang::ento::PathDiagnostic::getMutablePieces ( )
inline

Return a mutable version of 'path'.

Definition at line 756 of file PathDiagnostic.h.

Referenced by GenerateMinimalPathDiagnostic(), and clang::ento::GRBugReporter::generatePathDiagnostic().

StringRef clang::ento::PathDiagnostic::getShortDescription ( ) const
inline

Definition at line 793 of file PathDiagnostic.h.

Referenced by compare().

const Decl* clang::ento::PathDiagnostic::getUniqueingDecl ( ) const
inline

Get the declaration containing the uniqueing location.

Definition at line 821 of file PathDiagnostic.h.

PathDiagnosticLocation clang::ento::PathDiagnostic::getUniqueingLoc ( ) const
inline

Get the location on which the report should be uniqued.

Definition at line 816 of file PathDiagnostic.h.

StringRef clang::ento::PathDiagnostic::getVerboseDescription ( ) const
inline

Definition at line 792 of file PathDiagnostic.h.

Referenced by compare().

bool clang::ento::PathDiagnostic::isWithinCall ( ) const
inline
meta_iterator clang::ento::PathDiagnostic::meta_begin ( ) const
inline

Definition at line 806 of file PathDiagnostic.h.

Referenced by compare().

meta_iterator clang::ento::PathDiagnostic::meta_end ( ) const
inline

Definition at line 807 of file PathDiagnostic.h.

Referenced by compare().

void clang::ento::PathDiagnostic::popActivePath ( )
inline
void PathDiagnostic::Profile ( llvm::FoldingSetNodeID &  ID) const

Profiles the diagnostic, independent of the path it references.

This can be used to merge diagnostics that refer to the same issue along different paths.

Definition at line 1101 of file PathDiagnostic.cpp.

References Category.

void clang::ento::PathDiagnostic::pushActivePath ( PathPieces p)
inline
void PathDiagnostic::resetDiagnosticLocationToMainFile ( )

If the last piece of the report point to the header file, resets the location of the report to be the last location in the main source file.

Definition at line 152 of file PathDiagnostic.cpp.

References appendToDesc(), clang::NamedDecl::getDeclName(), getFirstStackedCallToHeaderFile(), clang::ento::PathDiagnosticPiece::getLocation(), clang::ento::PathDiagnosticLocation::getManager(), and path.

void clang::ento::PathDiagnostic::resetPath ( )
inline
void clang::ento::PathDiagnostic::setEndOfPath ( std::unique_ptr< PathDiagnosticPiece EndPiece)
inline

Definition at line 768 of file PathDiagnostic.h.

References getActivePath().

Referenced by clang::ento::GRBugReporter::generatePathDiagnostic().

Member Data Documentation

const PathPieces& clang::ento::PathDiagnostic::path

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