diff options
Diffstat (limited to 'clang-tools-extra')
-rw-r--r-- | clang-tools-extra/clang-tidy/ClangTidy.cpp | 26 | ||||
-rw-r--r-- | clang-tools-extra/clang-tidy/ClangTidyModule.h | 1 |
2 files changed, 17 insertions, 10 deletions
diff --git a/clang-tools-extra/clang-tidy/ClangTidy.cpp b/clang-tools-extra/clang-tidy/ClangTidy.cpp index aec2d98a2f7..6b5a4144f24 100644 --- a/clang-tools-extra/clang-tidy/ClangTidy.cpp +++ b/clang-tools-extra/clang-tidy/ClangTidy.cpp @@ -152,18 +152,24 @@ clang::ASTConsumer *ClangTidyASTConsumerFactory::CreateASTConsumer( I != E; ++I) (*I)->registerPPCallbacks(Compiler); + SmallVector<ASTConsumer *, 2> Consumers; + if (CheckFactories->empty()) + Consumers.push_back(Finder.newASTConsumer()); + AnalyzerOptionsRef Options = Compiler.getAnalyzerOpts(); Options->CheckersControlList = getCheckersControlList(); - Options->AnalysisStoreOpt = RegionStoreModel; - Options->AnalysisDiagOpt = PD_NONE; - Options->AnalyzeNestedBlocks = true; - Options->eagerlyAssumeBinOpBifurcation = true; - ento::AnalysisASTConsumer *AnalysisConsumer = ento::CreateAnalysisConsumer( - Compiler.getPreprocessor(), Compiler.getFrontendOpts().OutputFile, - Options, Compiler.getFrontendOpts().Plugins); - AnalysisConsumer->AddDiagnosticConsumer( - new AnalyzerDiagnosticConsumer(Context)); - ASTConsumer *Consumers[] = { Finder.newASTConsumer(), AnalysisConsumer }; + if (!Options->CheckersControlList.empty()) { + Options->AnalysisStoreOpt = RegionStoreModel; + Options->AnalysisDiagOpt = PD_NONE; + Options->AnalyzeNestedBlocks = true; + Options->eagerlyAssumeBinOpBifurcation = true; + ento::AnalysisASTConsumer *AnalysisConsumer = ento::CreateAnalysisConsumer( + Compiler.getPreprocessor(), Compiler.getFrontendOpts().OutputFile, + Options, Compiler.getFrontendOpts().Plugins); + AnalysisConsumer->AddDiagnosticConsumer( + new AnalyzerDiagnosticConsumer(Context)); + Consumers.push_back(AnalysisConsumer); + } return new MultiplexConsumer(Consumers); } diff --git a/clang-tools-extra/clang-tidy/ClangTidyModule.h b/clang-tools-extra/clang-tidy/ClangTidyModule.h index 830cbd5b15c..47a69331314 100644 --- a/clang-tools-extra/clang-tidy/ClangTidyModule.h +++ b/clang-tools-extra/clang-tidy/ClangTidyModule.h @@ -90,6 +90,7 @@ public: typedef std::map<std::string, CheckFactoryBase *> FactoryMap; FactoryMap::const_iterator begin() const { return Factories.begin(); } FactoryMap::const_iterator end() const { return Factories.end(); } + bool empty() const { return Factories.empty(); } private: FactoryMap Factories; |