From: Simon Brandhof Date: Wed, 20 Feb 2019 09:45:46 +0000 (+0100) Subject: fixup! SONAR-11741 fix NPE when importing issues from external report X-Git-Tag: 7.7~128 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=6f593749e3a6ecd3b01c761692e4e15167ec88ba;p=sonarqube.git fixup! SONAR-11741 fix NPE when importing issues from external report --- diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/externalissue/ExternalIssueImporter.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/externalissue/ExternalIssueImporter.java index 468648a3235..f4ff8a26d16 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/externalissue/ExternalIssueImporter.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/externalissue/ExternalIssueImporter.java @@ -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 diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/ReportParserTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/ReportParserTest.java index 152d38002dc..712ac425881 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/ReportParserTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/ReportParserTest.java @@ -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);