[clang-tools-extra] r286219 - Use AnalyzerOptions::getRegisteredCheckers() instead of clang/StaticAnalyzer/Checkers/Checkers.inc
Alexander Kornienko via cfe-commits
cfe-commits at lists.llvm.org
Mon Nov 7 23:43:42 PST 2016
Author: alexfh
Date: Tue Nov 8 01:43:42 2016
New Revision: 286219
URL: http://llvm.org/viewvc/llvm-project?rev=286219&view=rev
Log:
Use AnalyzerOptions::getRegisteredCheckers() instead of clang/StaticAnalyzer/Checkers/Checkers.inc
Summary: Depends on D26310.
Reviewers: zaks.anna, hokein
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D26311
Modified:
clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp
clang-tools-extra/trunk/clang-tidy/ClangTidy.h
Modified: clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp?rev=286219&r1=286218&r2=286219&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp Tue Nov 8 01:43:42 2016
@@ -56,15 +56,6 @@ namespace tidy {
namespace {
static const char *AnalyzerCheckNamePrefix = "clang-analyzer-";
-static const StringRef StaticAnalyzerChecks[] = {
-#define GET_CHECKERS
-#define CHECKER(FULLNAME, CLASS, DESCFILE, HELPTEXT, GROUPINDEX, HIDDEN) \
- FULLNAME,
-#include "clang/StaticAnalyzer/Checkers/Checkers.inc"
-#undef CHECKER
-#undef GET_CHECKERS
-};
-
class AnalyzerDiagnosticConsumer : public ento::PathDiagnosticConsumer {
public:
AnalyzerDiagnosticConsumer(ClangTidyContext &Context) : Context(Context) {}
@@ -296,6 +287,36 @@ static void setStaticAnalyzerCheckerOpts
}
}
+typedef std::vector<std::pair<std::string, bool>> CheckersList;
+
+static CheckersList getCheckersControlList(GlobList &Filter) {
+ CheckersList List;
+
+ const auto &RegisteredCheckers =
+ AnalyzerOptions::getRegisteredCheckers(/*IncludeExperimental=*/false);
+ bool AnalyzerChecksEnabled = false;
+ for (StringRef CheckName : RegisteredCheckers) {
+ std::string ClangTidyCheckName((AnalyzerCheckNamePrefix + CheckName).str());
+ AnalyzerChecksEnabled |= Filter.contains(ClangTidyCheckName);
+ }
+
+ if (!AnalyzerChecksEnabled)
+ return List;
+
+ // List all static analyzer checkers that our filter enables.
+ //
+ // Always add all core checkers if any other static analyzer check is enabled.
+ // This is currently necessary, as other path sensitive checks rely on the
+ // core checkers.
+ for (StringRef CheckName : RegisteredCheckers) {
+ std::string ClangTidyCheckName((AnalyzerCheckNamePrefix + CheckName).str());
+
+ if (CheckName.startswith("core") || Filter.contains(ClangTidyCheckName))
+ List.emplace_back(CheckName, true);
+ }
+ return List;
+}
+
std::unique_ptr<clang::ASTConsumer>
ClangTidyASTConsumerFactory::CreateASTConsumer(
clang::CompilerInstance &Compiler, StringRef File) {
@@ -379,37 +400,6 @@ ClangTidyOptions::OptionMap ClangTidyAST
return Options;
}
-ClangTidyASTConsumerFactory::CheckersList
-ClangTidyASTConsumerFactory::getCheckersControlList(GlobList &Filter) {
- CheckersList List;
-
- bool AnalyzerChecksEnabled = false;
- for (StringRef CheckName : StaticAnalyzerChecks) {
- std::string Checker((AnalyzerCheckNamePrefix + CheckName).str());
- AnalyzerChecksEnabled =
- AnalyzerChecksEnabled ||
- (!CheckName.startswith("debug") && Filter.contains(Checker));
- }
-
- if (AnalyzerChecksEnabled) {
- // Run our regex against all possible static analyzer checkers. Note that
- // debug checkers print values / run programs to visualize the CFG and are
- // thus not applicable to clang-tidy in general.
- //
- // Always add all core checkers if any other static analyzer checks are
- // enabled. This is currently necessary, as other path sensitive checks
- // rely on the core checkers.
- for (StringRef CheckName : StaticAnalyzerChecks) {
- std::string Checker((AnalyzerCheckNamePrefix + CheckName).str());
-
- if (CheckName.startswith("core") ||
- (!CheckName.startswith("debug") && Filter.contains(Checker)))
- List.push_back(std::make_pair(CheckName, true));
- }
- }
- return List;
-}
-
DiagnosticBuilder ClangTidyCheck::diag(SourceLocation Loc, StringRef Message,
DiagnosticIDs::Level Level) {
return Context->diag(CheckName, Loc, Message, Level);
Modified: clang-tools-extra/trunk/clang-tidy/ClangTidy.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/ClangTidy.h?rev=286219&r1=286218&r2=286219&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/ClangTidy.h (original)
+++ clang-tools-extra/trunk/clang-tidy/ClangTidy.h Tue Nov 8 01:43:42 2016
@@ -204,9 +204,6 @@ public:
ClangTidyOptions::OptionMap getCheckOptions();
private:
- typedef std::vector<std::pair<std::string, bool>> CheckersList;
- CheckersList getCheckersControlList(GlobList &Filter);
-
ClangTidyContext &Context;
std::unique_ptr<ClangTidyCheckFactories> CheckFactories;
};
More information about the cfe-commits
mailing list