如何让Jenkins,Sonar和JaCoCo插件为Eclipse Tycho插件项目(或者Cobertura)一起工作?

dan*_*war 8 cobertura tycho jenkins jacoco sonarqube

我的设置是:

  • 詹金斯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
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我需要在我的pom.xml中启用JaCoCo吗?我需要确定吗?使用Cobertura需要做什么?

Spe*_*ngD 0

当代码完成检测后,必须在检测生成的特定代码上运行 Surefire。我没有使用你的设置,但你的错误似乎与我让 Clover 代码覆盖率正常工作时遇到的错误非常相似;我必须指向 Surefire 以在存储已编译的检测代码的目录之外运行测试。

另外,我发现-X在 Maven 命令行上指定该选项非常有价值,因为在构建期间读取每个插件的日志可以准确地显示它正在寻找它想要查找的内容。

编辑:

在 Surefire 可以运行之前,必须先编译已检测的代码,因此您需要指向编译后目录,而不是已检测的源代码本身。