我正在尝试将Wartremover添加到我的Play项目中,但它会在路径文件中报告疣,即使我将其排除在外。我正在使用Wartremover 0.14和Play Framework 2.4.6。
我的build.sbt的相关部分:
wartremoverErrors ++= Warts.all
wartremoverExcluded += crossTarget.value / "routes" / "main" / "router" / "Routes.scala"
(请注意,我必须采用与this question建议中的答案不同的方式。)
如果没有wartremoverExcluded
行,Wartremover会在路径文件中报告13个错误。有了它,它仍会报告两个:一个关于Wart.Var
一个关于Wart.ExplicitImplicitTypes
。我也可以排除这些疣,但是使用Warts.allBut(Wart.Var, Wart.ExplicitImplicitTypes)
,但我不愿意,因为这会从我的整个代码库中排除这些瑕疵,而不仅仅是路径文件。
有没有办法让Wartremover停止在路线文件上报告这些疣,而不会为每个文件排除这些疣?
答案 0 :(得分:6)
尝试添加以下内容:
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"
编辑:自从我第一次写这个答案以来已经过去了一年多。 wartremoverExcluded
已从SettingKey
更改为TaskKey
,因此您可以将上述内容简化为:
wartremoverExcluded ++= routes.in(Compile).value
或者你可以尝试这个sbt plugin I wrote to do it for you。
答案 1 :(得分:0)
这对我有用:
wartremoverExcluded ++= Seq(
baseDirectory.value / "target" / "scala-2.11" / "src_managed" / "main" / "routes_routing.scala",
baseDirectory.value / "target" / "scala-2.11" / "src_managed" / "main" / "routes_reverseRouting.scala"
)
(实际上我正在玩2.3,不确定它在2.4.6上是否相同)