github 检查代码质量_Android(8): 代码质量检查

代码质量检查是持续性的工作,检查的两个基本工具是FindBugs和CheckStyle。在实际项目中,检查的工作由测试人员实施,开发人员进行配合,形成日常性的工作。每天会对最新的代码进行检查,使用脚本(一般是测试用python写的)对检查结果进行解析,定位到代码行并根据SVN记录关联责任人,输出邮件,开发则根据邮件结果进行修复。

对于代码进行质量检查,在刚开始会有一些抵触情况。有的是之前没有接触过,有的是觉得需求已经很紧了,还要花时间解决这些问题。还有一方面原因是一刚开始扫描出来的问题会特别多,特别是代码规范的问题,好几千条。但只要走出第一步,熟悉了规则,解决了一些问题积累经验,后面的问题就比较少了。

FindBugs

FindBugs是针对java的静态分析工具,根据经验,确实能发现一些没有意识到的问题,对提高代码质量还是有帮助。扫出的问题以java文件为单位,会定位到代码行,并给出问题说明,处理起来也比较方便。

FindBugs有一些规则和级别,如果觉得有一些规则没太大必要可以进行调整。印象中有两个规则大家觉得比较“无聊”:第一个是有变量申明了但没有使用,第二个是没在静态函数中访问静态变量。这两个如果不处理也没什么问题,但还是最好处理,形成最佳实践。比如有没有使用的变量,可能是代码有Bug,应该使用的,笔误成了其它的变量;确实没有使用的话,就应该删掉。

FindBugs在实际项目中,没有集成到Android Studio,是测试对指定的代码目录进行了扫描。详细的使用方法可参考FindBugs的官网。

CheckStyle

CheckStyle是代码规范分析工具,保证团队的代码符合一个统一的代码规范。CheckStyle的检查也是根据定义的规范文件来的。实际项目中使用的规范文件据说是华为使用的,Github上有下载,我们使用的也是这份规范,并补充了一些规则。

CheckStyle有一个Android的插件,因些一般是集成到Android Studio中。

//添加Plugin

apply plugin: 'checkstyle'

//设置CheckStyle版本

/**

* 检查代码规范的checkstyle

* http://ju.outofmemory.cn/entry/187977

*/

checkstyle {

toolVersion '6.0'

showViolations true

}

//设置配置文件

task checkstyle(type: Checkstyle) {

configFile file("config/checkstyle/checkstyle.xml")

source 'src/main/java'

include '**/*.java'

exclude '**/gen/**'

ignoreFailures true

classpath = files()

}

配置好后,要进行检查,执行gradle checkstyle任务就好了,最终检查结果会生成HTML和XML文件。结果也是同FindBugs一样生成报告邮件。

在实际项目中,有争议的还是规则。有些人之前没有进行过代码规范的训练,已经形成了自己的习惯,扫描出来问题就特别多,但还是以规则为主;且规则不宜作太大的修改,尽量跟公司内还有业界保持一致。

有些规则的细节,可根据项目实际情况调整。比如函数最多参数个数这个规则就调了好几次,因为加入了一些历史代码,且不太好修改,只好调整规则。比如重复代码的行数,开始定10行,后来发现空行也算进去了,后面又调整成15行。其他的一些规则,如变量命名、方法命名则没有什么好商量的,按规则的来,习惯就好了。

Lint Clean

在实际项目中,我们还使用了一个LintClean这个工具。主要作用是清除项目中没有使用的资源文件及资源项,如有个xml、png或字符串没有引用。它会扫描出来并进行删除,也会将扫描结果保存到xml。通过持续清除项目中无效资源,即可保证工程整洁,也能防止包文件过大,虽然混淆也会清除无效资源,但还是有一定影响。

这个工具也是插件形式提供的,也可集成到项目,

dependencies {

classpath 'com.droidtitan:lint-cleaner-plugin:0.3.0'

}

apply plugin: 'com.droidtitan.lintcleaner'

配置好后,执行gradle lintClean,就可进行检查。有时,有些资源可能是resources.getIdentifier的使用的,这样就要加一些白名单。LintClean也提供了加白名单的功能。检查的结果也是由测试人员编写的脚本进行解析,定位到责任人,形成报告并发送邮件。

跟LintClean一起,我们还加了另一个功能,就是扫描资源目录下的png、jpg等图片资源文件,当发现文件大小超过100KB,会单独列出来,当成文件过大警告。根据项目的实际经验,一般单张图片大小比较少的情况下需要100K。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值