Always add core checkers if static analyzer checks are enabled.
In response to post-commit feedback by Jordan, this is required to
make sure path-sensitive checks work correctly.
git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@194807 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/clang-tidy/ClangTidy.cpp b/clang-tidy/ClangTidy.cpp
index 457011a..dfd37d7 100644
--- a/clang-tidy/ClangTidy.cpp
+++ b/clang-tidy/ClangTidy.cpp
@@ -98,12 +98,19 @@
AnalyzerOptionsRef Options = Compiler.getAnalyzerOpts();
llvm::Regex CheckRegex(CheckRegexString);
+ // 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.
+ if (CheckRegex.match("clang-analyzer-"))
+ Options->CheckersControlList.push_back(std::make_pair("core", true));
+
// 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.
#define GET_CHECKERS
#define CHECKER(FULLNAME, CLASS, DESCFILE, HELPTEXT, GROUPINDEX, HIDDEN) \
- if (!StringRef(FULLNAME).startswith("debug") && \
+ if (!StringRef(FULLNAME).startswith("core") && \
+ !StringRef(FULLNAME).startswith("debug") && \
CheckRegex.match("clang-analyzer-" FULLNAME)) \
Options->CheckersControlList.push_back(std::make_pair(FULLNAME, true));
#include "../../../lib/StaticAnalyzer/Checkers/Checkers.inc"