clang 22.0.0git
clang::ento::BugReporter Class Reference

BugReporter is a utility class for generating PathDiagnostics for analysis. More...

#include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h"

Inheritance diagram for clang::ento::BugReporter:
[legend]

Public Types

using EQClasses_iterator = llvm::FoldingSet<BugReportEquivClass>::iterator
 Iterator over the set of BugReports tracked by the BugReporter.

Public Member Functions

 BugReporter (BugReporterData &d)
virtual ~BugReporter ()
void FlushReports ()
 Generate and flush diagnostics for all bug reports.
ArrayRef< std::unique_ptr< PathDiagnosticConsumer > > getPathDiagnosticConsumers ()
llvm::iterator_range< EQClasses_iteratorequivalenceClasses ()
ASTContextgetContext ()
const SourceManagergetSourceManager ()
const SourceManagergetSourceManager () const
const AnalyzerOptionsgetAnalyzerOptions ()
PreprocessorgetPreprocessor ()
const PreprocessorgetPreprocessor () const
const DeclgetAnalysisEntryPoint () const
 Get the top-level entry point for the issue to be reported.
void setAnalysisEntryPoint (const Decl *EntryPoint)
virtual void emitReport (std::unique_ptr< BugReport > R)
 Add the given report to the set of reports tracked by BugReporter.
void EmitBasicReport (const Decl *DeclWithIssue, const CheckerFrontend *Checker, StringRef BugName, StringRef BugCategory, StringRef BugStr, PathDiagnosticLocation Loc, ArrayRef< SourceRange > Ranges={}, ArrayRef< FixItHint > Fixits={})
void EmitBasicReport (const Decl *DeclWithIssue, CheckerNameRef CheckerName, StringRef BugName, StringRef BugCategory, StringRef BugStr, PathDiagnosticLocation Loc, ArrayRef< SourceRange > Ranges={}, ArrayRef< FixItHint > Fixits={})

Protected Member Functions

virtual std::unique_ptr< DiagnosticForConsumerMapTygenerateDiagnosticForConsumerMap (BugReport *exampleReport, ArrayRef< std::unique_ptr< PathDiagnosticConsumer > > consumers, ArrayRef< BugReport * > bugReports)
 Generate the diagnostics for the given bug report.

Detailed Description

BugReporter is a utility class for generating PathDiagnostics for analysis.

It collects the BugReports and BugTypes and knows how to generate and flush the corresponding diagnostics.

The base class is used for generating path-insensitive

Definition at line 586 of file BugReporter.h.

Member Typedef Documentation

◆ EQClasses_iterator

Iterator over the set of BugReports tracked by the BugReporter.

Definition at line 618 of file BugReporter.h.

Constructor & Destructor Documentation

◆ BugReporter()

BugReporter::BugReporter ( BugReporterData & d)

◆ ~BugReporter()

BugReporter::~BugReporter ( )
virtual

Definition at line 2530 of file BugReporter.cpp.

Member Function Documentation

◆ EmitBasicReport() [1/2]

void BugReporter::EmitBasicReport ( const Decl * DeclWithIssue,
CheckerNameRef CheckerName,
StringRef BugName,
StringRef BugCategory,
StringRef BugStr,
PathDiagnosticLocation Loc,
ArrayRef< SourceRange > Ranges = {},
ArrayRef< FixItHint > Fixits = {} )

◆ EmitBasicReport() [2/2]

void BugReporter::EmitBasicReport ( const Decl * DeclWithIssue,
const CheckerFrontend * Checker,
StringRef BugName,
StringRef BugCategory,
StringRef BugStr,
PathDiagnosticLocation Loc,
ArrayRef< SourceRange > Ranges = {},
ArrayRef< FixItHint > Fixits = {} )

◆ emitReport()

void BugReporter::emitReport ( std::unique_ptr< BugReport > R)
virtual

Add the given report to the set of reports tracked by BugReporter.

The reports are usually generated by the checkers. Further, they are folded based on the profile value, which is done to coalesce similar reports.

Reimplemented in clang::ento::PathSensitiveBugReporter.

Definition at line 2976 of file BugReporter.cpp.

Referenced by EmitBasicReport(), emitDiagnostics(), emitDiagnosticsUnrelated(), clang::ento::PathSensitiveBugReporter::emitReport(), clang::ento::mpi::MPIBugReporter::reportDoubleNonblocking(), clang::ento::mpi::MPIBugReporter::reportMissingWait(), and clang::ento::mpi::MPIBugReporter::reportUnmatchedWait().

◆ equivalenceClasses()

llvm::iterator_range< EQClasses_iterator > clang::ento::BugReporter::equivalenceClasses ( )
inline

◆ FlushReports()

void BugReporter::FlushReports ( )

Generate and flush diagnostics for all bug reports.

Definition at line 2540 of file BugReporter.cpp.

◆ generateDiagnosticForConsumerMap()

std::unique_ptr< DiagnosticForConsumerMapTy > BugReporter::generateDiagnosticForConsumerMap ( BugReport * exampleReport,
ArrayRef< std::unique_ptr< PathDiagnosticConsumer > > consumers,
ArrayRef< BugReport * > bugReports )
protectedvirtual

Generate the diagnostics for the given bug report.

Definition at line 3295 of file BugReporter.cpp.

References clang::cast(), and generateDiagnosticForBasicReport().

◆ getAnalysisEntryPoint()

const Decl * clang::ento::BugReporter::getAnalysisEntryPoint ( ) const
inline

Get the top-level entry point for the issue to be reported.

Definition at line 634 of file BugReporter.h.

◆ getAnalyzerOptions()

const AnalyzerOptions & clang::ento::BugReporter::getAnalyzerOptions ( )
inline

Definition at line 628 of file BugReporter.h.

◆ getContext()

ASTContext & clang::ento::BugReporter::getContext ( )
inline

Definition at line 623 of file BugReporter.h.

Referenced by CheckObjCInstMethSignature().

◆ getPathDiagnosticConsumers()

ArrayRef< std::unique_ptr< PathDiagnosticConsumer > > clang::ento::BugReporter::getPathDiagnosticConsumers ( )
inline

Definition at line 613 of file BugReporter.h.

◆ getPreprocessor() [1/2]

Preprocessor & clang::ento::BugReporter::getPreprocessor ( )
inline

◆ getPreprocessor() [2/2]

const Preprocessor & clang::ento::BugReporter::getPreprocessor ( ) const
inline

Definition at line 631 of file BugReporter.h.

◆ getSourceManager() [1/2]

◆ getSourceManager() [2/2]

const SourceManager & clang::ento::BugReporter::getSourceManager ( ) const
inline

Definition at line 626 of file BugReporter.h.

◆ setAnalysisEntryPoint()

void clang::ento::BugReporter::setAnalysisEntryPoint ( const Decl * EntryPoint)
inline

Definition at line 636 of file BugReporter.h.


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