]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-15450 Take pull requests into account when counting instance's NLOC
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Fri, 24 Sep 2021 18:16:54 +0000 (13:16 -0500)
committersonartech <sonartech@sonarsource.com>
Mon, 27 Sep 2021 20:03:44 +0000 (20:03 +0000)
server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java
server/sonar-db-dao/src/main/resources/org/sonar/db/measure/LiveMeasureMapper.xml
server/sonar-webserver-core/src/test/java/org/sonar/server/telemetry/TelemetryDataLoaderImplTest.java

index 64bbf11735b39b3afb66273c20c3e4e8672ff8c4..a7c1813ba61f77e091ece7e16be1f9e08bb99841 100644 (file)
@@ -28,7 +28,6 @@ import org.sonar.api.utils.System2;
 import org.sonar.core.util.Uuids;
 import org.sonar.db.Dao;
 import org.sonar.db.DbSession;
-import org.sonar.db.component.BranchType;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.dialect.Dialect;
 
@@ -99,8 +98,7 @@ public class LiveMeasureDao implements Dao {
    * If Main Branch = 100 LOCs and the "largest branch" is 80 LOCs, I'm expecting to consider the value 100.
    */
   public long sumNclocOfBiggestBranch(DbSession dbSession, SumNclocDbQuery dbQuery) {
-    Long ncloc = mapper(dbSession).sumNclocOfBiggestBranch(
-      NCLOC_KEY, BranchType.BRANCH, dbQuery.getOnlyPrivateProjects(), dbQuery.getProjectUuidToExclude());
+    Long ncloc = mapper(dbSession).sumNclocOfBiggestBranch(NCLOC_KEY, dbQuery.getOnlyPrivateProjects(), dbQuery.getProjectUuidToExclude());
     return ncloc == null ? 0L : ncloc;
   }
 
index 70b58ca84ef2986f81d0a7e271d2fbc396fa6fa0..4781db6c98df1fa542ee3e1f1e74a4320b91a2b3 100644 (file)
@@ -24,7 +24,6 @@ import java.util.List;
 import javax.annotation.Nullable;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.session.ResultHandler;
-import org.sonar.db.component.BranchType;
 
 public interface LiveMeasureMapper {
 
@@ -57,7 +56,6 @@ public interface LiveMeasureMapper {
 
   Long sumNclocOfBiggestBranch(
     @Param("ncloc") String nclocKey,
-    @Param("branchType") BranchType branchType,
     @Param("private") Boolean privateProject,
     @Nullable @Param("projectUuidToExclude") String projectUuidToExclude);
 
index 6350e35873484902c790f0af57916ac7bdb4d221..2141836ab7fdc6f109e28b1e99019e3d100f7011 100644 (file)
@@ -56,7 +56,7 @@
       select b.project_uuid as projectUuid, max(lm.value) as maxncloc
       from live_measures lm
       inner join metrics m on m.uuid = lm.metric_uuid
-      inner join project_branches b on b.uuid = lm.component_uuid and b.branch_type = #{branchType, jdbcType=VARCHAR}
+      inner join project_branches b on b.uuid = lm.component_uuid
       inner join projects p on p.uuid = b.project_uuid and p.qualifier = 'TRK'
       <where>
         m.name = #{ncloc, jdbcType=VARCHAR}
index 4ec49748d9b5fe28acae43b0417c7e6011236ec3..f46cbc179a5fd7e1035f96ab82f2996952ec7dc7 100644 (file)
@@ -171,7 +171,7 @@ public class TelemetryDataLoaderImplTest {
   }
 
   @Test
-  public void take_largest_branches() {
+  public void take_largest_branch() {
     server.setId("AU-TpxcB-iU5OvuD2FL7").setVersion("7.5.4");
     MetricDto ncloc = db.measures().insertMetric(m -> m.setKey(NCLOC_KEY));
     ComponentDto project = db.components().insertPublicProject();
@@ -179,7 +179,7 @@ public class TelemetryDataLoaderImplTest {
     ComponentDto pr = db.components().insertProjectBranch(project, b -> b.setBranchType(PULL_REQUEST));
     db.measures().insertLiveMeasure(project, ncloc, m -> m.setValue(10d));
     db.measures().insertLiveMeasure(branch1, ncloc, m -> m.setValue(20d));
-    db.measures().insertLiveMeasure(pr, ncloc, m -> m.setValue(30d));
+    db.measures().insertLiveMeasure(pr, ncloc, m -> m.setValue(15d));
     projectMeasuresIndexer.indexAll();
 
     TelemetryData data = communityUnderTest.load();
@@ -187,6 +187,23 @@ public class TelemetryDataLoaderImplTest {
     assertThat(data.getNcloc()).isEqualTo(20L);
   }
 
+  @Test
+  public void take_largest_branch_with_pr() {
+    server.setId("AU-TpxcB-iU5OvuD2FL7").setVersion("7.5.4");
+    MetricDto ncloc = db.measures().insertMetric(m -> m.setKey(NCLOC_KEY));
+    ComponentDto project = db.components().insertPublicProject();
+    ComponentDto branch1 = db.components().insertProjectBranch(project, b -> b.setBranchType(BRANCH));
+    ComponentDto pr = db.components().insertProjectBranch(project, b -> b.setBranchType(PULL_REQUEST));
+    db.measures().insertLiveMeasure(project, ncloc, m -> m.setValue(10d));
+    db.measures().insertLiveMeasure(branch1, ncloc, m -> m.setValue(20d));
+    db.measures().insertLiveMeasure(pr, ncloc, m -> m.setValue(30d));
+    projectMeasuresIndexer.indexAll();
+
+    TelemetryData data = communityUnderTest.load();
+
+    assertThat(data.getNcloc()).isEqualTo(30L);
+  }
+
   @Test
   public void data_contains_no_license_type_on_community_edition() {
     TelemetryData data = communityUnderTest.load();