代码覆盖工具为斯卡拉
Scala有哪些可用的代码覆盖工具?
我有斯卡拉规格testing和哈德森持续集成设置。 有什么我可以挂钩到这个设置来衡量和跟踪代码覆盖率?
SCCT是一个编译器插件,它用来收集覆盖数据的类:
我用Cobertura 。 但是,任何Java覆盖工具应该工作得很好。 唯一的问题是,你最终会在你的覆盖范围列表中产生大量的自动生成的类。 这是因为,虽然Scala编译成非常自然的JVM字节码,但它被迫产生不自然的大量的类,以适应懒惰评估等常见的function特性。
卧底是好一点。
非主stream语言(如Scala)的一个问题是工具很难find,因为它们很难构build。
这篇技术文章简化了任意语言的分支报道 (作者),描述了如何使用通用的工具构build基础结构,以系统的方式为语言构buildtesting覆盖工具,以帮助解决这个问题。
我们已经为Java,C#,COBOL,C,C ++,PL / SQL等实现了testing覆盖工具 ,包括指导员,数据收集和testing覆盖显示和报告。 像这样实现Scala会很简单。
其他答案所带来的解决scheme会产生来自Scala(“自动types化类”)的混淆信息。 开发人员希望看到的是代码中的覆盖数据。 我们使用的方法是使用源代码,所以结果是完全陈述的,只有在源代码方面。 即使testing覆盖查看器也显示覆盖信息覆盖的源代码。
我已经把一个名为xsbt-coveralls- plugin的SBT插件放在一起,它使用scc下的scct,但将结果发布到http://coveralls.io 。
免责声明: 我只是在昨天(2013年3月10日)刚刚构build这个插件,所以不要指望它是完美的,但发送错误和function请求到GitHub页面
不过,如果您希望将覆盖率报告编码为公开可见,那还是很不错的。 看看这里的结果的例子
我使用jacoco。 它不需要编译或运行时的依赖关系,仪器类不需要专门的仪器阶段。
还与Sonar集成,并在Maven Central上发布。
这里是例子: https : //github.com/Godin/sonar-experiments/tree/master/jacoco-examples/scala-example
我想补充更好的报告:更详细的分支报道makrup,不包括生成的类/方法,并像ScalaDoc一样方便(例如参见SCCT报告)