如何触发DM_CONVERT_CASE

How to trigger DM_CONVERT_CASE

我工作的代码库对 String#toUpperCase()String#toLowerCase() 的无参数版本有相当多的调用。正如在其他地方有详细记录的那样,这会给使用土耳其语言环境的人带来问题。所以我希望 FindBugs 告诉我何时在我们的代码中使用它。 FindBugs 据说有这样的检查 (DM_CONVERT_CASE),根据 http://findbugs.sourceforge.net/bugDescriptions.html 这应该是 3.0.1 中的默认检查。但是我从来没有看到它被报道,尽管现在我们的代码库中确实使用了那些无参数调用。

我怎样才能让 FindBugs 报告这个?

我使用 Gradle 到 运行 FindBugs 给我:

findbugs {
    sourceSets = [ subProject.sourceSets.main, subProject.sourceSets.test ]
    ignoreFailures = true
    toolVersion = '3.0.1'
}
// exclude generated java sources - by explicitly setting the base source dir
findbugsMain.source = 'src/main/java'

DM_CONVERT_CASE 违规仅在 reportLevel 设置为 low 时触发。显然,大小写转换在 FindBugs 中被标记为低优先级错误。

Gradle documentation 对于 reportLevel:

The priority threshold for reporting bugs. If set to low, all bugs are reported. If set to medium (the default), medium and high priority bugs are reported. If set to high, only high priority bugs are reported.

您需要添加以扩展您的配置:

findbugs {
    sourceSets = [ subProject.sourceSets.main, subProject.sourceSets.test ]
    ignoreFailures = true
    toolVersion = '3.0.1'
    reportLevel = 'low'
}
// exclude generated java sources - by explicitly setting the base source dir
findbugsMain.source = 'src/main/java'

您可以看到它在我尝试重现问题时创建的项目中工作:https://github.com/mkordas/DmConvertCase

编辑:

对于使用 Maven 的人,您需要按以下方式配置 findbugs-maven-plugin

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>findbugs-maven-plugin</artifactId>
    <version>3.0.1</version>
    <configuration>
      <threshold>Low</threshold>
    </configuration>
  </plugin>