如何提高android代码的质量(CheckStyle、Findbugs、PMD、Lint)
来源:互联网 发布:诸神黄昏升级数据 编辑:程序博客网 时间:2024/06/05 02:03
转自:http://blog.csdn.net/hp910315/article/details/48809935
为了保证团队开发中代码的规范,我们往往需要一些工具来进行严格的规范检查,下面将要介绍的四个工具是我们在Android开发中往往会用到的,这些工具只需要在Android Studio中的Gradle构建脚本中进行配置就可以了。
一、下载案例
通过案例代码可以对这些工具进行测试和了解,下载链接:https://github.com/vincentbrison/vb-android-app-quality
项目结构:
gradle脚本被分离在几个文件中:
1、根目录下的gradle文件
如下图所说,在根目录中有一个build.gradle文件。从这个文件所在的位置也可以看出,它是关于整个项目的配置。
2、app目录下的gradle文件
如下图所示,在app目录下有一个build.gradle文件,它是构建整个Android应用的配置文件。
3、config目录下的gradle文件
如下图所示,在config目录有一个quality.gradle文件,这个文件就是本文要讨论的重点,它里面保存和配置了这个项目所要使用到的工具。从config目录下的quality目录下的几个目录可以看到checkstyle、findbugs、lint、pmd这几个工具的所定义的规则文件。
二、工具介绍
1、CheckStyle
这个工具用来自动检测java代码,。当启动CheckStyke,它就可以对你的java代码进行检查并且将所有的错误通知给你。
下面的代码就表示项目中使用CheckSytle。它被配置在上面的config目录下的gradle文件中。
task checkstyle(type: Checkstyle) { configFile file("${project.rootDir}/config/quality/checkstyle/checkstyle.xml") configProperties.checkstyleSuppressionsPath = file("${project.rootDir}/config/quality/checkstyle/suppressions.xml").absolutePath source 'src' include '**/*.java' exclude '**/gen/**' classpath = files()}
从这个代码中可以看到,它是一个任务,这个任务就可以根据checkstyle.xml和suppressions.xml这两个文件定义的规则来检测你的java代码。
运行checkstyle之后,它就会生成一个报告,这个报告描述了它在你的项目中所找到的所有问题。
关于checkstyle的更多配置,可以参看它的说明文档:https://docs.gradle.org/current/dsl/org.gradle.api.plugins.quality.Checkstyle.html
2、Findbugs
Findbugs使用静态分析来检测java字节码中发现的错误模式。所以它分析的是程序的字节码,它不仅可以检测出一些普遍的错误,例如错误的boolean运算,它也可以检测由于对语言特性误解而产生的错误。
跟上面一样,这个工具在项目的使用是配置在上面的config目录下的gradle文件中。
task findbugs(type: FindBugs, dependsOn: assembleDebug) { ignoreFailures = false effort = "max" reportLevel = "high" excludeFilter = new File("${project.rootDir}/config/quality/findbugs/findbugs-filter.xml") classes = files("${project.rootDir}/app/build/intermediates/classes") source 'src' include '**/*.java' exclude '**/gen/**' reports { xml.enabled = false html.enabled = true xml { destination "$project.buildDir/reports/findbugs/findbugs.xml" } html { destination "$project.buildDir/reports/findbugs/findbugs.html" } } classpath = files()}
它也是一个任务,并且跟上面CheckStyle一样,另外从代码中可以看出,它支持htm和xml两种报告形式,我们可以从中选择一种,上面使用的是html,因为它更具有可读性,另外需要设置报告输出的路径。
由于Android项目是从Java项目略有不同,强烈推荐使用findbugs-filter。它基本上忽略了R文件和你的Manifest文件。顺便说一句,由于FindBugs分析你的代码字节码,你至少需要编译一次你的代码才能够测试它。
3、PMD
PMD是一个很有用的工具,它跟Findbugs类似,但是它不是检测字节码,它是直接检测源代码。它使用静态分析来发现错误。为什么要将它们同时使用呢?因为它们的检测方法不同,可以取到互补的作用。
跟上面一样,这个工具在项目的使用是配置在上面的config目录下的gradle文件中。
task pmd(type: Pmd) { ignoreFailures = false ruleSetFiles = files("${project.rootDir}/config/quality/pmd/pmd-ruleset.xml") ruleSets = [] source 'src' include '**/*.java' exclude '**/gen/**' reports { xml.enabled = false html.enabled = true xml { destination "$project.buildDir/reports/pmd/pmd.xml" } html { destination "$project.buildDir/reports/pmd/pmd.html" } }}
跟Findbugs基本一样,在pmd-ruleset.xml中可以使用自定义的规则,关于规则的定义可以参考文档http://pmd.sourceforge.net/pmd-5.1.1/howtomakearuleset.html。
建议不要使用默认的规则,并且在配置中加入下面这行代码:
ruleSets = []
在上面的配置中我也加了,如果不加的话,默认规则会跟自定义的规则都执行,这样可能导致自定义的规则失效,原因就是默认规则里面可能也定义了这个规则。
4、Android Lint
Android Lint是一个静态的代码分析工具,它可以检测Android项目源文件中潜在的bug,也可以在正确性、安全性、性能、可用性、可访问性和国际化等方面进行优化。正如官方网站所说,Android Lint是另一种静态分析工具,专门为Android服务。它是非常强大的,能给你大量的建议以提高你的代码质量。
跟上面一样,这个工具在项目的使用是配置在上面的config目录下的gradle文件中。
android { lintOptions { abortOnError true xmlReport false htmlReport true lintConfig file("${project.rootDir}/config/quality/lint/lint.xml") htmlOutput file("$project.buildDir/reports/lint/lint-result.html") xmlOutput file("$project.buildDir/reports/lint/lint-result.xml") }
建议使用单独的文件来定义检测规则。下面这个网站定义了所有规则在最近的ADT版本中。
http://tools.android.com/tips/lint-checks
除了带有“severity”级别为“ignore”的集合外,Android Lint中总是会检测文件中定义的所有的规则。
5、使用
现在在项目中有4个工具,很明显,如果可以同时使用这四个工具那就是最好了,所以可以在gradle任务之间加入一些依赖,例如任务一个接一个的执行,可以使用“check”任务来加入这些工具间的依赖,代码如下:
check.dependsOn 'checkstyle', 'findbugs', 'pmd', 'lint'
现在,当执行“check”任务,Checkstyle, Findbugs, PMD和 Android Lint将会被执行,当你代码提交了并且push到远程代码仓库请求merge的时候,这是很好的办法来检测代码的质量。
最终使用下面代码来执行check任务就可以代码的检测了。
gradle check
原文链接:
How to improve quality and syntax of your Android code
- 如何提高android代码的质量(CheckStyle、Findbugs、PMD、Lint)
- 如何提高android代码的质量(CheckStyle、Findbugs、PMD、Lint)
- 如何利用工具提高你的Android代码质量(Checkstyle、Findbugs、PMD)
- idea,配置checkstyle 【提高代码质量,检查代码规范的工具 】Checkstyle,FindBugs,PMD,Jtest
- idea,配置checkstyle 【提高代码质量,检查代码规范的工具 】Checkstyle,FindBugs,PMD,Jtest
- 代码质量检测工具FindBugs、PMD和CheckStyle对比
- lint/checkstyle/findbugs/pmd使用汇总
- java进阶(四)------java编程规范---代码质量检测工具FindBugs、PMD和CheckStyle的安装
- 有效检查Java代码的工具:PMD、Checkstyle、findbugs、Jalopy
- 代码检测工具(一)FindBugs、PMD和CheckStyle概况、安装
- 代码走查工具FindBugs, PMD,CheckStyle
- java进阶(三)------java编程规范---代码质量检测工具FindBugs、PMD和CheckStyle对比
- checkstyle pmd findbugs工具比较(转)
- Checkstyle, PMD, Findbugs对比
- Checkstyle, PMD, Findbugs对比
- CheckStyle提高代码质量
- 使用lint提高android代码质量
- maven 使用 checkstyle findbugs pmd 代码覆盖率检测等插件的使用
- Glide的进一步学习
- Android 安全框架 -- 总概
- mysql中的with rollup
- 总结--美丽的敷衍
- 'putText' is not a member of 'cv'
- 如何提高android代码的质量(CheckStyle、Findbugs、PMD、Lint)
- 公司沟通策略
- Android服务Services小结(二)
- html5多媒体组件API
- php 正则
- 破解linux root密码
- Java泛型的实现:原理与问题
- 错误:Error:Configuration with name 'default' not found.
- 前台传入后台中文乱码