summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Ranieri <jranieri@grammatech.com>2019-08-27 13:49:45 +0000
committerJoe Ranieri <jranieri@grammatech.com>2019-08-27 13:49:45 +0000
commit68a6a28ef835d121b9673e4ca08c38f221d3aee7 (patch)
tree7bea4d7967453eaf25299944b28261e856850cef
parent99178faf59dae4391b0e01289ccf610151628c2e (diff)
downloadbcm5719-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
-rw-r--r--clang/lib/StaticAnalyzer/Core/SarifDiagnostics.cpp12
-rw-r--r--clang/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif6
-rw-r--r--clang/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif19
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
}
OpenPOWER on IntegriCloud