Skip to content

Commit

Permalink
Implement fix
Browse files Browse the repository at this point in the history
  • Loading branch information
costin-zaharia-sonarsource committed May 17, 2024
1 parent 698da35 commit 57b9c6b
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
import java.util.HashSet;

import java.util.function.UnaryOperator;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.batch.measure.Metric;
import org.sonar.api.batch.sensor.SensorContext;
Expand All @@ -40,6 +43,7 @@ public class MetricsImporter extends ProtobufImporter<MetricsInfo> {
private final SensorContext context;
private final FileLinesContextFactory fileLinesContextFactory;
private final NoSonarFilter noSonarFilter;
private static final Logger LOG = LoggerFactory.getLogger(MetricsImporter.class);

public MetricsImporter(SensorContext context, FileLinesContextFactory fileLinesContextFactory, NoSonarFilter noSonarFilter,
UnaryOperator<String> toRealPath) {
Expand All @@ -62,8 +66,13 @@ void consumeFor(InputFile inputFile, MetricsInfo message) {

saveMetric(context, inputFile, CoreMetrics.COMMENT_LINES, message.getNonBlankCommentCount());

int lineCount = inputFile.lines();
for (int line : message.getCodeLineList()) {
fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, 1);
if (line <= lineCount) {
fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, 1);
} else if (LOG.isDebugEnabled()) {
LOG.debug("The code line number was out of the range. File {}, Line {}", inputFile.filename(), line);
}
}
saveMetric(context, inputFile, CoreMetrics.NCLOC, message.getCodeLineCount());

Expand All @@ -72,7 +81,7 @@ void consumeFor(InputFile inputFile, MetricsInfo message) {
}

for (Integer executableLineNumber : message.getExecutableLinesList()) {
fileLinesContext.setIntValue(CoreMetrics.EXECUTABLE_LINES_DATA_KEY, executableLineNumber, 1);
fileLinesContext.setIntValue(CoreMetrics.EXECUTABLE_LINES_DATA_KEY, executableLineNumber, 1);
}

fileLinesContext.save();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.assertj.core.groups.Tuple;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.event.Level;
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.issue.NoSonarFilter;
import org.sonar.api.measures.CoreMetrics;
Expand Down Expand Up @@ -82,6 +83,7 @@ public void roslyn_metrics_are_imported() {
verify(fileLinesContext, times(2)).setIntValue(CoreMetrics.NCLOC_DATA_KEY, 3, 1);
verify(fileLinesContext, times(2)).setIntValue(CoreMetrics.NCLOC_DATA_KEY, 5, 1);
verify(fileLinesContext, times(2)).setIntValue(CoreMetrics.NCLOC_DATA_KEY, 5, 1);

verify(fileLinesContext).setIntValue(CoreMetrics.NCLOC_DATA_KEY, 8, 1);
verify(fileLinesContext).setIntValue(CoreMetrics.NCLOC_DATA_KEY, 9, 1);
verify(fileLinesContext).setIntValue(CoreMetrics.NCLOC_DATA_KEY, 13, 1);
Expand All @@ -93,5 +95,7 @@ public void roslyn_metrics_are_imported() {
verify(fileLinesContext).setIntValue(CoreMetrics.NCLOC_DATA_KEY, 23, 1);
verify(fileLinesContext).setIntValue(CoreMetrics.NCLOC_DATA_KEY, 24, 1);
verify(fileLinesContext).setIntValue(CoreMetrics.NCLOC_DATA_KEY, 25, 1);

assertThat(logTester.logs(Level.DEBUG)).containsExactly("The code line number was out of the range. File Page.razor, Line 4");
}
}

0 comments on commit 57b9c6b

Please sign in to comment.