mirror of
https://github.com/opnsense/src.git
synced 2026-02-21 17:00:58 -05:00
100 lines
2.9 KiB
C++
100 lines
2.9 KiB
C++
//===--- AnalysisConsumer.h - Front-end Analysis Engine Hooks ---*- C++ -*-===//
|
|
//
|
|
// 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.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_CLANG_FRONTEND_ANALYSISCONSUMER_H
|
|
#define LLVM_CLANG_FRONTEND_ANALYSISCONSUMER_H
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace clang {
|
|
class ASTConsumer;
|
|
class Diagnostic;
|
|
class Preprocessor;
|
|
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
|
|
};
|
|
|
|
class AnalyzerOptions {
|
|
public:
|
|
std::vector<Analyses> AnalysisList;
|
|
AnalysisStores AnalysisStoreOpt;
|
|
AnalysisConstraints AnalysisConstraintsOpt;
|
|
AnalysisDiagClients AnalysisDiagOpt;
|
|
std::string AnalyzeSpecificFunction;
|
|
unsigned AnalyzeAll : 1;
|
|
unsigned AnalyzerDisplayProgress : 1;
|
|
unsigned AnalyzeNestedBlocks : 1;
|
|
unsigned EagerlyAssume : 1;
|
|
unsigned PurgeDead : 1;
|
|
unsigned TrimGraph : 1;
|
|
unsigned VisualizeEGDot : 1;
|
|
unsigned VisualizeEGUbi : 1;
|
|
unsigned EnableExperimentalChecks : 1;
|
|
unsigned EnableExperimentalInternalChecks : 1;
|
|
public:
|
|
AnalyzerOptions() {
|
|
AnalysisStoreOpt = BasicStoreModel;
|
|
AnalysisConstraintsOpt = RangeConstraintsModel;
|
|
AnalysisDiagOpt = PD_HTML;
|
|
AnalyzeAll = 0;
|
|
AnalyzerDisplayProgress = 0;
|
|
AnalyzeNestedBlocks = 0;
|
|
EagerlyAssume = 0;
|
|
PurgeDead = 1;
|
|
TrimGraph = 0;
|
|
VisualizeEGDot = 0;
|
|
VisualizeEGUbi = 0;
|
|
EnableExperimentalChecks = 0;
|
|
EnableExperimentalInternalChecks = 0;
|
|
}
|
|
};
|
|
|
|
/// CreateAnalysisConsumer - Creates an ASTConsumer to run various code
|
|
/// analysis passes. (The set of analyses run is controlled by command-line
|
|
/// options.)
|
|
ASTConsumer* CreateAnalysisConsumer(const Preprocessor &pp,
|
|
const std::string &output,
|
|
const AnalyzerOptions& Opts);
|
|
|
|
}
|
|
|
|
#endif
|