Summary:
This patch applies a change similar to rC363069, but for SARIF files.
The `%diff_sarif` lit substitution invokes `diff` with a non-portable
`-I` option. The intended effect can be achieved by normalizing the
inputs to `diff` beforehand. Such normalization can be done with
`grep -Ev`, which is also used by other tests.
Additionally, this patch updates the SARIF output to have a newline at
the end of the file. This makes it so that the SARIF file qualifies as a
POSIX text file, which increases the consumability of the generated file
in relation to various tools.
Reviewers: NoQ, sfertile, xingxue, jasonliu, daltenty, aaron.ballman
Reviewed By: aaron.ballman
Subscribers: xazax.hun, baloghadamsoftware, szepet, a.sidorin, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, Charusso, jsji, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D62952
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@363822
91177308-0d34-0410-b5e6-
96231b3b80d8
"http://json.schemastore.org/sarif-2.0.0-csd.2.beta.2018-11-28"},
{"version", "2.0.0-csd.2.beta.2018-11-28"},
{"runs", json::Array{createRun(Diags)}}};
- OS << llvm::formatv("{0:2}", json::Value(std::move(Sarif)));
+ OS << llvm::formatv("{0:2}\n", json::Value(std::move(Sarif)));
}
{
"fileLocation": {
},
- "length": 415,
+ "length": 434,
"mimeType": "text/plain",
"roles": [
"resultFile"
{
"fileLocation": {
},
- "length": 667,
+ "length": 686,
"mimeType": "text/plain",
"roles": [
"resultFile"
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify -analyzer-output=sarif -o - | %diff_sarif %S/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif -
+// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify -analyzer-output=sarif -o - | %normalize_sarif | diff -U1 -b %S/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif -
#include "../Inputs/system-header-simulator.h"
int atoi(const char *nptr);
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.security.taint,debug.TaintTest %s -verify -analyzer-output=sarif -o - | %diff_sarif %S/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif -
+// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.security.taint,debug.TaintTest %s -verify -analyzer-output=sarif -o - | %normalize_sarif | diff -U1 -b %S/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif -
#include "../Inputs/system-header-simulator.h"
int atoi(const char *nptr);
'^[[:space:]]*<string>/.*</string>[[:space:]]*$',
'^[[:space:]]*<string>.:.*</string>[[:space:]]*$')))
-# Diff command for testing SARIF output to reference output.
-config.substitutions.append(('%diff_sarif',
- '''diff -U1 -w -I ".*file:.*%basename_t" -I '"version":' -I "2\.0\.0\-csd\.[0-9]*\.beta\."'''))
+# Filtering command for testing SARIF output against reference output.
+config.substitutions.append(('%normalize_sarif',
+ "grep -Ev '^[[:space:]]*(%s|%s|%s)[[:space:]]*$'" %
+ ('"uri": "file:.*%basename_t"',
+ '"version": ".* version .*"',
+ '"version": "2\.0\.0-csd\.[0-9]*\.beta\.[0-9-]{10}"')))
if not config.root.clang_staticanalyzer:
config.unsupported = True