Scala是否有声纳级代码覆盖范围?

Scala是否有声纳级代码覆盖范围?,scala,code-coverage,sonarqube,Scala,Code Coverage,Sonarqube,我试图为一个使用Scala/Java混合编程的团队建立一个简单的代码覆盖率报告,该报告的比例大约为90/10,并且遇到了一些严重的障碍。我以前曾在一个只支持Java的团队中建立并管理Sonar,并取得了巨大成功,但这似乎不是一个选项 Sonar w/Scala插件有缺陷,似乎只支持Scala项目,而不支持混合项目 SCCT与我们的maven构建集成,但由于反复出现假阴性测试失败而失败 到目前为止,卧底是我最好的运气;它与我们的maven构建和生成报告集成在一起,但它们不会像Sonar那样被归档或

我试图为一个使用Scala/Java混合编程的团队建立一个简单的代码覆盖率报告,该报告的比例大约为90/10,并且遇到了一些严重的障碍。我以前曾在一个只支持Java的团队中建立并管理Sonar,并取得了巨大成功,但这似乎不是一个选项

Sonar w/Scala插件有缺陷,似乎只支持Scala项目,而不支持混合项目

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

到目前为止,卧底是我最好的运气;它与我们的maven构建和生成报告集成在一起,但它们不会像Sonar那样被归档或托管在任何地方。似乎也没有中心索引来简化对生成报告的导航

我在这里读过StackOverflow的答案,但它们大多可以追溯到2010年,并表明没有合适的解决方案可用。这种情况改变了吗

有什么明显的我遗漏的吗?

关于声纳方面:

  • 是的,开发目前处于停滞状态。它是由社区发起的,但还没有人愿意接管它。如果有志愿者,我们会很乐意指导和帮助他们

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

您可以使用或

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

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

  • 科贝图拉将如何工作?上一次我检查它是相当有用的,虽然没有与声纳集成。@ron:那是我名单上的下一个。我设法让Undercover将报告写入Cobertura的XML格式,但由于实际上Cobertura插件没有运行,Jenkins拒绝承认存在代码覆盖率报告。我记得听过一些关于Cobertura不能很好地处理Scala可以生成的所有Java类的事情,但我想我会发现的。请继续收看@ron:Cobertura+Jenkins Cobertura插件运行得很好。准确易读,显示趋势,允许我深入了解。这不是声纳,但它能工作!谢谢你们的回答,我刚刚设法让SCCT生成cobertura报告,并让我们Jenkins cobertura插件阅读它。然而,SCCT包含了其代码覆盖范围内的所有内容。我希望能够像在JaCoCo中一样排除一些文件夹。jacoco.Config中的jacoco.excludes:=Seq(“视图*”、“路由”、“controllersroutes”、“controllersReverse”、“controllersjavascript”、“controllerref”),您知道我是否可以这样做吗?您最好的办法可能是对cobertura.xml文件进行后期处理。使用maven-Groovy集成()可以轻松做到这一点。或者,您可以在4年后更改文件coberturapreporter.scala(),但仍然没有关于scala支持Sonar的消息。Freddy Mallet的最后一句话只是为了证实显而易见的事实: