我正在尝试从覆盖率报告中排除包和文件。
但是它不排除指定的文件并打包。
我正在这样做:
<excludedPackages>*api.test.*</excludedPackages>
<excludedFiles>.*File.scala</excludedFiles>
有人可以建议它如何为您工作吗?
干杯 V。
我正在尝试从覆盖率报告中排除包和文件。
但是它不排除指定的文件并打包。
我正在这样做:
<excludedPackages>*api.test.*</excludedPackages>
<excludedFiles>.*File.scala</excludedFiles>
有人可以建议它如何为您工作吗?
干杯 V。
类似于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
您似乎做对了,尽管我对您似乎正在使用的 Maven 插件并不完全熟悉。
问题是,当 scoverage 排除文件时,它仍然会编译其中的类,但不会对它们进行检测,从而产生一个.class
与没有插件的编译生成的文件相同的文件。看到源自您明确排除的源文件的类文件可能会让您感到困惑.class
——它确实让我感到困惑——但这就是插件的工作方式。
更新:
Scoverage scalac 插件将在从文件路径中删除后尝试将文件路径与正则表达式匹配.scala
;即,.scala
从您的正则表达式中省略 ,因为它永远不会匹配任何文件模式。
另请注意,正则表达式与路径而不是类名匹配;即,使用/
而不是\.
. 不能说这是否适用于 Windows(如果不是,那么这是 scalac 插件的错误)。
在我的build.sbt
我能够使用以下行排除类:
coverageExcludedPackages := "<empty>;.*ExcludeThisClass;.*BuildInfo",
注意:<empty>;
在第一次排除时需要首字母。不知道为什么会这样,但它与他们的自述文件的解释相匹配: