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) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits