[clang-tools-extra] r343415 - Allow clang-tidy to be built without a dependency on the clang static analyzer.
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Sun Sep 30 10:22:58 PDT 2018
Author: aaronballman
Date: Sun Sep 30 10:22:58 2018
New Revision: 343415
URL: http://llvm.org/viewvc/llvm-project?rev=343415&view=rev
Log:
Allow clang-tidy to be built without a dependency on the clang static analyzer.
Patch by Stephen Kelly.
Modified:
clang-tools-extra/trunk/CMakeLists.txt
clang-tools-extra/trunk/clang-tidy/CMakeLists.txt
clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp
clang-tools-extra/trunk/clang-tidy/plugin/CMakeLists.txt
clang-tools-extra/trunk/clang-tidy/plugin/ClangTidyPlugin.cpp
clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt
clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp
clang-tools-extra/trunk/docs/clang-tidy/index.rst
clang-tools-extra/trunk/test/CMakeLists.txt
clang-tools-extra/trunk/test/clang-tidy/enable-alpha-checks.cpp
clang-tools-extra/trunk/test/clang-tidy/mpi-buffer-deref.cpp
clang-tools-extra/trunk/test/clang-tidy/mpi-type-mismatch.cpp
clang-tools-extra/trunk/test/clang-tidy/nolint.cpp
clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp
clang-tools-extra/trunk/test/clang-tidy/static-analyzer-config.cpp
clang-tools-extra/trunk/test/clang-tidy/static-analyzer.cpp
clang-tools-extra/trunk/test/clang-tidy/temporaries.cpp
clang-tools-extra/trunk/test/lit.cfg
clang-tools-extra/trunk/unittests/CMakeLists.txt
Modified: clang-tools-extra/trunk/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/CMakeLists.txt?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/CMakeLists.txt Sun Sep 30 10:22:58 2018
@@ -1,10 +1,8 @@
add_subdirectory(clang-apply-replacements)
add_subdirectory(clang-reorder-fields)
add_subdirectory(modularize)
-if(CLANG_ENABLE_STATIC_ANALYZER)
add_subdirectory(clang-tidy)
add_subdirectory(clang-tidy-vs)
-endif()
add_subdirectory(change-namespace)
add_subdirectory(clang-doc)
Modified: clang-tools-extra/trunk/clang-tidy/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/CMakeLists.txt?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/clang-tidy/CMakeLists.txt Sun Sep 30 10:22:58 2018
@@ -21,12 +21,17 @@ add_clang_library(clangTidy
clangLex
clangRewrite
clangSema
- clangStaticAnalyzerCore
- clangStaticAnalyzerFrontend
clangTooling
clangToolingCore
)
+if(CLANG_ENABLE_STATIC_ANALYZER)
+ target_link_libraries(clangTidy PRIVATE
+ clangStaticAnalyzerCore
+ clangStaticAnalyzerFrontend
+ )
+endif()
+
add_subdirectory(android)
add_subdirectory(abseil)
add_subdirectory(boost)
@@ -39,7 +44,9 @@ add_subdirectory(hicpp)
add_subdirectory(llvm)
add_subdirectory(misc)
add_subdirectory(modernize)
-add_subdirectory(mpi)
+if(CLANG_ENABLE_STATIC_ANALYZER)
+ add_subdirectory(mpi)
+endif()
add_subdirectory(objc)
add_subdirectory(performance)
add_subdirectory(plugin)
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=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp Sun Sep 30 10:22:58 2018
@@ -34,8 +34,10 @@
#include "clang/Lex/Preprocessor.h"
#include "clang/Rewrite/Frontend/FixItRewriter.h"
#include "clang/Rewrite/Frontend/FrontendActions.h"
+#if CLANG_ENABLE_STATIC_ANALYZER
#include "clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h"
#include "clang/StaticAnalyzer/Frontend/AnalysisConsumer.h"
+#endif // CLANG_ENABLE_STATIC_ANALYZER
#include "clang/Tooling/DiagnosticsYaml.h"
#include "clang/Tooling/Refactoring.h"
#include "clang/Tooling/ReplacementsYaml.h"
@@ -56,6 +58,7 @@ namespace clang {
namespace tidy {
namespace {
+#if CLANG_ENABLE_STATIC_ANALYZER
static const char *AnalyzerCheckNamePrefix = "clang-analyzer-";
class AnalyzerDiagnosticConsumer : public ento::PathDiagnosticConsumer {
@@ -87,6 +90,7 @@ public:
private:
ClangTidyContext &Context;
};
+#endif // CLANG_ENABLE_STATIC_ANALYZER
class ErrorReporter {
public:
@@ -296,6 +300,7 @@ ClangTidyASTConsumerFactory::ClangTidyAS
}
}
+#if CLANG_ENABLE_STATIC_ANALYZER
static void setStaticAnalyzerCheckerOpts(const ClangTidyOptions &Opts,
AnalyzerOptionsRef AnalyzerOptions) {
StringRef AnalyzerPrefix(AnalyzerCheckNamePrefix);
@@ -339,6 +344,7 @@ static CheckersList getCheckersControlLi
}
return List;
}
+#endif // CLANG_ENABLE_STATIC_ANALYZER
std::unique_ptr<clang::ASTConsumer>
ClangTidyASTConsumerFactory::CreateASTConsumer(
@@ -380,6 +386,7 @@ ClangTidyASTConsumerFactory::CreateASTCo
if (!Checks.empty())
Consumers.push_back(Finder->newASTConsumer());
+#if CLANG_ENABLE_STATIC_ANALYZER
AnalyzerOptionsRef AnalyzerOptions = Compiler.getAnalyzerOpts();
AnalyzerOptions->CheckersControlList =
getCheckersControlList(Context, Context.canEnableAnalyzerAlphaCheckers());
@@ -395,6 +402,7 @@ ClangTidyASTConsumerFactory::CreateASTCo
new AnalyzerDiagnosticConsumer(Context));
Consumers.push_back(std::move(AnalysisConsumer));
}
+#endif // CLANG_ENABLE_STATIC_ANALYZER
return llvm::make_unique<ClangTidyASTConsumer>(
std::move(Consumers), std::move(Profiling), std::move(Finder),
std::move(Checks));
@@ -407,9 +415,11 @@ std::vector<std::string> ClangTidyASTCon
CheckNames.push_back(CheckFactory.first);
}
+#if CLANG_ENABLE_STATIC_ANALYZER
for (const auto &AnalyzerCheck : getCheckersControlList(
Context, Context.canEnableAnalyzerAlphaCheckers()))
CheckNames.push_back(AnalyzerCheckNamePrefix + AnalyzerCheck.first);
+#endif // CLANG_ENABLE_STATIC_ANALYZER
std::sort(CheckNames.begin(), CheckNames.end());
return CheckNames;
Modified: clang-tools-extra/trunk/clang-tidy/plugin/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/plugin/CMakeLists.txt?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/plugin/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/clang-tidy/plugin/CMakeLists.txt Sun Sep 30 10:22:58 2018
@@ -20,7 +20,6 @@ add_clang_library(clangTidyPlugin
clangTidyLLVMModule
clangTidyMiscModule
clangTidyModernizeModule
- clangTidyMPIModule
clangTidyObjCModule
clangTidyPerformanceModule
clangTidyPortabilityModule
@@ -28,3 +27,9 @@ add_clang_library(clangTidyPlugin
clangTidyZirconModule
clangTooling
)
+
+if(CLANG_ENABLE_STATIC_ANALYZER)
+ target_link_libraries(clangTidyPlugin PRIVATE
+ clangTidyMPIModule
+ )
+endif()
Modified: clang-tools-extra/trunk/clang-tidy/plugin/ClangTidyPlugin.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/plugin/ClangTidyPlugin.cpp?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/plugin/ClangTidyPlugin.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/plugin/ClangTidyPlugin.cpp Sun Sep 30 10:22:58 2018
@@ -133,10 +133,12 @@ extern volatile int ModernizeModuleAncho
static int LLVM_ATTRIBUTE_UNUSED ModernizeModuleAnchorDestination =
ModernizeModuleAnchorSource;
+#if CLANG_ENABLE_STATIC_ANALYZER
// This anchor is used to force the linker to link the MPIModule.
extern volatile int MPIModuleAnchorSource;
static int LLVM_ATTRIBUTE_UNUSED MPIModuleAnchorDestination =
MPIModuleAnchorSource;
+#endif
// This anchor is used to force the linker to link the ObjCModule.
extern volatile int ObjCModuleAnchorSource;
Modified: clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt Sun Sep 30 10:22:58 2018
@@ -29,7 +29,6 @@ target_link_libraries(clang-tidy
clangTidyLLVMModule
clangTidyMiscModule
clangTidyModernizeModule
- clangTidyMPIModule
clangTidyObjCModule
clangTidyPerformanceModule
clangTidyPortabilityModule
@@ -39,6 +38,12 @@ target_link_libraries(clang-tidy
clangToolingCore
)
+if(CLANG_ENABLE_STATIC_ANALYZER)
+ target_link_libraries(clang-tidy PRIVATE
+ clangTidyMPIModule
+ )
+endif()
+
install(PROGRAMS clang-tidy-diff.py
DESTINATION share/clang
COMPONENT clang-tidy)
Modified: clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp Sun Sep 30 10:22:58 2018
@@ -534,10 +534,12 @@ extern volatile int ModernizeModuleAncho
static int LLVM_ATTRIBUTE_UNUSED ModernizeModuleAnchorDestination =
ModernizeModuleAnchorSource;
+#if CLANG_ENABLE_STATIC_ANALYZER
// This anchor is used to force the linker to link the MPIModule.
extern volatile int MPIModuleAnchorSource;
static int LLVM_ATTRIBUTE_UNUSED MPIModuleAnchorDestination =
MPIModuleAnchorSource;
+#endif
// This anchor is used to force the linker to link the PerformanceModule.
extern volatile int PerformanceModuleAnchorSource;
Modified: clang-tools-extra/trunk/docs/clang-tidy/index.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/index.rst?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/index.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/index.rst Sun Sep 30 10:22:58 2018
@@ -337,6 +337,10 @@ There are a few tools particularly usefu
* `clang-check`_ with the ``-ast-dump`` (and optionally ``-ast-dump-filter``)
provides a convenient way to dump AST of a C++ program.
+If CMake is configured with ``CLANG_ENABLE_STATIC_ANALYZER``,
+:program:`clang-tidy` will not be built with support for the
+``clang-analyzer-*`` checks or the ``mpi-*`` checks.
+
.. _AST Matchers: http://clang.llvm.org/docs/LibASTMatchers.html
.. _PPCallbacks: http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html
Modified: clang-tools-extra/trunk/test/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/CMakeLists.txt?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/test/CMakeLists.txt Sun Sep 30 10:22:58 2018
@@ -60,18 +60,14 @@ set(CLANG_TOOLS_TEST_DEPS
# Unit tests
ExtraToolsUnitTests
- )
-if(CLANG_ENABLE_STATIC_ANALYZER)
- list(APPEND CLANG_TOOLS_TEST_DEPS
- # For the clang-tidy libclang integration test.
- c-index-test
- # clang-tidy tests require it.
- clang-headers
+ # For the clang-tidy libclang integration test.
+ c-index-test
+ # clang-tidy tests require it.
+ clang-headers
- clang-tidy
- )
-endif()
+ clang-tidy
+ )
set(llvm_utils
FileCheck count not
Modified: clang-tools-extra/trunk/test/clang-tidy/enable-alpha-checks.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/enable-alpha-checks.cpp?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/enable-alpha-checks.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/enable-alpha-checks.cpp Sun Sep 30 10:22:58 2018
@@ -1,3 +1,5 @@
+// REQUIRES: static-analyzer
+
// Check if '-allow-enabling-analyzer-alpha-checkers' is visible for users.
// RUN: clang-tidy -help | not grep 'allow-enabling-analyzer-alpha-checkers'
Modified: clang-tools-extra/trunk/test/clang-tidy/mpi-buffer-deref.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/mpi-buffer-deref.cpp?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/mpi-buffer-deref.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/mpi-buffer-deref.cpp Sun Sep 30 10:22:58 2018
@@ -1,3 +1,4 @@
+// REQUIRES: static-analyzer
// RUN: %check_clang_tidy %s mpi-buffer-deref %t -- -- -I %S/Inputs/mpi-type-mismatch
#include "mpimock.h"
Modified: clang-tools-extra/trunk/test/clang-tidy/mpi-type-mismatch.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/mpi-type-mismatch.cpp?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/mpi-type-mismatch.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/mpi-type-mismatch.cpp Sun Sep 30 10:22:58 2018
@@ -1,3 +1,4 @@
+// REQUIRES: static-analyzer
// RUN: %check_clang_tidy %s mpi-type-mismatch %t -- -- -I %S/Inputs/mpi-type-mismatch
#include "mpimock.h"
Modified: clang-tools-extra/trunk/test/clang-tidy/nolint.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/nolint.cpp?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/nolint.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/nolint.cpp Sun Sep 30 10:22:58 2018
@@ -1,3 +1,4 @@
+// REQUIRES: static-analyzer
// RUN: %check_clang_tidy %s google-explicit-constructor,clang-diagnostic-unused-variable,clang-analyzer-core.UndefinedBinaryOperatorResult %t -- -extra-arg=-Wunused-variable -- -I%S/Inputs/nolint
#include "trigger_warning.h"
Modified: clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp Sun Sep 30 10:22:58 2018
@@ -1,3 +1,4 @@
+// REQUIRES: static-analyzer
// RUN: mkdir -p %T/read-file-config/
// RUN: cp %s %T/read-file-config/test.cpp
// RUN: echo 'Checks: "-*,modernize-use-nullptr"' > %T/read-file-config/.clang-tidy
Modified: clang-tools-extra/trunk/test/clang-tidy/static-analyzer-config.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/static-analyzer-config.cpp?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/static-analyzer-config.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/static-analyzer-config.cpp Sun Sep 30 10:22:58 2018
@@ -1,3 +1,4 @@
+// REQUIRES: static-analyzer
// RUN: clang-tidy %s -checks='-*,clang-analyzer-unix.Malloc' -config='{CheckOptions: [{ key: "clang-analyzer-unix.Malloc:Optimistic", value: true}]}' -- | FileCheck %s
typedef __typeof(sizeof(int)) size_t;
void *malloc(size_t);
Modified: clang-tools-extra/trunk/test/clang-tidy/static-analyzer.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/static-analyzer.cpp?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/static-analyzer.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/static-analyzer.cpp Sun Sep 30 10:22:58 2018
@@ -1,3 +1,4 @@
+// REQUIRES: static-analyzer
// RUN: clang-tidy %s -checks='-*,clang-analyzer-*' -- | FileCheck %s
extern void *malloc(unsigned long);
extern void free(void *);
Modified: clang-tools-extra/trunk/test/clang-tidy/temporaries.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/temporaries.cpp?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/temporaries.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/temporaries.cpp Sun Sep 30 10:22:58 2018
@@ -1,3 +1,4 @@
+// REQUIRES: static-analyzer
// RUN: clang-tidy -checks='-*,clang-analyzer-core.NullDereference' %s -- | FileCheck %s
struct NoReturnDtor {
Modified: clang-tools-extra/trunk/test/lit.cfg
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/lit.cfg?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/lit.cfg (original)
+++ clang-tools-extra/trunk/test/lit.cfg Sun Sep 30 10:22:58 2018
@@ -119,24 +119,22 @@ if platform.system() not in ['Windows']:
if config.clang_staticanalyzer:
config.available_features.add('static-analyzer')
- check_clang_tidy = os.path.join(
- config.test_source_root, "clang-tidy", "check_clang_tidy.py")
- config.substitutions.append(
- ('%check_clang_tidy',
- '%s %s' % (config.python_executable, check_clang_tidy)) )
- clang_tidy_diff = os.path.join(
- config.test_source_root, "..", "clang-tidy", "tool", "clang-tidy-diff.py")
- config.substitutions.append(
- ('%clang_tidy_diff',
- '%s %s' % (config.python_executable, clang_tidy_diff)) )
- run_clang_tidy = os.path.join(
- config.test_source_root, "..", "clang-tidy", "tool", "run-clang-tidy.py")
- config.substitutions.append(
- ('%run_clang_tidy',
- '%s %s' % (config.python_executable, run_clang_tidy)) )
-else:
- # exclude the clang-tidy test directory
- config.excludes.append('clang-tidy')
+
+check_clang_tidy = os.path.join(
+ config.test_source_root, "clang-tidy", "check_clang_tidy.py")
+config.substitutions.append(
+ ('%check_clang_tidy',
+ '%s %s' % (config.python_executable, check_clang_tidy)) )
+clang_tidy_diff = os.path.join(
+ config.test_source_root, "..", "clang-tidy", "tool", "clang-tidy-diff.py")
+config.substitutions.append(
+ ('%clang_tidy_diff',
+ '%s %s' % (config.python_executable, clang_tidy_diff)) )
+run_clang_tidy = os.path.join(
+ config.test_source_root, "..", "clang-tidy", "tool", "run-clang-tidy.py")
+config.substitutions.append(
+ ('%run_clang_tidy',
+ '%s %s' % (config.python_executable, run_clang_tidy)) )
clangd_benchmarks_dir = os.path.join(os.path.dirname(config.clang_tools_dir),
"tools", "clang", "tools", "extra",
Modified: clang-tools-extra/trunk/unittests/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/CMakeLists.txt?rev=343415&r1=343414&r2=343415&view=diff
==============================================================================
--- clang-tools-extra/trunk/unittests/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/unittests/CMakeLists.txt Sun Sep 30 10:22:58 2018
@@ -18,8 +18,6 @@ add_subdirectory(change-namespace)
add_subdirectory(clang-apply-replacements)
add_subdirectory(clang-move)
add_subdirectory(clang-query)
-if(CLANG_ENABLE_STATIC_ANALYZER)
- add_subdirectory(clang-tidy)
-endif()
+add_subdirectory(clang-tidy)
add_subdirectory(clangd)
add_subdirectory(include-fixer)
More information about the cfe-commits
mailing list