我的设置是:
- 詹金斯 1.448
- 声纳 2.13
- 詹金斯声纳插件 1.72
- Sonar 的 MySql 数据库
我有以下项目:
- Eclipse 插件项目
- 使用 Maven
- 多个模块(父maven项目,源插件项目,测试片段项目)
- 一个简单的 JUnit 测试,测试源插件项目的一个类
目前的流程是什么:
- Jenkins 从 SVN 签出父项目
- Jenkins 使用 Maven 和 Tycho 构建项目及其模块
- Jenkins 使用 Surefire 执行测试并生成报告
- Jenkins使用Jenkins Sonar插件启动mvn sonar:sonar执行代码分析
- 对每个模块进行静态代码分析
- JaCoCo 失败了
Sonar 具有可用的静态代码分析统计数据,并显示测试成功百分比。唯一缺少的是 JaCoCo 的代码覆盖率……或者甚至可能是 Cobertura 的代码覆盖率。
在这一点上我真的不在乎,我只想要其中一件东西来产生代码覆盖率结果。
Cobertura 似乎无法产生结果,可能是因为 - 它无法检测代码 - 它在错误的位置查找检测的代码 - 它无法处理 Tycho 或单独的源/测试代码设置
JaCoCo 应该能够动态“观察”代码覆盖率,但它的输出是
[INFO] [17:44:04.708] Sensor JaCoCoSensor...
[INFO] [17:44:04.717] Project coverage is set to 0% as no JaCoCo execution data has been dumped: /var/lib/jenkins/jobs/testPlugin/workspace/testSource/target/jacoco.exec
[INFO] [17:44:04.854] Sensor JaCoCoSensor done: 146 ms
[INFO] [17:44:10.587] Sensor JaCoCoSensor...
[INFO] [17:44:10.587] Project coverage is set to 0% as no JaCoCo execution data has been dumped: /var/lib/jenkins/jobs/testPlugin/workspace/testTest/target/jacoco.exec
[INFO] [17:44:10.631] Sensor JaCoCoSensor done: 44 ms
[INFO] [17:44:12.402] Sensor JaCoCoSensor...
[INFO] [17:44:12.402] Project coverage is set to 0% as build output directory doesn't exists: /var/lib/jenkins/jobs/testPlugin/workspace/testParent/target/classes
[INFO] [17:44:12.402] Sensor JaCoCoSensor done: 0 ms
我究竟做错了什么?我需要在我的 pom.xml 某处启用 JaCoCo 吗?我需要万无一失吗?我需要做什么才能使用 Cobertura?