5

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

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

我正在这样做:

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

有人可以建议它如何为您工作吗?

干杯 V。

4

3 回答 3

3

类似于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

于 2018-05-31T05:22:57.140 回答
1

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

问题是,当 scoverage 排除文件时,它仍然会编译其中的类,但不会对它们进行检测,从而产生一个.class与没有插件的编译生成的文件相同的文件。看到源自您明确排除的源文件的类文件可能会让您感到困惑.class——它确实让我感到困惑——但这就是插件的工作方式。

更新:

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

另请注意,正则表达式与路径而不是类名匹配;即,使用/而不是\.. 不能说这是否适用于 Windows(如果不是,那么这是 scalac 插件的错误)。

于 2019-01-24T11:09:08.273 回答
1

在我的build.sbt我能够使用以下行排除类:

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

注意:<empty>;在第一次排除时需要首字母。不知道为什么会这样,但它与他们的自述文件的解释相匹配:

于 2019-07-03T17:43:30.707 回答