【质量前移】SonarQube配置问题汇总

SonarQube配置问题汇总

问题1:SonarScanner配置文件无法配置多个项目

解决方案:

SonarScanner默认读取的是/usr/local/sonar-scanner/conf/sonar-scanner.properties,如果同时支持多个项目,需要添加多个以.properties结尾的配置项。并在执行时制定配置文件:

配置多个以.properties结尾的配置项
[root@localhost conf]# tree
.
├── duoqi_riskcontrol.properties
├── duoqi_trade.properties
└── sonar-scanner.properties

0 directories, 3 files


#指定sonarscanner执行的配置文件
[root@localhost develop]# sonarscanner -Dproject.settings=/usr/local/sonar-scanner/conf/duoqi_riskcontrol.properties

问题2:SonarScanner扫描完成后,单元测试代码覆盖率总是0

根据官方文档,如果要SonarScanner支持静态扫描,则需把Junit执行结果与jacoco(代码覆盖率统计工具)的结果配给SonarScanner,则这个问题引申了3个问题:

问题2.1:JUnit默认不生成测试报告,且JUnit官方文档没有相关配置的描述

解决方案:

通过stackoverflow相似的问题得知,首先需要在配置文件build.gradle中(本项目用的Gradle,Maven配置方法差不多)加入一段代码:

test {
    reports {
        junitXml.enabled = true #生成Xml报告
        html.enabled = true   #生成html报告
    }
}

接着在sonar-scanner的配置文件sonar-scanner.properties中加入JUnit报告的路径,默认在build目录里:

sonar.junit.reportPaths=/code/build/reports/tests/test

问题2.2:Jacoco的配置

解决方案:

Jacoco是单元测试覆盖率统计工具,对于gradle项目,在build.gradle配置文件中加入这段配置:

apply plugin: 'jacoco'


jacoco {
    toolVersion = "0.8.0"
    reportsDir = file("$buildDir/customJacocoReportDir")
}

jacocoTestReport {
    reports {
        xml.enabled true
        csv.enabled true
        html.destination file("${buildDir}/jacocoHtml")
    }
}

先build一次,会在指定的目录生成jacoco.exec文件:

[root@localhost develop]#gradle clean build

接着在sonar-scanner.properties加入jacoco报告路径和jacoco.exec的配置:

sonar.core.codeCoveragePlugin=jacoco
sonar.jacoco.reportPaths=/code/build/jacoco/jacocoTest.exec
# 以下属性可选择性加,当然也可以不加
sonar.dynamicAnalysis=reuseReports
sonar.jacoco.reportMissing.force.zero=false

问题2.3:配置好JUnit和Jacoco报告后,仍没有覆盖率统计数据

解决方案:

这里官方文档没有写,如果需要得到单测覆盖率,除了需要JUnit和Jacoco报告外,还需要配置编译好的二进制文件目录,如果找不到这个文件,也会报错,在sonar-scanner的配置文件加入如下配置:

sonar.java.binaries=/code/build/classes/java

全部配置好后,重新build一次:

[root@localhost develop]#gradle clean build

再指定配置文件执行sonar-scanner:

usr/local/sonar-scanner/conf/duoqi_riskcontrol.properties

则就可以执行单测并看到代码覆盖率了。

猜你喜欢

转载自blog.csdn.net/hbmovie/article/details/80940648