Sonar也支持ant工程的构建,但是相对于maven而言,最大的不足是无法在分析过程中产生单测覆盖率报告。因此要求用户在ant项目中配置好cobertura/jacoco报告,最后执行sonar构建的时候,根据已经生成的报告进行分析统计。另外,还需要下载sonar-ant-task-2.0.jar,放到CLASSPATH后者ant/lib目录下。
以zookeeper为例:
a. 修改zookeeper的build.xml文件,添加如下配置
<property name="sonar.host.url" value="http://localhost:8384" />
<property name="sonar.jdbc.url" value="jdbc:mysql:// localhost:3306/so
nar?useUnicode=true&characterEncoding=utf8" />
<property name="sonar.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="sonar.jdbc.username" value="sonar" />
<property name="sonar.jdbc.password" value="sonar" />
<property name="sonar.projectKey" value="org.apache.zookeeper:zookeeper" />
<property name="sonar.projectName" value="ZooKeeper" />
<property name="sonar.projectVersion" value="1.0.10" />
<property name="sonar.sourceEncoding" value="UTF-8" />
<property name="sonar.sources" value="src/java/main" />
<property name="sonar.tests" value="src/java/test" />
<property name="sonar.binaries" value="build/classes,build/test/classes" />
<property name="sonar.dynamicAnalysis" value="reuseReports" />
<property name="sonar.surefire.reportsPath" value="${basedir}/build/test/logs" />
<property name="sonar.java.coveragePlugin" value="cobertura" />
<property name="sonar.cobertura.reportPath" value="${basedir}/build/cobertura/coverage.xml" />
| |
b. 执行sh -ex build.sh # 执行编译测试
c. anttest -Dtest.junit.output.format=xml
# 执行单元测试,生成单测报告build/test/logs/TEST-*.xml
d. ant cobertura-report -Dtest.cobertura.output.format=xml
# 生成cobertura报告build/cobertura/coverage.xml
e. antsonar # 静态代码分析,代码行数统计,单测覆盖率报告分析