0

我正在为一个用 Play Framework 编写的项目使用sbt-scoverage插件。

我面临以下java.lang.RuntimeException: Duplicate mappings错误:

[scoverage]: Instrumentation completed [35097 statements]
[scoverage]: Written instrumentation file [/Users/project/target/scala-2.10/scoverage-data/scoverage.coverage.xml]
[scoverage]: Writing measurements data to [/Users/project/target/scala-2.10/scoverage-data]
...
[info] Compiling 49 Scala sources to /Users/project/target/scala-2.10/test-classes...
java.lang.RuntimeException: Duplicate mappings:
/Users/project/target/scala-2.10/scoverage-classes/services-main.js
from
/Users/project/target/scala-2.10/resource_managed/main/public/javascripts/global/services/services-main.js
/Users/project/target/scala-2.10/resource_managed/main/public/javascripts/kiosk/global/services/services-main.js
/Users/project/target/scala-2.10/scoverage-classes/global.min.css
from......

我的猜测是它试图service-main.jstarget下面的某个地方转移scoverage-classes。我不打算对任何 JavaScript 文件运行覆盖,因此我包含了以下设置:

ScoverageKeys.excludedPackages in ScoverageCompile := ".views.;.javascripts.;.assets.;.js.;.resource_managed."

它没有任何改变 - 错误仍然存​​在。如何指示 scoverage 忽略 JavaScript 文件?

4

2 回答 2

0

这只是一个猜测,但值得继续检查它是否能解决问题。

根据排除类和包

您可以通过提供以分号分隔的正则表达式列表,将类排除在考虑覆盖率测量之外。

正则表达式与完全限定的类名匹配,并且必须匹配整个字符串才能生效。

任何匹配的类都不会被检测或包含在覆盖率报告中。

我认为您使用的正则表达式不正确,并且由于它们不匹配,因此它们无效。.*不使用.如下:

ScoverageKeys.excludedPackages in ScoverageCompile := ".*javascripts.*;.*\.js"
于 2014-07-23T22:39:55.383 回答
0

此错误已在版本 1.0.0 中修复。请注意,配置已更改,因此请务必检查自述文件(最值得注意的是,运行命令从更改为sbt scoverage:testsbt coverage test并且插件成为自动插件,因此您不再需要添加 instrumentSettings)。

https://github.com/scoverage/sbt-scoverage

于 2014-11-28T10:41:50.730 回答