5

我想将 FindBugs 集成到 Play Framework 2 Java 项目的构建过程中。

这可能吗?如果是这样,使其工作所需的配置步骤是什么?

我假设可以使用findbugs4sbt,但我不确定如何设置它。

4

1 回答 1

4

我昨天才这样做,并将其记录在Integrating Findbugs Into a Play Framework 2 Project (Java)中。

这是相关步骤:

  1. 从 bitbucket下载我为 sbt 0.11 自定义构建的findbugs4sbt jar并将其放入project/lib

    更新:project/plugins.sbt通过添加插件

    addSbtPlugin("de.johoop" % "findbugs4sbt" % "1.1.7")
    
  2. 配置 findbugs4sbt project/Build.scala

    import de.johoop.findbugs4sbt.FindBugs._
    
    object ApplicationBuild extends Build {
    
      ...
    
      val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA,
        settings = Defaults.defaultSettings ++ findbugsSettings)
    
    }
    

然后你就可以运行sbt findbugswhich generate了target/scala-2.9.1/findbugs/findbugs.xml

由于 findbugs 还分析了 play 从路由和视图中编译的一些类(并报告了一些有关命名约定的问题),您可能希望忽略它们(因为无论如何您都无法改进它们)。为此,请使用以下 findbugs4sbt 设置(在 中project/Build.scala)将它们从 findbugs 中排除:

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA,
settings = Defaults.defaultSettings ++ findbugsSettings).settings(
  findbugsExcludeFilters := Some(
    <FindBugsFilter>
      <!-- See docs/examples at http://findbugs.sourceforge.net/manual/filter.html -->
      <Match>
        <Class name="~views\.html\..*"/>
      </Match>
      <Match>
        <Class name="~Routes.*"/>
      </Match>
      <Match>
        <Class name="~controllers\.routes.*"/>
      </Match>
    </FindBugsFilter>
  )
)
于 2013-01-08T10:15:44.590 回答