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

时间:2016-01-14 11:31:20

标签: scala playframework sbt 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"

(请注意,我必须采用与this question建议中的答案不同的方式。)

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

有没有办法让Wartremover停止在路线文件上报告这些疣,而不会为每个文件排除这些疣?

2 个答案:

答案 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上是否相同)