diff options
author | Joe Ranieri <jranieri@grammatech.com> | 2019-08-27 13:49:45 +0000 |
---|---|---|
committer | Joe Ranieri <jranieri@grammatech.com> | 2019-08-27 13:49:45 +0000 |
commit | 68a6a28ef835d121b9673e4ca08c38f221d3aee7 (patch) | |
tree | 7bea4d7967453eaf25299944b28261e856850cef /clang | |
parent | 99178faf59dae4391b0e01289ccf610151628c2e (diff) | |
download | bcm5719-llvm-68a6a28ef835d121b9673e4ca08c38f221d3aee7.tar.gz bcm5719-llvm-68a6a28ef835d121b9673e4ca08c38f221d3aee7.zip |
Fix text range end columns in SARIF to be exclusive
According to the SARIF specification, "a text region does not include the character specified by endColumn".
Differential Revision: https://reviews.llvm.org/D65206
llvm-svn: 370060
Diffstat (limited to 'clang')
3 files changed, 20 insertions, 17 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/SarifDiagnostics.cpp b/clang/lib/StaticAnalyzer/Core/SarifDiagnostics.cpp index f4e85b3fa8f..3b4667765c2 100644 --- a/clang/lib/StaticAnalyzer/Core/SarifDiagnostics.cpp +++ b/clang/lib/StaticAnalyzer/Core/SarifDiagnostics.cpp @@ -143,11 +143,17 @@ static json::Object createFileLocation(const FileEntry &FE, } static json::Object createTextRegion(SourceRange R, const SourceManager &SM) { - return json::Object{ + json::Object Region{ {"startLine", SM.getExpansionLineNumber(R.getBegin())}, - {"endLine", SM.getExpansionLineNumber(R.getEnd())}, {"startColumn", SM.getExpansionColumnNumber(R.getBegin())}, - {"endColumn", SM.getExpansionColumnNumber(R.getEnd())}}; + }; + if (R.getBegin() == R.getEnd()) { + Region["endColumn"] = SM.getExpansionColumnNumber(R.getBegin()); + } else { + Region["endLine"] = SM.getExpansionLineNumber(R.getEnd()); + Region["endColumn"] = SM.getExpansionColumnNumber(R.getEnd()) + 1; + } + return Region; } static json::Object createPhysicalLocation(SourceRange R, const FileEntry &FE, diff --git a/clang/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif b/clang/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif index cebc817dec6..a8b445b024a 100644 --- a/clang/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif +++ b/clang/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif @@ -44,7 +44,7 @@ "fileIndex": 0, }, "region": { - "endColumn": 5, + "endColumn": 6, "endLine": 13, "startColumn": 3, "startLine": 13 @@ -63,7 +63,7 @@ "fileIndex": 0, }, "region": { - "endColumn": 17, + "endColumn": 18, "endLine": 9, "startColumn": 11, "startLine": 9 @@ -83,7 +83,7 @@ "fileIndex": 0, }, "region": { - "endColumn": 17, + "endColumn": 18, "endLine": 9, "startColumn": 11, "startLine": 9 diff --git a/clang/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif b/clang/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif index f1527d4105d..41a7c062447 100644 --- a/clang/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif +++ b/clang/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif @@ -64,7 +64,7 @@ "fileIndex": 0, }, "region": { - "endColumn": 5, + "endColumn": 6, "endLine": 24, "startColumn": 3, "startLine": 24 @@ -83,7 +83,7 @@ "fileIndex": 0, }, "region": { - "endColumn": 17, + "endColumn": 18, "endLine": 9, "startColumn": 11, "startLine": 9 @@ -103,7 +103,7 @@ "fileIndex": 0, }, "region": { - "endColumn": 17, + "endColumn": 18, "endLine": 9, "startColumn": 11, "startLine": 9 @@ -134,7 +134,7 @@ "fileIndex": 0, }, "region": { - "endColumn": 5, + "endColumn": 6, "endLine": 25, "startColumn": 3, "startLine": 25 @@ -153,7 +153,7 @@ "fileIndex": 0, }, "region": { - "endColumn": 10, + "endColumn": 11, "endLine": 13, "startColumn": 3, "startLine": 13 @@ -172,7 +172,7 @@ "fileIndex": 0, }, "region": { - "endColumn": 8, + "endColumn": 9, "endLine": 14, "startColumn": 3, "startLine": 14 @@ -192,7 +192,7 @@ "fileIndex": 0, }, "region": { - "endColumn": 8, + "endColumn": 9, "endLine": 14, "startColumn": 3, "startLine": 14 @@ -223,7 +223,7 @@ "fileIndex": 0, }, "region": { - "endColumn": 12, + "endColumn": 13, "endLine": 18, "startColumn": 7, "startLine": 18 @@ -243,7 +243,6 @@ }, "region": { "endColumn": 3, - "endLine": 18, "startColumn": 3, "startLine": 18 } @@ -262,7 +261,6 @@ }, "region": { "endColumn": 14, - "endLine": 19, "startColumn": 14, "startLine": 19 } @@ -282,7 +280,6 @@ }, "region": { "endColumn": 14, - "endLine": 19, "startColumn": 14, "startLine": 19 } |