//===--- AnalysisConsumer.h - Front-end hooks for the analysis engine------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This header contains the functions necessary for a front-end to run various // analyses. // //===----------------------------------------------------------------------===// #include #include namespace clang { class ASTConsumer; class Diagnostic; class Preprocessor; class PreprocessorFactory; class LangOptions; /// Analysis - Set of available source code analyses. enum Analyses { #define ANALYSIS(NAME, CMDFLAG, DESC, SCOPE) NAME, #include "clang/Frontend/Analyses.def" NumAnalyses }; /// AnalysisStores - Set of available analysis store models. enum AnalysisStores { #define ANALYSIS_STORE(NAME, CMDFLAG, DESC, CREATFN) NAME##Model, #include "clang/Frontend/Analyses.def" NumStores }; /// AnalysisConstraints - Set of available constraint models. enum AnalysisConstraints { #define ANALYSIS_CONSTRAINTS(NAME, CMDFLAG, DESC, CREATFN) NAME##Model, #include "clang/Frontend/Analyses.def" NumConstraints }; /// AnalysisDiagClients - Set of available diagnostic clients for rendering /// analysis results. enum AnalysisDiagClients { #define ANALYSIS_DIAGNOSTICS(NAME, CMDFLAG, DESC, CREATFN, AUTOCREAT) PD_##NAME, #include "clang/Frontend/Analyses.def" NUM_ANALYSIS_DIAG_CLIENTS }; struct AnalyzerOptions { std::vector AnalysisList; AnalysisStores AnalysisStoreOpt; AnalysisConstraints AnalysisConstraintsOpt; AnalysisDiagClients AnalysisDiagOpt; bool VisualizeEGDot; bool VisualizeEGUbi; bool AnalyzeAll; bool AnalyzerDisplayProgress; bool PurgeDead; bool EagerlyAssume; std::string AnalyzeSpecificFunction; bool TrimGraph; }; /// CreateAnalysisConsumer - Creates an ASTConsumer to run various code /// analysis passes. (The set of analyses run is controlled by command-line /// options.) ASTConsumer* CreateAnalysisConsumer(Diagnostic &diags, Preprocessor *pp, PreprocessorFactory *ppf, const LangOptions &lopts, const std::string &output, const AnalyzerOptions& Opts); }