9 #include "../ClangTidy.h" 10 #include "../ClangTidyDiagnosticConsumer.h" 11 #include "../ClangTidyForceLinker.h" 12 #include "../ClangTidyModule.h" 13 #include "clang/Frontend/CompilerInstance.h" 14 #include "clang/Frontend/FrontendPluginRegistry.h" 15 #include "clang/Frontend/MultiplexConsumer.h" 27 std::unique_ptr<ClangTidyContext> Context;
28 std::unique_ptr<DiagnosticsEngine> DiagEngine;
31 WrapConsumer(std::unique_ptr<ClangTidyContext> Context,
32 std::unique_ptr<DiagnosticsEngine> DiagEngine,
33 std::vector<std::unique_ptr<ASTConsumer>> Consumer)
35 DiagEngine(std::move(DiagEngine)) {}
40 StringRef File)
override {
42 auto ExternalDiagEngine = &Compiler.getDiagnostics();
45 auto DiagEngine = llvm::make_unique<DiagnosticsEngine>(
47 Context->setDiagnosticsEngine(DiagEngine.get());
51 std::vector<std::unique_ptr<ASTConsumer>> Vec;
54 return llvm::make_unique<WrapConsumer>(
55 std::move(Context), std::move(DiagEngine), std::move(Vec));
59 const std::vector<std::string> &Args)
override {
66 for (StringRef Arg : Args)
67 if (Arg.startswith(
"-checks="))
68 OverrideOptions.
Checks = Arg.substr(strlen(
"-checks="));
70 auto Options = llvm::make_unique<FileOptionsProvider>(
71 GlobalOptions, DefaultOptions, OverrideOptions);
72 Context = llvm::make_unique<ClangTidyContext>(std::move(Options));
77 std::unique_ptr<ClangTidyContext> Context;
86 static clang::FrontendPluginRegistry::Add<clang::tidy::ClangTidyPluginAction>
87 X(
"clang-tidy",
"clang-tidy");
llvm::Optional< std::string > Checks
Checks filter.
bool ParseArgs(const CompilerInstance &, const std::vector< std::string > &Args) override
Contains options for clang-tidy.
volatile int ClangTidyPluginAnchorSource
static ClangTidyModuleRegistry::Add< bugprone::BugproneModule > X("bugprone-module", "Adds checks for bugprone code constructs.")
A diagnostic consumer that turns each Diagnostic into a SourceManager-independent ClangTidyError...
===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//
std::unique_ptr< clang::ASTConsumer > CreateASTConsumer(clang::CompilerInstance &Compiler, StringRef File)
Returns an ASTConsumer that runs the specified clang-tidy checks.
IgnoreDiagnostics DiagConsumer
The core clang tidy plugin action.
std::unique_ptr< ASTConsumer > CreateASTConsumer(CompilerInstance &Compiler, StringRef File) override