首先要得到之前的单元测试和集成测试的覆盖率文件,还有对应的class文件以及单元测试的覆盖率报告,材料准备齐全之后,使用如下命令:
build.xml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml"> <classpath path="${env.SONAR-ANT-TASK.JAR}"/> </taskdef>
<target name="sonar"> <sonar:sonar key="${sonar.project.key}" version="${sonar.project.version}" xmlns:sonar="antlib:org.sonar.ant"> <sources> <path location="${src.dir}" /> </sources>
<property key="sonar.projectName" value="jacoco_demo" /> <property key="sonar.sourceEncoding" value="UTF-8" /> <property key="sonar.dynamicAnalysis" value="reuseReports" /> <property key="sonar.surefire.reportsPath" value="${junit.dir}" /> <property key="sonar.core.codeCoveragePlugin" value="jacoco" /> <property key="sonar.jacoco.reportPath" value="${basedir}/ut.exec" /> <property key="sonar.jacoco.itReportPath" value="${basedir}/uat.exec" />
<tests> <path location="${src.test.dir}" /> </tests>
<binaries> <path location="${build.src.class}" /> <path location="${build.test.class}" /> </binaries>
<libraries> <path location="${build.lib.dir}" /> </libraries> </sonar:sonar> </target>
|
参数解释:
- sonar.dynamicAnalysis是指单元测试报告的生成方式,值为reuseReports是指给出生成好的单元测试报告路径。
- sonar.surefire.reportsPath是指单元测试报告的路径。
- sonar.core.codeCoveragePlugin是覆盖率插件,有jacoco,cobetura等。
- sonar.jacoco.reportPath是单元测试覆盖率文件的路径。
- sonar.jacoco.itReportPath是集成测试覆盖率文件的路径。
更多参数可以参考这里:单元测试,集成测试
在sonar 3.3的版本会自动将单元测试和集成测试的覆盖率合并,最后附上sonar上的覆盖率显示: