Add checker debug.ConfigDumper to dump the contents of the configuration table.
The format of this output is a WIP; largely I'm bringing it up now for regression testing. We can evolve the output format over time. llvm-svn: 164953
This commit is contained in:
parent
88dd13fdca
commit
86917fdbe0
|
@ -487,6 +487,10 @@ def CallGraphDumper : Checker<"DumpCallGraph">,
|
|||
HelpText<"Display Call Graph">,
|
||||
DescFile<"DebugCheckers.cpp">;
|
||||
|
||||
def ConfigDumper : Checker<"ConfigDumper">,
|
||||
HelpText<"Dump config table">,
|
||||
DescFile<"DebugCheckers.cpp">;
|
||||
|
||||
def TraversalDumper : Checker<"DumpTraversal">,
|
||||
HelpText<"Print branch conditions as they are traversed by the engine">,
|
||||
DescFile<"TraversalChecker.cpp">;
|
||||
|
|
|
@ -144,3 +144,38 @@ public:
|
|||
void ento::registerCallGraphDumper(CheckerManager &mgr) {
|
||||
mgr.registerChecker<CallGraphDumper>();
|
||||
}
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// ConfigDumper
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
class ConfigDumper : public Checker< check::EndOfTranslationUnit > {
|
||||
public:
|
||||
void checkEndOfTranslationUnit(const TranslationUnitDecl *TU,
|
||||
AnalysisManager& mgr,
|
||||
BugReporter &BR) const {
|
||||
|
||||
const AnalyzerOptions::ConfigTable &Config = mgr.options.Config;
|
||||
AnalyzerOptions::ConfigTable::const_iterator I =
|
||||
Config.begin(), E = Config.end();
|
||||
|
||||
std::vector<StringRef> Keys;
|
||||
for (; I != E ; ++I) { Keys.push_back(I->getKey()); }
|
||||
sort(Keys.begin(), Keys.end());
|
||||
|
||||
llvm::errs() << "[config]\n";
|
||||
for (unsigned i = 0, n = Keys.size(); i < n ; ++i) {
|
||||
StringRef Key = Keys[i];
|
||||
I = Config.find(Key);
|
||||
llvm::errs() << Key << " = " << I->second << '\n';
|
||||
}
|
||||
llvm::errs() << "[stats]\n" << "num-entries = " << Keys.size() << '\n';
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
void ento::registerConfigDumper(CheckerManager &mgr) {
|
||||
mgr.registerChecker<ConfigDumper>();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue