5

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

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

wartremoverErrors ++= Warts.all
wartremoverExcluded += crossTarget.value / "routes" / "main" / "router" / "Routes.scala"

(请注意,我必须采取不同于这个问题的答案所建议的方式。)

没有这wartremoverExcluded条线,Wartremover 在我的路由文件中报告了 13 个错误。有了它,它仍然会报告两个:一个 aboutWart.Var和一个 about Wart.ExplicitImplicitTypes。我也可以排除这些疣,但使用Warts.allBut(Wart.Var, Wart.ExplicitImplicitTypes),但我不想这样做,因为这会从我的整个代码库中排除这些疣,而不仅仅是路由文件。

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

4

2 回答 2

8

尝试添加这些:

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已从 a 更改SettingKey为 a TaskKey,因此您可以将上述简化为:

wartremoverExcluded ++= routes.in(Compile).value

对于 sbt 1.4+:

wartremoverExcluded ++= (Compile / routes).value

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

于 2016-01-15T00:59:02.403 回答
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是不是一样)

于 2016-01-14T16:28:06.310 回答