[analyzer] SARIF: Add EOF newline; replace diff_sarif
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 llvm-svn: 363822
This commit is contained in:
parent
f2ffa7320e
commit
64b60df99f
|
@ -345,5 +345,5 @@ void SarifDiagnostics::FlushDiagnosticsImpl(
|
|||
"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)));
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
{
|
||||
"fileLocation": {
|
||||
},
|
||||
"length": 415,
|
||||
"length": 434,
|
||||
"mimeType": "text/plain",
|
||||
"roles": [
|
||||
"resultFile"
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
{
|
||||
"fileLocation": {
|
||||
},
|
||||
"length": 667,
|
||||
"length": 686,
|
||||
"mimeType": "text/plain",
|
||||
"roles": [
|
||||
"resultFile"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// 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);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// 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);
|
||||
|
|
|
@ -17,9 +17,12 @@ config.substitutions.append(('%normalize_plist',
|
|||
'^[[: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
|
||||
|
|
Loading…
Reference in New Issue