================
@@ -652,6 +659,18 @@ int clangTidyMain(int argc, const char **argv) {
FileName = PathList.front();
const SmallString<256> FilePath = makeAbsolute(FileName);
+
+ std::unique_ptr<llvm::raw_fd_ostream> SarifOS;
+ if (!ExportSarif.empty()) {
+ std::error_code EC;
+ SarifOS = std::make_unique<llvm::raw_fd_ostream>(ExportSarif, EC,
----------------
zeyi2 wrote:
When `ExportSarif == "-"`, this stream writes the SARIF document to stdout, but
`ErrorReporter` also emits the regular text diagnostics through
`TextDiagnosticPrinter(llvm::outs())`. This could lead to invalid JSON:
```
./build/bin/clang-tidy
clang-tools-extra/test/clang-tidy/infrastructure/quiet-flag.cpp
'-checks=-*,readability-magic-numbers,clang-diagnostic-sign-compare'
-export-sarif - -- -Wsign-compare > stdout.txt 2> stderr.txt
(head of stdout.txt)
projects/llvm-project-review/clang-tools-extra/test/clang-tidy/infrastructure/quiet-flag.cpp:23:11:
warning: 42 is a magic number; consider replacing it with a named constant
[readability-magic-numbers]
23 | int x = 42; // trigger 'readability-magic-numbers' with caret: ^
| ^
projects/llvm-project-review/clang-tools-extra/test/clang-tidy/infrastructure/quiet-flag.cpp:25:12:
warning: comparison of integers of different signs: 'int' and 'unsigned int'
[clang-diagnostic-sign-compare]
25 | return x < y; // trigger 'clang-diagnostic-sign-compare' with caret: ^
| ~ ^ ~
{
"$schema":
"https://docs.oasis-open.org/sarif/sarif/v2.1.0/cos02/schemas/sarif-schema-2.1.0.json",
"runs": [
{
"artifacts": [
{
```
We probably need to suppress or redirect the text diagnostics when SARIF owns
stdout (or reject `-`).
https://github.com/llvm/llvm-project/pull/219182
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits