forked from OSchip/llvm-project
[analyzer] Add dumps to CheckerRegistry
This commit is contained in:
parent
c15d5d12c6
commit
77e1181df4
|
@ -13,6 +13,7 @@
|
||||||
#include "llvm/ADT/SetVector.h"
|
#include "llvm/ADT/SetVector.h"
|
||||||
#include "llvm/ADT/StringMap.h"
|
#include "llvm/ADT/StringMap.h"
|
||||||
#include "llvm/ADT/StringRef.h"
|
#include "llvm/ADT/StringRef.h"
|
||||||
|
#include "llvm/Support/raw_ostream.h"
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -133,6 +134,9 @@ public:
|
||||||
DevelopmentStatus == "released") &&
|
DevelopmentStatus == "released") &&
|
||||||
"Invalid development status!");
|
"Invalid development status!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LLVM_DUMP_METHOD void dump() const { dumpToStream(llvm::errs()); }
|
||||||
|
LLVM_DUMP_METHOD void dumpToStream(llvm::raw_ostream &Out) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
using CmdLineOptionList = llvm::SmallVector<CmdLineOption, 0>;
|
using CmdLineOptionList = llvm::SmallVector<CmdLineOption, 0>;
|
||||||
|
@ -189,6 +193,9 @@ public:
|
||||||
|
|
||||||
// Used for lower_bound.
|
// Used for lower_bound.
|
||||||
explicit CheckerInfo(StringRef FullName) : FullName(FullName) {}
|
explicit CheckerInfo(StringRef FullName) : FullName(FullName) {}
|
||||||
|
|
||||||
|
LLVM_DUMP_METHOD void dump() const { dumpToStream(llvm::errs()); }
|
||||||
|
LLVM_DUMP_METHOD void dumpToStream(llvm::raw_ostream &Out) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
using StateFromCmdLine = CheckerInfo::StateFromCmdLine;
|
using StateFromCmdLine = CheckerInfo::StateFromCmdLine;
|
||||||
|
@ -206,6 +213,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
explicit PackageInfo(StringRef FullName) : FullName(FullName) {}
|
explicit PackageInfo(StringRef FullName) : FullName(FullName) {}
|
||||||
|
|
||||||
|
LLVM_DUMP_METHOD void dump() const { dumpToStream(llvm::errs()); }
|
||||||
|
LLVM_DUMP_METHOD void dumpToStream(llvm::raw_ostream &Out) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
using PackageInfoList = llvm::SmallVector<PackageInfo, 0>;
|
using PackageInfoList = llvm::SmallVector<PackageInfo, 0>;
|
||||||
|
|
|
@ -27,6 +27,10 @@ using namespace clang;
|
||||||
using namespace ento;
|
using namespace ento;
|
||||||
using llvm::sys::DynamicLibrary;
|
using llvm::sys::DynamicLibrary;
|
||||||
|
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
// Utilities.
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
using RegisterCheckersFn = void (*)(CheckerRegistry &);
|
using RegisterCheckersFn = void (*)(CheckerRegistry &);
|
||||||
|
|
||||||
static bool isCompatibleAPIVersion(const char *VersionString) {
|
static bool isCompatibleAPIVersion(const char *VersionString) {
|
||||||
|
@ -86,6 +90,63 @@ static bool isInPackage(const CheckerRegistry::CheckerInfo &Checker,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
// Methods of CmdLineOption, PackageInfo and CheckerInfo.
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
LLVM_DUMP_METHOD void
|
||||||
|
CheckerRegistry::CmdLineOption::dumpToStream(llvm::raw_ostream &Out) const {
|
||||||
|
// The description can be just checked in Checkers.inc, the point here is to
|
||||||
|
// debug whether we succeeded in parsing it.
|
||||||
|
Out << OptionName << " (" << OptionType << ", "
|
||||||
|
<< (IsHidden ? "hidden, " : "") << DevelopmentStatus << ") default: \""
|
||||||
|
<< DefaultValStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static StringRef toString(CheckerRegistry::StateFromCmdLine Kind) {
|
||||||
|
switch (Kind) {
|
||||||
|
case CheckerRegistry::StateFromCmdLine::State_Disabled:
|
||||||
|
return "Disabled";
|
||||||
|
case CheckerRegistry::StateFromCmdLine::State_Enabled:
|
||||||
|
return "Enabled";
|
||||||
|
case CheckerRegistry::StateFromCmdLine::State_Unspecified:
|
||||||
|
return "Unspecified";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LLVM_DUMP_METHOD void
|
||||||
|
CheckerRegistry::CheckerInfo::dumpToStream(llvm::raw_ostream &Out) const {
|
||||||
|
// The description can be just checked in Checkers.inc, the point here is to
|
||||||
|
// debug whether we succeeded in parsing it. Same with documentation uri.
|
||||||
|
Out << FullName << " (" << toString(State) << (IsHidden ? ", hidden" : "")
|
||||||
|
<< ")\n";
|
||||||
|
Out << " Options:\n";
|
||||||
|
for (const CmdLineOption &Option : CmdLineOptions) {
|
||||||
|
Out << " ";
|
||||||
|
Option.dumpToStream(Out);
|
||||||
|
Out << '\n';
|
||||||
|
}
|
||||||
|
Out << " Dependencies:\n";
|
||||||
|
for (const CheckerInfo *Dependency : Dependencies) {
|
||||||
|
Out << " " << Dependency->FullName << '\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LLVM_DUMP_METHOD void
|
||||||
|
CheckerRegistry::PackageInfo::dumpToStream(llvm::raw_ostream &Out) const {
|
||||||
|
Out << FullName << "\n";
|
||||||
|
Out << " Options:\n";
|
||||||
|
for (const CmdLineOption &Option : CmdLineOptions) {
|
||||||
|
Out << " ";
|
||||||
|
Option.dumpToStream(Out);
|
||||||
|
Out << '\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
// Methods of CheckerRegistry.
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
CheckerRegistry::CheckerInfoListRange
|
CheckerRegistry::CheckerInfoListRange
|
||||||
CheckerRegistry::getMutableCheckersForCmdLineArg(StringRef CmdLineArg) {
|
CheckerRegistry::getMutableCheckersForCmdLineArg(StringRef CmdLineArg) {
|
||||||
auto It = binaryFind(Checkers, CmdLineArg);
|
auto It = binaryFind(Checkers, CmdLineArg);
|
||||||
|
|
Loading…
Reference in New Issue