我正在尝试从scoverage报告中排除包和文件。
但是它不会排除指定的文件并打包。
我这样做:
<excludedPackages>*api.test.*</excludedPackages>
<excludedFiles>.*File.scala</excludedFiles>
有人可以建议它对你有用吗?
干杯 诉
答案 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>;
是第一个排除项所必需的。不知道为什么会这样,但是与他们的自述文件的解释相符: