Scoverage如何排除文件和包?

时间:2017-12-22 10:59:15

标签: scoverage

我正在尝试从scoverage报告中排除包和文件。

但是它不会排除指定的文件并打包。

我这样做:

<excludedPackages>*api.test.*</excludedPackages> 
<excludedFiles>.*File.scala</excludedFiles>

有人可以建议它对你有用吗?

干杯 诉

3 个答案:

答案 0 :(得分:2)

https://stackoverflow.com/a/44346781/2370679类似

将以下内容添加到build.sbt文件中:

要排除包裹(例如排除*api.test.**api.db*包裹):

coverageExcludedPackages := "<empty>;*api.test.*;*api.db*"

您还可以使用语法排除文件:

coverageExcludedPackages := "*File.scala"

对于您的具体示例,您可以尝试:

coverageExcludedPackages := "*File.scala;*api.test.*"

参考:https://github.com/scoverage/sbt-scoverage#exclude-classes-and-packages

答案 1 :(得分:0)

您似乎做对了,尽管我对您似乎正在使用的Maven插件并不十分熟悉。

事实是,当覆盖率排除文件时,它仍会编译其中的类,但不会对其进行检测,从而导致一个.class文件,该文件与不带插件的编译产生的文件相同。这可能会使您迷惑.class的类文件,这些类源自您明确排除的源文件-的确使我感到困惑-但这就是插件的工作原理。

更新

在从它们中删除.scala后,Scoverage scalac插件将尝试将文件路径与正则表达式匹配;也就是说,从正则表达式中省略.scala,因为它永远不会匹配任何文件模式。

还请注意,正则表达式与路径匹配,而不与类名匹配;即使用/代替\.。不能说这是否可以在Windows上使用(如果不能,则是scalac插件存在错误)。

答案 2 :(得分:0)

在我的build.sbt中,我可以使用以下行来排除类:

coverageExcludedPackages := "<empty>;.*ExcludeThisClass;.*BuildInfo",

注意:首字母<empty>;是第一个排除项所必需的。不知道为什么会这样,但是与他们的自述文件的解释相符: