aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2019-01-11 11:02:36 +0100
committersonartech <sonartech@sonarsource.com>2019-01-16 09:43:12 +0100
commite4debe10e44e22f43b00357692eeaae1e13ec32e (patch)
tree632a5eef415be3058745741637e2dafdd3d98e98 /server
parent48459e1f797c63fac0e299158ecf651c57b62709 (diff)
downloadsonarqube-e4debe10e44e22f43b00357692eeaae1e13ec32e.tar.gz
sonarqube-e4debe10e44e22f43b00357692eeaae1e13ec32e.zip
SONAR-11463 Fix directories metric computation
Diffstat (limited to 'server')
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/SizeMeasuresStep.java18
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ReportSizeMeasuresStepTest.java54
2 files changed, 53 insertions, 19 deletions
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/SizeMeasuresStep.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/SizeMeasuresStep.java
index a9b791a64d6..54dca2c7237 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/SizeMeasuresStep.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/SizeMeasuresStep.java
@@ -108,15 +108,21 @@ public class SizeMeasuresStep implements ComputationStep {
@Override
public void visitDirectory(Component directory, Path<Counter> path) {
- int fileCount = path.current().files;
- if (fileCount > 0) {
- measureRepository.add(directory, directoryMetric, newMeasureBuilder().create(1));
- measureRepository.add(directory, fileMetric, newMeasureBuilder().create(fileCount));
- measureRepository.add(directory, linesMetric, newMeasureBuilder().create(path.current().lines));
+ int mainfileCount = path.current().files;
+ path.parent().directories += path.current().directories;
+ if (mainfileCount > 0 || path.current().directories > 0) {
path.parent().directories += 1;
- path.parent().files += fileCount;
+ }
+ if (mainfileCount > 0) {
+ measureRepository.add(directory, fileMetric, newMeasureBuilder().create(mainfileCount));
+ measureRepository.add(directory, linesMetric, newMeasureBuilder().create(path.current().lines));
+ path.parent().files += mainfileCount;
path.parent().lines += path.current().lines;
}
+ int mainDirectoryCount = path.current().directories;
+ if (mainDirectoryCount > 0) {
+ measureRepository.add(directory, directoryMetric, newMeasureBuilder().create(mainDirectoryCount));
+ }
}
private void createMeasures(Component directory, Counter counter) {
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ReportSizeMeasuresStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ReportSizeMeasuresStepTest.java
index 7a629d17d30..3c528f849cf 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ReportSizeMeasuresStepTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ReportSizeMeasuresStepTest.java
@@ -58,11 +58,18 @@ public class ReportSizeMeasuresStepTest {
private static final int DIRECTORY_1_REF = 1234;
private static final int DIRECTORY_2_REF = 1235;
private static final int DIRECTORY_3_REF = 1236;
+ private static final int DIRECTORY_4_REF = 1237;
+ private static final int DIRECTORY_4_1_REF = 1238;
+ private static final int DIRECTORY_4_2_REF = 1239;
+ private static final int DIRECTORY_4_3_REF = 1240;
private static final int FILE_1_REF = 12341;
private static final int FILE_2_REF = 12343;
private static final int FILE_3_REF = 12351;
+ private static final int FILE_4_REF = 12371;
+ private static final int FILE_5_REF = 12372;
private static final int UNIT_TEST_1_REF = 12352;
private static final int UNIT_TEST_2_REF = 12361;
+ private static final int UNIT_TEST_3_REF = 12362;
private static final Integer NO_METRIC = null;
@Rule
@@ -82,8 +89,21 @@ public class ReportSizeMeasuresStepTest {
builder(DIRECTORY, DIRECTORY_3_REF)
.addChildren(
builder(FILE, UNIT_TEST_2_REF).setFileAttributes(new FileAttributes(true, LANGUAGE_DOES_NOT_MATTER_HERE, 10)).build())
- .build())
- .build());
+ .build(),
+ builder(DIRECTORY, DIRECTORY_4_REF)
+ .addChildren(
+ builder(DIRECTORY, DIRECTORY_4_1_REF)
+ .addChildren(
+ builder(FILE, FILE_4_REF).setFileAttributes(new FileAttributes(false, LANGUAGE_DOES_NOT_MATTER_HERE, 9)).build()).build(),
+ builder(DIRECTORY, DIRECTORY_4_2_REF)
+ .addChildren(
+ builder(FILE, FILE_5_REF).setFileAttributes(new FileAttributes(false, LANGUAGE_DOES_NOT_MATTER_HERE, 5)).build()).build(),
+ builder(DIRECTORY, DIRECTORY_4_3_REF)
+ .addChildren(
+ builder(FILE, UNIT_TEST_3_REF).setFileAttributes(new FileAttributes(true, LANGUAGE_DOES_NOT_MATTER_HERE, 6)).build()).build()
+ ).build()
+ ).build());
+
@Rule
public MetricRepositoryRule metricRepository = new MetricRepositoryRule()
.add(CoreMetrics.FILES)
@@ -107,12 +127,15 @@ public class ReportSizeMeasuresStepTest {
verifyMeasuresOnFile(FILE_1_REF, 1, 1);
verifyMeasuresOnFile(FILE_2_REF, 2, 1);
verifyMeasuresOnFile(FILE_3_REF, 7, 1);
+ verifyMeasuresOnFile(FILE_4_REF, 9, 1);
+ verifyMeasuresOnFile(FILE_5_REF, 5, 1);
verifyNoMeasure(UNIT_TEST_1_REF);
verifyNoMeasure(UNIT_TEST_2_REF);
- verifyMeasuresOnOtherComponent(DIRECTORY_1_REF, 3, 2, 1);
- verifyMeasuresOnOtherComponent(DIRECTORY_2_REF, 7, 1, 1);
+ verifyMeasuresOnOtherComponent(DIRECTORY_1_REF, 3, 2, NO_METRIC);
+ verifyMeasuresOnOtherComponent(DIRECTORY_2_REF, 7, 1, NO_METRIC);
verifyMeasuresOnOtherComponent(DIRECTORY_3_REF, NO_METRIC, NO_METRIC, NO_METRIC);
- verifyMeasuresOnOtherComponent(ROOT_REF, 10, 3, 2);
+ verifyMeasuresOnOtherComponent(DIRECTORY_4_REF, 14, 2, 2);
+ verifyMeasuresOnOtherComponent(ROOT_REF, 24, 5, 5);
}
@Test
@@ -135,12 +158,15 @@ public class ReportSizeMeasuresStepTest {
verifyMeasuresOnFile(FILE_1_REF, 1, 1);
verifyMeasuresOnFile(FILE_2_REF, 2, 1);
verifyMeasuresOnFile(FILE_3_REF, 7, 1);
+ verifyMeasuresOnFile(FILE_4_REF, 9, 1);
+ verifyMeasuresOnFile(FILE_5_REF, 5, 1);
verifyNoMeasure(UNIT_TEST_1_REF);
verifyNoMeasure(UNIT_TEST_2_REF);
- verifyMeasuresOnOtherComponent(DIRECTORY_1_REF, 3, 2, 1, entryOf(metricKey, newMeasureBuilder().create(16)));
- verifyMeasuresOnOtherComponent(DIRECTORY_2_REF, 7, 1, 1, entryOf(metricKey, newMeasureBuilder().create(3)));
+ verifyMeasuresOnOtherComponent(DIRECTORY_1_REF, 3, 2, NO_METRIC, entryOf(metricKey, newMeasureBuilder().create(16)));
+ verifyMeasuresOnOtherComponent(DIRECTORY_2_REF, 7, 1, NO_METRIC, entryOf(metricKey, newMeasureBuilder().create(3)));
verifyMeasuresOnOtherComponent(DIRECTORY_3_REF, NO_METRIC, NO_METRIC, NO_METRIC);
- verifyMeasuresOnOtherComponent(ROOT_REF, 10, 3, 2, entryOf(metricKey, newMeasureBuilder().create(19)));
+ verifyMeasuresOnOtherComponent(DIRECTORY_4_REF, 14, 2, 2);
+ verifyMeasuresOnOtherComponent(ROOT_REF, 24, 5, 5, entryOf(metricKey, newMeasureBuilder().create(19)));
}
private void verifyTwoMeasureAggregation(String metric1Key, String metric2Key) {
@@ -151,6 +177,8 @@ public class ReportSizeMeasuresStepTest {
// FILE_3_REF has no measure at all
// UNIT_TEST_1_REF has no metric1
measureRepository.addRawMeasure(UNIT_TEST_1_REF, metric2Key, newMeasureBuilder().create(90));
+ measureRepository.addRawMeasure(FILE_4_REF, metric1Key, newMeasureBuilder().create(2));
+ measureRepository.addRawMeasure(FILE_4_REF, metric2Key, newMeasureBuilder().create(3));
underTest.execute(new TestComputationStepContext());
@@ -159,16 +187,16 @@ public class ReportSizeMeasuresStepTest {
verifyMeasuresOnFile(FILE_3_REF, 7, 1);
verifyNoMeasure(UNIT_TEST_1_REF);
verifyNoMeasure(UNIT_TEST_2_REF);
- verifyMeasuresOnOtherComponent(DIRECTORY_1_REF, 3, 2, 1,
+ verifyMeasuresOnOtherComponent(DIRECTORY_1_REF, 3, 2, NO_METRIC,
entryOf(metric1Key, newMeasureBuilder().create(7)), entryOf(metric2Key, newMeasureBuilder().create(10)));
- verifyMeasuresOnOtherComponent(DIRECTORY_2_REF, 7, 1, 1,
+ verifyMeasuresOnOtherComponent(DIRECTORY_2_REF, 7, 1, NO_METRIC,
entryOf(metric2Key, newMeasureBuilder().create(90)));
MeasureRepoEntry[] subModuleAndAboveEntries = {
- entryOf(metric1Key, newMeasureBuilder().create(7)),
- entryOf(metric2Key, newMeasureBuilder().create(100))
+ entryOf(metric1Key, newMeasureBuilder().create(9)),
+ entryOf(metric2Key, newMeasureBuilder().create(103))
};
verifyMeasuresOnOtherComponent(DIRECTORY_3_REF, NO_METRIC, NO_METRIC, NO_METRIC);
- verifyMeasuresOnOtherComponent(ROOT_REF, 10, 3, 2, subModuleAndAboveEntries);
+ verifyMeasuresOnOtherComponent(ROOT_REF, 24, 5, 5, subModuleAndAboveEntries);
}
@Test