52

Scala 有哪些可用的代码覆盖工具?

我有 Scala 规范测试和 Hudson 持续集成设置。有什么我可以连接到这个设置来测量和跟踪代码覆盖率的东西吗?

4

6 回答 6

18

SCCT 是一个编译器插件,它检测类以收集覆盖率数据:

http://mtkopone.github.com/scct/

于 2010-10-11T10:19:54.510 回答
9

我使用Cobertura。但是,任何 Java 覆盖工具都应该可以正常工作。唯一的问题是您最终会在覆盖列表中获得大量自动生成的类。这是因为当 Scala 编译成非常自然的 JVM 字节码时,它被迫生成大量不自然的类来适应惰性求值等常见的功能特性。

于 2009-06-05T07:01:51.770 回答
9

卧底稍微好一点。

于 2009-08-07T10:29:04.463 回答
8

非主流语言(例如 Scala)的一个问题是工具很难找到,因为它们很难构建。

这篇技术论文Branch Coverage for Arbitrary Languages Made Easy(我是作者)描述了如何使用通用的工具构建基础架构以系统的方式构建语言的测试覆盖工具,以帮助解决这个问题。

我们以这种方式为 Java、C#、COBOL、C、C++、PL/SQL 等实现了测试覆盖率工具,包括仪器、数据收集和测试覆盖率显示和报告。像这样实现 Scala 会很简单。

其他答案提出的解决方案从 Scala 的实现中产生了令人困惑的信息(“自动分类的类”)。开发人员希望看到的是其代码的覆盖率数据。我们使用源代码检测的方法,因此结果完整且仅根据源代码说明;甚至测试覆盖率查看器也会显示覆盖信息的源代码。

于 2011-03-02T23:00:19.987 回答
3

I've put together a SBT plugin called xsbt-coveralls-plugin that uses scct under the hood, but publishes the results to http://coveralls.io.

Disclaimer: I've only just built this plugin yesterday (10th March 2013) so don't expect it to be perfect yet, but do send bugs and feature requests to the github page

Still, it's good if you want to code coverage reports to be publicly visible. Check out an example of the results here

于 2013-03-11T13:47:28.023 回答
3

我用雅可可。它不需要编译或运行时依赖,无需特殊检测阶段即可即时检测类。

它还与 Sonar 集成并在 Maven Central 上发布。

这是示例:https ://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/scala-example

我想添加更好的报告:更详细的分支覆盖 makrup,不包括生成的类/方法,并且像 ScalaDoc 一样方便(例如,参见 SCCT 报告)

于 2011-11-11T07:56:19.310 回答