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

war*_*ace 17 scala code-coverage sonarqube

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

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

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

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

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

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

Fab*_*eam 7

关于声纳方面:

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

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


ste*_*hke 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插件工作正常.