是否存在与Scala等效的声纳级代码覆盖率?

时间:2012-09-12 22:09:34

标签: scala code-coverage sonarqube

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

Sonar w / Scala插件很麻烦,似乎只支持Scala项目,而不是混合项目。

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

到目前为止,卧底是我最好的运气;它与我们的maven build& amp;生成报告,但它们不会像Sonar那样存档或托管在任何地方。似乎没有中央索引可以简化导航生成的报告。

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

有什么明显的东西我不见了吗?

2 个答案:

答案 0 :(得分:7)

关于声纳方面:

  • 是的,Scala Sonar Plugin开发目前停滞不前。它是由社区发起的,但没有人愿意接受它。如果有一些志愿者,我们很乐意指导和帮助他们。

  • 关于在单个项目中支持多种语言,Sonar将提供支持。我无法为您提供路线图,但我们目前正在考虑如何在下一版本中添加Sonar中的这种支持,因此这是一个短期问题。

答案 1 :(得分:6)

您可以使用SCCTJaCoCo

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

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

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