17

我正在尝试为混合 Scala/Java 中的团队编码设置简单的代码覆盖率报告。90/10 的比率并遇到一些严重的障碍。我之前在一个纯 Java 的团队中设置和管理 Sonar 并取得了巨大的成功,但这似乎不是一个选择。

Sonar w/Scala 插件有问题,似乎只支持 Scala 项目,而不是混合项目。

SCCT 与我们的 maven 构建集成,但因反复出现假阴性测试失败而失败。

到目前为止,卧底一直是我最好的运气。它与我们的 Maven 构建集成并生成报告,但它们不会像使用 Sonar 那样在任何地方存档或托管。似乎也没有中央索引可以让浏览生成的报告变得简单。

我已经在 StackOverflow 上阅读了答案,但它们主要可以追溯到 2010 年,并表明没有合适的解决方案可用。这有改变吗?

我有什么明显的遗漏吗?

4

2 回答 2

7

关于声纳方面:

  • 是的,Scala Sonar 插件的开发目前处于停滞状态。它是由社区发起的,但尚未有人提出接管它。如果有志愿者,我们很乐意为他们提供指导和帮助。

  • 关于单个项目中对多种语言的支持,Sonar 将提供支持。我不能给你一个路线图,但我们目前正在考虑如何在下一个版本中在 Sonar 中添加这种支持,所以这是一个短期问题。

于 2012-09-13T09:07:29.750 回答
6

您可以使用SCCTJaCoCo

  • SCCT:它支持 Scala 到 2.10 版本,但开发似乎停滞了大约 9 个月。它本机支持 Scala 并与 Maven 和 SBT 一起使用。
  • JaCoCo 正在积极开发中。它支持任何版本的 Scala,但不是原生的,而是字节码级别的。所以你可能会得到一些工件,例如一些代码只得到部分覆盖,因为生成的字节码有一些 JaCoCo 看到的理论代码路径(但它永远不能从 Scala 代码执行)。

使用 Maven 和 Scala 设置 JaCoCo 可能有点棘手。这里有一些技巧:

  1. 将变体与代理启动器一起使用。不要将变体与预处理字节码一起使用。
  2. 将 JaCoCo 与 Maven 一起使用时:有一个 Maven 任务 ( jacoco:prepare-agent ),它将为代理启动器生成正确的表达式并将其存储到属性中。然后,您可以在运行 Java 虚拟机时将此属性用作命令行参数。
  3. 对代理启动器进行参数化,以便多次启动(例如,用于运行不同的测试)写入同一个日志文件。某些 IDE 插件在解析此类文件时会出现问题,但 JaCoCo Hudson 插件可以正常工作。
于 2013-08-30T13:50:35.367 回答