Skip to content

Commit 1458893

Browse files
henryjuclaudedorian-burihabwa-sonarsource
authored
SONARJAVA-6141 Save ncloc metric on test files (#5475)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Dorian Burihabwa <75226315+dorian-burihabwa-sonarsource@users.noreply.github.com>
1 parent 2c08124 commit 1458893

3 files changed

Lines changed: 22 additions & 2 deletions

File tree

its/plugin/tests/src/test/java/com/sonar/it/java/suite/Struts139Test.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ public void size_metrics() {
5959
String fileKey = componentKey("org/apache/struts/action/", "Action.java");
6060
assertThat(getMeasureAsInteger(fileKey, "files")).isEqualTo(1);
6161
assertThat(getMeasureAsInteger(PROJECT_STRUTS, "lines")).isEqualTo(65059);
62-
assertThat(getMeasureAsInteger(PROJECT_STRUTS, "ncloc")).isEqualTo(27577);
62+
assertThat(getMeasureAsInteger(PROJECT_STRUTS, "ncloc"))
63+
.isIn(27577, /*FIXME SONAR-27110 Can be removed when ITs will be run with SQS 2026.2+*/33231);
6364
// 208 getter/setter
6465
assertThat(getMeasureAsInteger(PROJECT_STRUTS, "functions")).isEqualTo(2730 + 208);
6566

java-frontend/src/main/java/org/sonar/java/Measurer.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,12 @@ public class TestFileMeasurer implements JavaFileScanner {
6464
@Override
6565
public void scanFile(JavaFileScannerContext context) {
6666
sonarFile = context.getInputFile();
67-
var metricsComputer = ((MetricsScannerContext)context).getMetricsComputer();
67+
var metricsComputer = ((MetricsScannerContext) context).getMetricsComputer();
6868
noSonarFilter.noSonarInFile(sonarFile, metricsComputer.getNoSonarLines(context.getTree()));
69+
if (isSonarLintContext()) {
70+
return;
71+
}
72+
saveMetricOnFile(CoreMetrics.NCLOC, metricsComputer.getLinesOfCode(context.getTree()));
6973
}
7074
}
7175

java-frontend/src/test/java/org/sonar/java/MeasurerTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,21 @@ void verify_ncloc_metric() {
8989
checkMetric("EmptyFile.java", "ncloc", 0);
9090
}
9191

92+
@Test
93+
void verify_ncloc_metric_on_test_file() {
94+
String relativePath = PathUtils.sanitize(new File(BASE_DIR, "LinesOfCode.java").getPath());
95+
InputFile inputFile = TestUtils.inputFile("", new File(relativePath), InputFile.Type.TEST);
96+
context.fileSystem().add(inputFile);
97+
98+
Measurer measurer = new Measurer(context, mock(NoSonarFilter.class));
99+
JavaFrontend frontend = new JavaFrontend(new JavaVersionImpl(), mockSonarComponents(), measurer, new NoOpTelemetry(), null, null);
100+
101+
frontend.scan(Collections.emptyList(), Collections.singletonList(inputFile), Collections.emptyList());
102+
103+
assertThat(context.measures(inputFile.key())).hasSize(1);
104+
assertThat(context.measure(inputFile.key(), "ncloc").value()).isEqualTo(2);
105+
}
106+
92107
/**
93108
* Utility method to quickly get metric out of a file.
94109
*/

0 commit comments

Comments
 (0)