Android代码审查主要分两部分,代码逻辑正确与否以及代码规范。代码逻辑正确与否更多的需要人为review,无法借助工具,因此这块我们更多的是自己审查自己熟悉的代码,app组内交流会增加代码审查环节,示例错误的不规范的代码以及修正方案,分享代码为什么会产生问题以及如果更好的解决问题。而代码规范及常见错误的检测则主要用到如下两个工具。
Android 代码规范以及常见错误主要用到如下两个工具:
- findBugs-idea。
- Alibaba Java Coding Guidelines
- 这两个工具是有区别的,findBugs-idea的作用侧重于发现代码中可能存在的bug,比如,它能发现某个switch的case语句中没有加break,也能发现某个引用没有做非空判断而将导致空指针异常,当然,它也能够发现一些不好的编码习惯。而Alibaba Java Coding Guidelines则是完全根据《阿里巴巴java开发规约》开发的,能发现规约中的所有问题代码。
下面具体介绍findBugs的安装及简单的介绍:
- android studio在线插件安装方式:
打开File--Settings--Plugins 然后搜索findbugs,如下图,点击安装即可,我这边是已经安装了,所以显示的卸载,安装成功后,重启android studio即可。
重启后,android studio下方出现如下小红虫标志表示安装成功
- 离线插件安装方式:
首先下载插件:http://plugins.jetbrains.com/plugin/3847-findbugs-idea
链接:https://pan.baidu.com/s/16rkclcxoCOTG8ldP6kzuag 密码:dse8
下载完成后,打开File--Settings—Plugins,如下图,点击Install plugin from disk…,选择刚才下载的离线包,即可。
- 使用方法
安装完毕后,在java文件上点击鼠标右键,会弹出FindBugs的选项,子选项中有分析选中文件,分析整个包文件,分析整个模块等。
接下来我们点击第一个,分析选中文件,稍微等待一下,下方会弹出代码问题,如下图,可以看到有Correctness,Performance, Dodgy code 三类错误,常见的错误类型根据缺陷的性质,大致可以分为下列几类,也就是说,这几类错误,findbugs是可以探测出来的。
·Bad practice 不好的做法
·Correctness 可能有不正确
·Dodgy code 糟糕的代码
·Experimental 实验
·Internationalization 国际化
·Malicious code vulnerility 恶意的代码漏洞
·Multithreaded correctness 多线程问题
·Performance 性能问题
接下来我们点进大类具体看看错误,如下图,中间会展示出错误代码的位置,右边则展示具体的错误信心,借助翻译大概可以明白,是logcat打印了一个数组,而这个打印只会打印出数组的内存地址来,用处不大,建议通过tostring方法将数组转化成一个可读的字符串,则可看出具体内容。
下面介绍Alibaba Java Coding Guidelines
阿里巴巴于10月14号在杭州云栖大会上,正式发布《阿里巴巴Java开发规约》的扫描插件。该插件在扫描代码后,将不符合规约的代码按Blocker/Critical/Major/ Minor/Trivial四个等级显示在下方,甚至在IDEA上,该插件还提供了实时检测功能,编写代码的同时也能快速发现问题所在。对于历史代码,部分规则实现了批量一键修复的功能。
Blocker: 即系统无法执行、崩溃或严重资源不足、应用模块无法启动或异常退出、无法测试、造成系统不稳定。
- 严重花屏
- 内存泄漏
- 用户数据丢失或破坏
- 系统崩溃/死机/冻结
- 模块无法启动或异常退出
- 严重的数值计算错误
- 功能设计与需求严重不符
- 其它导致无法测试的错误, 如服务器500错误
Critical:即影响系统功能或操作,主要功能存在严重缺陷,但不会影响到系统稳定性。
功能未实现
-
- 功能错误
- 系统刷新错误
- 数据通讯错误
- 轻微的数值计算错误
- 影响功能及界面的错误字或拼写错误
- 安全性问题
Major:即界面、性能缺陷、兼容性。
- 操作界面错误(包括数据窗口内列名定义、含义是否一致)
- 边界条件下错误
- 提示信息错误(包括未给出信息、信息提示错误等)
- 长时间操作无进度提示
- 系统未优化(性能问题)
- 光标跳转设置不好,鼠标(光标)定位错误
- 兼容性问题
Minor/Trivial:即易用性及建议性问题。
- 界面格式等不规范
- 辅助说明描述不清楚
- 操作时未给用户提示
- 可输入区域和只读区域没有明显的区分标志
- 个别不影响产品理解的错别字
- 文字排列不整齐等一些小问题
- android studio在线插件安装方式:
打开File--Settings--Plugins 然后搜索alibaba,如下图,点击安装即可,我这边是已经安装了,所以显示的卸载,安装成功后,重启android studio即可。
- 重启后,出现如下界面标志,说明安装成功。
两个按钮分别表示,编码规则扫描以及是否打开实时检测功能。
- 如何使用
毕竟是中国人自己搞的东西,使用起来也是特别方便的,点击下图两个按钮即可开始扫描
扫描完成后,在下方则会列出问题点,右下方则描述了具体的错误信息:
当然,也可以打开实时扫描,在编码的时候,就可以实时提示错误,如下图: