]> source.dussan.org Git - sonarqube.git/commitdiff
fixup! SONAR-11741 fix NPE when importing issues from external report
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 20 Feb 2019 09:45:46 +0000 (10:45 +0100)
committerSonarTech <sonartech@sonarsource.com>
Fri, 22 Feb 2019 19:21:10 +0000 (20:21 +0100)
sonar-scanner-engine/src/main/java/org/sonar/scanner/externalissue/ExternalIssueImporter.java
sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/ReportParserTest.java

index 468648a3235e816168f1e86799f85d4268cae8df..f4ff8a26d1618a65c36b69cb0e9b5f90dc4c281b 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.sonar.scanner.externalissue;
 
+import com.google.common.base.MoreObjects;
 import java.util.LinkedHashSet;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -108,41 +109,34 @@ public class ExternalIssueImporter {
   @CheckForNull
   private static NewIssueLocation fillLocation(SensorContext context, NewIssueLocation newLocation, Location location) {
     InputFile file = findFile(context, location.filePath);
-    if (file != null) {
-      newLocation
-        .on(file);
+    if (file == null) {
+      return null;
+    }
+    newLocation.on(file);
 
-      if (location.message != null) {
-        newLocation.message(location.message);
-      }
+    if (location.message != null) {
+      newLocation.message(location.message);
+    }
 
-      if (location.textRange != null) {
-        if (location.textRange.startColumn != null) {
-          TextPointer start = file.newPointer(location.textRange.startLine, location.textRange.startColumn);
-          int endLine;
-          int endColumn;
-
-          if (location.textRange.endLine == null) {
-            // assume it's on a single line
-            endLine = location.textRange.startLine;
-          } else {
-            endLine = location.textRange.endLine;
-          }
-          if (location.textRange.endColumn == null) {
-            // assume it's until the last character of the end line
-            endColumn = file.selectLine(endLine).end().lineOffset();
-          } else {
-            endColumn = location.textRange.endColumn;
-          }
-          TextPointer end = file.newPointer(endLine, endColumn);
-          newLocation.at(file.newRange(start, end));
+    if (location.textRange != null) {
+      if (location.textRange.startColumn != null) {
+        TextPointer start = file.newPointer(location.textRange.startLine, location.textRange.startColumn);
+        int endLine = MoreObjects.firstNonNull(location.textRange.endLine, location.textRange.startLine);
+        int endColumn;
+
+        if (location.textRange.endColumn == null) {
+          // assume it's until the last character of the end line
+          endColumn = file.selectLine(endLine).end().lineOffset();
         } else {
-          newLocation.at(file.selectLine(location.textRange.startLine));
+          endColumn = location.textRange.endColumn;
         }
+        TextPointer end = file.newPointer(endLine, endColumn);
+        newLocation.at(file.newRange(start, end));
+      } else {
+        newLocation.at(file.selectLine(location.textRange.startLine));
       }
-      return newLocation;
     }
-    return null;
+    return newLocation;
   }
 
   @CheckForNull
index 152d38002dc8ffd6406ca5392e728ea69e3b83cb..712ac425881723721db8c96461076680aa362a9f 100644 (file)
@@ -36,7 +36,6 @@ public class ReportParserTest {
   public void parse_sample() {
     ReportParser parser = new ReportParser(Paths.get("src/test/resources/org/sonar/scanner/externalissue/report.json"));
 
-    System.out.println(Paths.get("org/sonar/scanner/externalissue/report.json").toAbsolutePath());
     Report report = parser.parse();
 
     assertThat(report.issues).hasSize(4);