前言
在日常团队Android项目开发过程中,难免会疏忽出现一些bug,而且这里bug对用户体验是不好的,要几时铲除。而且每个coder的编码习惯不用和编出来的代码也是会有差异的。为了保证团队开发中代码的规范以及尽量避免低级bug,我们往往需要一些工具来进行严格的检查,从而提高代码质量。下面介绍一下四种插件lint、findBugs、PMD、CheckStyles的功能和使用方式。参照总结一下
Lint
Lint是Androidstudio自带检测代码的工具,不用运行程序它也是会提示一些警告,就可以纠正和优化代码,随着项目新版本的迭代,导致有很多无效的资源让已经臃肿的APK变得更肿,我们就可以使用Lint审查工具瘦身,用Android Studio的GenerateSigned APK打包,可以不把一些无用的资源都打包进apk,减轻apk
使用范围
1)潜在的bug
2)可优化的代码
3)安全性
4)性能
5)可用性
6)可访问性
7)国际化
使用方法
1)在AS的工程下选择module、目录或者文件
2)右键选择Analyze > Inspect Code.
3)弹出一个可以检测范围的框,例如project,current file and module等
检测完毕后,左边是检测类型的树形结构,右边则展示详细的信息
也可以通过gradle命令来lint
1)windows
gradle lint
2)mac
./gradlewlint
运行上面的命令执行完后,就会在项目目录/app/build/outputs/lint-results-debug.html生成相应的文件,可用浏览器打开查看。
Lint的详细使用,查看官网
FindBugs
Findbugs是它是一个静态分析工具,它检查类或者jar文件,将字节码和一组缺陷模式进行对比以发现可能的问题。不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用Visitor模式来鉴别代码是否符合一些固定的规范。静态代码检测即不涉及代码运行的代码检测过程,其目的是为了发现代码潜在的缺陷和优化改进项,以保障代码的规范性,及时发现表面层次上的bug,防止低级错误的出现。
使用范围
1)常见代码错误,序列化错误
2)可能导致错误的代码,如空指针引用
3)国际化相关问题:如错误的字符串转换
4)可能受到的恶意攻击,如访问权限修饰符的定义等
5)多线程的正确性:如多线程编程时常见的同步,线程调度问题。
6)运行时性能问题:如由变量定义,方法调用导致的代码低效问题
使用方法
在AndroidStudio中选择Preferences ->Plugins,输入查找FindBugs-IDEA进行插件安装插件,再重启AS就会看到底部有个FindBugs-IDEA的
其中最左边的按钮有三大类,一类是FindBug寻找问题的范围,一类是查找完问题后显示问题的形式,这两个都可以分成文件级,类级别,包级别,模块级别,项目级别。还有一类是常用工具类以及导出结果的工具。
然后在build.gradle文件中加入
1.添加plugin
apply plugin:'findbugs'
2. 要用classes指定临时生成的classes目录,source指定源代码所在目录。同时,你可以用xml.enabled或html.enabled指定你希望输出的报告格式。自动运行Findbus静态代码
task findbugs(type: FindBugs, dependsOn: "assembleDebug") {
ignoreFailures = true
effort = "max"
reportLevel= "high"
excludeFilter = newFile("$configDir/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 "$reportsDir/findbugs/findbugs.xml"
}
html {
destination "$reportsDir/findbugs/findbugs.html"
}
}
classpath = files()
}
通过命令gradle findbugs检测完成后,会在制定的目录下生成报告文档。文档支持xml和html两种格式,本文设置的是html格式,可以直接用浏览器打开。
也可以在工程上,右键FindBugs -> (选择检测的范围)。检测完之后,底部工具栏会跳到FindBugs-IEDA下
我们还可以编写过滤条件
如果我们在没有进行任何过滤的情况下找到的结果可能会令人失望,它会把自动生成的代码也考虑在内。因此我们在进行Bug查找的时候首先需要添加过滤。
下面是过滤掉Android自动生成的代码的配置:
另一个需要过滤的可能就是你测试用例的警告,可以使用如下方式进行过滤
在编写完这些过滤条件就可以在Android Studio中的(File > Settings->FindBugs-IDEA. -> filter选项卡中添加,下面是对应的页面:
详细请看下面链接
PMD
PMD是一个很有用的工具,它跟Findbugs类似,但是它不是检测字节码,它是直接检测源代码。它使用静态分析来发现错误。为什么要将它们同时使用呢?因为它们的检测方法不同,可以取到互补的作用。
使用范围
1)可能的bug——空的try/catch/finally/switch块。
2)无用代码(Dead code):无用的本地变量,方法参数和私有方法。
空的if/while语句。
3)过度复杂的表达式——不必要的if语句,本来可以用while循环但是却用了for循环。
4)可优化的代码:浪费性能的String/StringBuffer的使用。
在AndroidStudio中选择Preferences ->Plugins,输入查找QAPlug-PMD进行插件安装插件,再重启AS
使用方法
1) 导入Plugin:apply plugin: 'pmd'
2) Task配置
task pmd(type: Pmd) {
ignoreFailures = false
ruleSetFiles = files("$configDir/pmd/pmd-ruleset.xml")
ruleSets = []
source'src'
include'**/*.java'
exclude'**/gen/**'
exclude'androidTest/**'
exclude'test/**'
reports {
xml.enabled = false
html.enabled = true
xml {
destination "$reportsDir/pmd/pmd.xml"
}
html {
destination "$reportsDir/pmd/pmd.html"
}
}
}
CheckStyle
看了一些大神的项目下都会一个checkstyle.xml的文件,不知道是什么来的,google了一下,是用来检查代码的工具可以用来检查代码是否规范
使用范围
1)注解
2)javadoc注释
3)命名规范
4)文件头
5)导入包规范
6)尺寸设置
7)空格
8)正则表达式
9)修饰符
10)代码块
11)编码问题
12)类设计问题
13)重复、度量以及一些杂项
使用方法
在AndroidStudio中选择Preferences ->Plugins,输入查找CheckStyle-IDEA进行插件安装插件,再重启AS
打开 AndroidStudio 的设置页面 settings -> OtherSettings 你会发现多了一个 Checkstyle , 点击打开,如下图。
这里的+号可以添加自己的checkstyle文件,这里提供华为的一个checkstyle地址
具体相关的的checkstyle的语法和相关的文档
1)导入Plugin
apply plugin:'checkstyle'
2)设置CheckStyle的版本
checkstyle {
toolVersion'6.1.1'
showViolations true
}
3)配置任务
taskcheckstyle(type: Checkstyle) {
configFile file("$configDir/checkstyle/k12_checkstyle.xml")
configProperties.checkstyleSuppressionsPath = file("$configDir/checkstyle/suppressions.xml").absolutePath
source'src'
include'**/*.java'
exclude'**/gen/**'
exclude'androidTest/**'
exclude'test/**'
ignoreFailures true
classpath = files()
}
相关文章