*/
package org.sonar.scanner.externalissue;
+import com.google.common.base.MoreObjects;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.stream.Collectors;
@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