Wartremover仍会在排除的播放路线文件中报告疣

jqn*_*qno 4 scala sbt playframework scala-wartremover

我正在尝试将Wartremover添加到我的Play项目中,但它会在路径文件中报告疣,即使我将其排除.我正在使用Wartremover 0.14和Play Framework 2.4.6.

我的build.sbt中的相关部分:

wartremoverErrors ++= Warts.all
wartremoverExcluded += crossTarget.value / "routes" / "main" / "router" / "Routes.scala"
Run Code Online (Sandbox Code Playgroud)

(请注意,我必须采用与此问题中的答案不同的方式.)

如果没有该wartremoverExcluded行,Wartremover会在路由文件中报告13个错误.有了它,它仍然报告两个:一个关于Wart.Var和一个关于Wart.ExplicitImplicitTypes.我也可以排除这些疣,但是使用Warts.allBut(Wart.Var, Wart.ExplicitImplicitTypes),但我不愿意,因为这排除了我整个代码库中的这些瑕疵,而不仅仅是路径文件.

有没有办法让Wartremover停止在路径文件中报告这些疣,而不排除每个文件的这些疣?

dan*_*xon 7

尝试添加这些:

wartremoverExcluded += crossTarget.value / "routes" / "main" / "router" / "Routes.scala"
wartremoverExcluded += crossTarget.value / "routes" / "main" / "router" / "RoutesPrefix.scala"
wartremoverExcluded += crossTarget.value / "routes" / "main" / "controllers" / "ReverseRoutes.scala"
wartremoverExcluded += crossTarget.value / "routes" / "main" / "controllers" / "javascript" / "JavaScriptReverseRoutes.scala"
Run Code Online (Sandbox Code Playgroud)

编辑:自从我第一次写这个答案以来已经一年多了.wartremoverExcluded已从a更改SettingKey为a TaskKey,因此您可以将上述内容简化为:

wartremoverExcluded ++= routes.in(Compile).value
Run Code Online (Sandbox Code Playgroud)

或者你可以尝试我写的这个sbt插件为你做.