瀏覽代碼

SONAR-22246 Cleanup SQL query for the ncloc of biggest branch

pull/3361/head
Eric Giffon 3 週之前
父節點
當前提交
7f7f7897ac

+ 1
- 1
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/ProjectNclocComputationStep.java 查看文件

@@ -38,7 +38,7 @@ public class ProjectNclocComputationStep implements ComputationStep {
public void execute(Context context) {
try (DbSession dbSession = dbClient.openSession(false)) {
String projectUuid = analysisMetadataHolder.getProject().getUuid();
long maxncloc = dbClient.liveMeasureDao().sumNclocOfBiggestBranchForProject(dbSession, projectUuid);
long maxncloc = dbClient.liveMeasureDao().findNclocOfBiggestBranchForProject(dbSession, projectUuid);
dbClient.projectDao().updateNcloc(dbSession, projectUuid, maxncloc);
dbSession.commit();
}

+ 4
- 4
server/sonar-db-dao/src/it/java/org/sonar/db/measure/LiveMeasureDaoIT.java 查看文件

@@ -410,9 +410,9 @@ class LiveMeasureDaoIT {
db.measures().insertLiveMeasure(projectWithLinesButNoLoc, lines, m -> m.setValue(365d));
db.measures().insertLiveMeasure(projectWithLinesButNoLoc, ncloc, m -> m.setValue(0d));

assertThat(underTest.sumNclocOfBiggestBranchForProject(db.getSession(), simpleProject.projectUuid())).isEqualTo(10L);
assertThat(underTest.sumNclocOfBiggestBranchForProject(db.getSession(), projectWithBiggerBranch.projectUuid())).isEqualTo(200L);
assertThat(underTest.sumNclocOfBiggestBranchForProject(db.getSession(), projectWithLinesButNoLoc.projectUuid())).isZero();
assertThat(underTest.findNclocOfBiggestBranchForProject(db.getSession(), simpleProject.projectUuid())).isEqualTo(10L);
assertThat(underTest.findNclocOfBiggestBranchForProject(db.getSession(), projectWithBiggerBranch.projectUuid())).isEqualTo(200L);
assertThat(underTest.findNclocOfBiggestBranchForProject(db.getSession(), projectWithLinesButNoLoc.projectUuid())).isZero();
}

@Test
@@ -473,7 +473,7 @@ class LiveMeasureDaoIT {
void countNcloc_empty() {
db.measures().insertMetric(m -> m.setKey("ncloc").setValueType(INT.toString()));
db.measures().insertMetric(m -> m.setKey("lines").setValueType(INT.toString()));
long result = underTest.sumNclocOfBiggestBranchForProject(db.getSession(), "non-existing-project-uuid");
long result = underTest.findNclocOfBiggestBranchForProject(db.getSession(), "non-existing-project-uuid");

assertThat(result).isZero();
}

+ 2
- 2
server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java 查看文件

@@ -94,8 +94,8 @@ public class LiveMeasureDao implements Dao {
mapper(dbSession).selectTreeByQuery(query, baseComponent.uuid(), query.getUuidPath(baseComponent), resultHandler);
}

public long sumNclocOfBiggestBranchForProject(DbSession dbSession, String projectUuid){
Long ncloc = mapper(dbSession).sumNclocOfBiggestBranchForProject(projectUuid, NCLOC_KEY);
public long findNclocOfBiggestBranchForProject(DbSession dbSession, String projectUuid){
Long ncloc = mapper(dbSession).findNclocOfBiggestBranchForProject(projectUuid, NCLOC_KEY);
return ncloc == null ? 0L : ncloc;
}


+ 1
- 1
server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java 查看文件

@@ -58,7 +58,7 @@ public interface LiveMeasureMapper {
ResultHandler<LiveMeasureDto> resultHandler);

@CheckForNull
Long sumNclocOfBiggestBranchForProject(@Param("projectUuid") String projectUuid, @Param("ncloc") String nclocKey);
Long findNclocOfBiggestBranchForProject(@Param("projectUuid") String projectUuid, @Param("ncloc") String nclocKey);

List<LargestBranchNclocDto> getLargestBranchNclocPerProject(@Param("nclocUuid") String nclocUuid);


+ 10
- 13
server/sonar-db-dao/src/main/resources/org/sonar/db/measure/LiveMeasureMapper.xml 查看文件

@@ -62,19 +62,16 @@
and lm.component_uuid = #{componentUuid, jdbcType=VARCHAR}
</select>

<select id="sumNclocOfBiggestBranchForProject" parameterType="map" resultType="long">
select sumncloc.maxncloc from (
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
inner join projects p on p.uuid = b.project_uuid and p.qualifier = 'TRK'
<where>
m.name = #{ncloc, jdbcType=VARCHAR}
and b.project_uuid = #{projectUuid,jdbcType=VARCHAR}
</where>
group by b.project_uuid
) sumncloc
<select id="findNclocOfBiggestBranchForProject" parameterType="map" resultType="long">
select max(lm.value)
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
inner join projects p on p.uuid = b.project_uuid and p.qualifier = 'TRK'
<where>
m.name = #{ncloc, jdbcType=VARCHAR}
and b.project_uuid = #{projectUuid,jdbcType=VARCHAR}
</where>
</select>

<select id="getLargestBranchNclocPerProject" parameterType="map" resultType="LargestBranchNclocDto">

+ 1
- 1
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/ComponentCleanerService.java 查看文件

@@ -61,7 +61,7 @@ public class ComponentCleanerService {
}

private void updateProjectNcloc(DbSession dbSession, String projectUuid) {
long maxncloc = dbClient.liveMeasureDao().sumNclocOfBiggestBranchForProject(dbSession, projectUuid);
long maxncloc = dbClient.liveMeasureDao().findNclocOfBiggestBranchForProject(dbSession, projectUuid);
dbClient.projectDao().updateNcloc(dbSession, projectUuid, maxncloc);
}


Loading…
取消
儲存