我的设置是:
我有以下项目:
目前的流程是什么:
Sonar具有可用的静态代码分析统计信息,并显示测试成功百分比。 唯一缺少的是JaCoCo的代码覆盖......甚至可能是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需要做什么?
答案 0 :(得分:3)
我找到了一个包含示例tycho多模块项目的页面(单独的源代码和测试项目)。复制了一些属性和配置后......
似乎我现在使用maven jacoco插件生成jacoco代码覆盖率报告,然后告诉Sonar在哪里找到报告并重复使用。
为什么到目前为止没有相关文档?或者为什么这么难找?
https://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/tycho-example
答案 1 :(得分:3)
您可以查看几个月前我写的博文:http://mdwhatever.free.fr/index.php/2011/09/quality-analysis-on-eclipse-plugins-with-tycho-sonar-jacoco-and-swtbot/
答案 2 :(得分:0)
当代码完成检测时,必须在检测生成的特定代码上运行surefire。我没有使用过您的设置,但是您的错误与我在获取Clover代码覆盖率时的错误非常相似;我不得不指出surefire从存储编译的检测代码的目录中运行测试。
此外,我发现在Maven命令行中指定-X
选项是非常宝贵的,因为在构建期间读取每个插件的日志会显示它正在寻找它正在寻找的任何内容。
编辑:
必须在surefire可以针对它运行之前编译检测代码,因此您需要指向编译后目录而不是检测源本身。