使用FindBugs对Java代码进行静态分析

FindBugs

FindBugs是一个Java静态分析工具,用来检查类或者jar文件,查找代码可能存在的问题。
FindBugs官网地址:http://findbugs.sourceforge.net/。
检测完成后会生成一份详细的报告,借助这份报告可以找到潜在的Bug,比如NullPointException,还可以检查特定的资源没有关闭,例如:查询数据库没有调用Cursor.close()等。
如果采用人工的方式很难发现类似的bug,有一些Bug没有发现的情况下,直到运行时才出现。
FindBugs可以自动化化的分析代码,帮助我们提高代码质量。
FindBugs操作的是Java字节码,不是源代码。

Grade配置

apply plugin: "findbugs"

findbugs {
    ignoreFailures = true
    toolVersion = "3.0.1"
    reportLevel="high"
   effort = "max"
}

ignoreFailures的配置在有Bug报告的情况,是否返回错误,设置为true的情况下会忽略错误,设置为false有错误信息时会立即中断。
潜在错误可分为三个等级,它们是在reportLevel中进行设置:

  • high
  • medium
  • low

默认为medium
effort:是分析级别,有三个值可以设置: max,default,min。更高的级别提高了分析的精度,同时也会运行更长的时间,以及消耗更多的内存。

运行FindBugs

运行命令gradle check可以直接运行findBugs,它会运行两个任务:

  • findbugsMain
  • findbugsTest

也可以单独运行命令:

gradle findbugsMain
gradle findbugsTest

生成的报告默认的目录在build/reports/findbugs中,也可以通过reportsDir对生成文件的目录进行设置。

生成文件格式

FindBugs的报告文件默认是xml格式,生成html格式,需要配置:

tasks.withType(FindBugs) {
    reports {
        xml.enabled false
        html.enabled true
    }
}

参考

Android-使用FindBugs

你可能感兴趣的:(使用FindBugs对Java代码进行静态分析)