clang 8.0.0

Public Types | Public Member Functions | Protected Member Functions | List of all members
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
enum | Kind { BaseBRKind, GRBugReporterKind }
using | iterator = BugTypesTy::iterator
| Iterator over the set of BugTypes tracked by the BugReporter. More...
using | EQClasses_iterator = llvm::FoldingSet< BugReportEquivClass >::iterator
| Iterator over the set of BugReports tracked by the BugReporter. More...

## Public Member Functions
| BugReporter (BugReporterData &d)
virtual | ~BugReporter ()
void | FlushReports ()
| Generate and flush diagnostics for all bug reports. More...
Kind | getKind () const
DiagnosticsEngine & | getDiagnostic ()
ArrayRef< PathDiagnosticConsumer * > | getPathDiagnosticConsumers ()
iterator | begin ()
iterator | end ()
EQClasses_iterator | EQClasses_begin ()
EQClasses_iterator | EQClasses_end ()
ASTContext & | getContext ()
SourceManager & | getSourceManager ()
AnalyzerOptions & | getAnalyzerOptions ()
virtual std::unique_ptr< DiagnosticForConsumerMapTy > | generatePathDiagnostics (ArrayRef< PathDiagnosticConsumer *> consumers, ArrayRef< BugReport *> &bugReports)
void | Register (BugType *BT)
void | emitReport (std::unique_ptr< BugReport > R)
| Add the given report to the set of reports tracked by BugReporter. More...
void | EmitBasicReport (const Decl *DeclWithIssue, const CheckerBase *Checker, StringRef BugName, StringRef BugCategory, StringRef BugStr, PathDiagnosticLocation Loc, ArrayRef< SourceRange > Ranges=None)
void | EmitBasicReport (const Decl *DeclWithIssue, CheckName CheckName, StringRef BugName, StringRef BugCategory, StringRef BugStr, PathDiagnosticLocation Loc, ArrayRef< SourceRange > Ranges=None)

## Protected Member Functions
| BugReporter (BugReporterData &d, Kind k)

## 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 412 of file BugReporter.h.

## Member Typedef Documentation

## ◆ EQClasses_iterator

using clang::ento::BugReporter::EQClasses_iterator = llvm::FoldingSet<BugReportEquivClass>::iterator

Iterator over the set of BugReports tracked by the BugReporter.

Definition at line 468 of file BugReporter.h.

## ◆ iterator

using clang::ento::BugReporter::iterator = BugTypesTy::iterator

Iterator over the set of BugTypes tracked by the BugReporter.

Definition at line 463 of file BugReporter.h.

## Member Enumeration Documentation

## ◆ Kind

enum clang::ento::BugReporter::Kind

Enumerator
BaseBRKind |
GRBugReporterKind |

Definition at line 414 of file BugReporter.h.

## Constructor & Destructor Documentation

## ◆ BugReporter() [1/2]

clang::ento::BugReporter::BugReporter | ( | BugReporterData & | d,
|  | Kind | k
| ) |  |
| inline protected

Definition at line 441 of file BugReporter.h.

## ◆ BugReporter() [2/2]

clang::ento::BugReporter::BugReporter | ( | BugReporterData & | d | ) |
| inline

Definition at line 445 of file BugReporter.h.

## ◆ ~BugReporter()

BugReporter::~BugReporter | ( |  | ) |
| virtual

Definition at line 2239 of file BugReporter.cpp.

## Member Function Documentation

## ◆ begin()

iterator clang::ento::BugReporter::begin | ( |  | ) |
| inline

Definition at line 464 of file BugReporter.h.

## ◆ EmitBasicReport() [1/2]

void clang::ento::BugReporter::EmitBasicReport | ( | const Decl * | DeclWithIssue,
|  | const CheckerBase * | Checker,
|  | StringRef | BugName,
|  | StringRef | BugCategory,
|  | StringRef | BugStr,
|  | PathDiagnosticLocation | Loc,
|  | ArrayRef< SourceRange > | Ranges = `None`
| ) |  |

