diff options
author | Abraham Corea Diaz <abrahamcd@google.com> | 2022-08-26 18:31:38 +0000 |
---|---|---|
committer | Christopher Di Bella <cjdb@google.com> | 2022-08-26 18:49:29 +0000 |
commit | 82e893c47c77430ca59f92d7a814a336e3873a35 (patch) | |
tree | 7cbf70b06ba58685ddb67947eb0c5e7e990d69a1 /clang/lib/Frontend/CompilerInstance.cpp | |
parent | 47166968db5c5c677bda996e0c5e40e94d8ef09f (diff) | |
download | llvm-82e893c47c77430ca59f92d7a814a336e3873a35.zip llvm-82e893c47c77430ca59f92d7a814a336e3873a35.tar.gz llvm-82e893c47c77430ca59f92d7a814a336e3873a35.tar.bz2 |
[clang] Enable output of SARIF diagnostics
Enables Clang to emit diagnostics in SARIF format when
`-fdiagnostics-format=sarif`. Adds a new DiagnosticConsumer named
SARIFDiagnosticPrinter and a new DiagnosticRenderer named SARIFDiagnostic
to constuct and emit a SARIF object containing the run's basic diagnostic info.
Reviewed By: cjdb, denik, aaron.ballman
Differential Revision: https://reviews.llvm.org/D131632
Diffstat (limited to 'clang/lib/Frontend/CompilerInstance.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInstance.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp index c44ee00..b187bdc 100644 --- a/clang/lib/Frontend/CompilerInstance.cpp +++ b/clang/lib/Frontend/CompilerInstance.cpp @@ -12,6 +12,7 @@ #include "clang/AST/Decl.h" #include "clang/Basic/CharInfo.h" #include "clang/Basic/Diagnostic.h" +#include "clang/Basic/DiagnosticOptions.h" #include "clang/Basic/FileManager.h" #include "clang/Basic/LangStandard.h" #include "clang/Basic/SourceManager.h" @@ -25,6 +26,7 @@ #include "clang/Frontend/FrontendDiagnostic.h" #include "clang/Frontend/FrontendPluginRegistry.h" #include "clang/Frontend/LogDiagnosticPrinter.h" +#include "clang/Frontend/SARIFDiagnosticPrinter.h" #include "clang/Frontend/SerializedDiagnosticPrinter.h" #include "clang/Frontend/TextDiagnosticPrinter.h" #include "clang/Frontend/Utils.h" @@ -346,6 +348,8 @@ CompilerInstance::createDiagnostics(DiagnosticOptions *Opts, // implementing -verify. if (Client) { Diags->setClient(Client, ShouldOwnClient); + } else if (Opts->getFormat() == DiagnosticOptions::SARIF) { + Diags->setClient(new SARIFDiagnosticPrinter(llvm::errs(), Opts)); } else Diags->setClient(new TextDiagnosticPrinter(llvm::errs(), Opts)); |