Referenced by CompactMacroExpandedPieces().

## ◆ EmitBasicReport() [2/2]

void clang::ento::BugReporter::EmitBasicReport | ( | const Decl * | DeclWithIssue,
|  | CheckName | CheckName,
|  | StringRef | BugName,
|  | StringRef | BugCategory,
|  | StringRef | BugStr,
|  | PathDiagnosticLocation | Loc,
|  | ArrayRef< SourceRange > | Ranges = `None`
| ) |  |

## ◆ emitReport()

void clang::ento::BugReporter::emitReport | ( | std::unique_ptr< BugReport > | R | ) |

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.

Referenced by CompactMacroExpandedPieces(), clang::ento::CheckerContext::emitReport(), clang::ento::mpi::MPIBugReporter::reportDoubleNonblocking(), clang::ento::mpi::MPIBugReporter::reportMissingWait(), and clang::ento::mpi::MPIBugReporter::reportUnmatchedWait().

## ◆ end()

iterator clang::ento::BugReporter::end | ( |  | ) |
| inline

Definition at line 465 of file BugReporter.h.

## ◆ EQClasses_begin()

EQClasses_iterator clang::ento::BugReporter::EQClasses_begin | ( |  | ) |
| inline

Definition at line 469 of file BugReporter.h.

## ◆ EQClasses_end()

EQClasses_iterator clang::ento::BugReporter::EQClasses_end | ( |  | ) |
| inline

Definition at line 470 of file BugReporter.h.

## ◆ FlushReports()

void BugReporter::FlushReports | ( |  | ) |

Generate and flush diagnostics for all bug reports.

Definition at line 2247 of file BugReporter.cpp.

Referenced by clang::ento::ExprEngine::~ExprEngine().

## ◆ generatePathDiagnostics()

virtual std::unique_ptr<DiagnosticForConsumerMapTy> clang::ento::BugReporter::generatePathDiagnostics | ( | ArrayRef< PathDiagnosticConsumer *> | consumers,
|  | ArrayRef< BugReport *> & | bugReports
| ) |  |
| inline virtual

Reimplemented in clang::ento::GRBugReporter.

Definition at line 479 of file BugReporter.h.

References clang::ento::BugReport::BT, clang::ento::BugReport::DeclWithIssue, and clang::ento::BugReport::Ranges.

## ◆ getAnalyzerOptions()

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

Definition at line 476 of file BugReporter.h.

References clang::ento::BugReporterData::getAnalyzerOptions().

Referenced by clang::ento::BugReporterContext::getAnalyzerOptions().

## ◆ getContext()

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

Definition at line 472 of file BugReporter.h.

References clang::ento::BugReporterData::getASTContext().

Referenced by clang::ento::BugReporterContext::getASTContext().

## ◆ getDiagnostic()

DiagnosticsEngine& clang::ento::BugReporter::getDiagnostic | ( |  | ) |
| inline

Definition at line 454 of file BugReporter.h.

References clang::ento::BugReporterData::getDiagnostic().

## ◆ getKind()

Kind clang::ento::BugReporter::getKind | ( |  | ) | const
| inline

Definition at line 452 of file BugReporter.h.

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

## ◆ getPathDiagnosticConsumers()

ArrayRef<PathDiagnosticConsumer*> clang::ento::BugReporter::getPathDiagnosticConsumers | ( |  | ) |
| inline

Definition at line 458 of file BugReporter.h.

References clang::ento::BugReporterData::getPathDiagnosticConsumers().

## ◆ getSourceManager()

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

Definition at line 474 of file BugReporter.h.

References clang::ento::BugReporterData::getSourceManager().

Referenced by clang::ento::CheckerContext::getSourceManager(), and clang::ento::BugReporterContext::getSourceManager().

## ◆ Register()

void clang::ento::BugReporter::Register | ( | BugType * | BT | ) |

Referenced by CompactMacroExpandedPieces().

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

- include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
- lib/StaticAnalyzer/Core/BugReporter.cpp