主要介绍利用java静态代码检查工具findbugs进行代码检查,包括其作用、安装、使用、高级功能(远程review和bug同步)。
虽然Android提供了Test Project工程以及instrumentation可以方便的进行单元测试,不过据了解国内Android开发会写自测代码的寥寥无几。那么有没有简单的方法一定程度上保证代码质量呢。Android应用开发大多使用Java,所以对于Java代码检查工具都可以适用,本文介绍其中功能较为强大的findbugs。
1、findbugs作用
findbugs可用于对java代码进行静态检查,检查bug类型包括:
XHTML
Bad practice 坏的实践:常见代码错误,序列化错误,用于静态代码检查时进行缺陷模式匹配
Correctness 可能导致错误的代码,如空指针引用等
国际化相关问题:如错误的字符串转换
可能受到的恶意攻击,如访问权限修饰符的定义等
多线程的正确性:如多线程编程时常见的同步,线程调度问题。
运行时性能问题:如由变量定义,方法调用导致的代码低效问题。
记住一点,findbugs只能用于代码静态检查,对于动态运行中不断变
化的数据产生的bugs是无法捕捉的,所以不能代替单元测试、功能测试、性能测试,只能说一定程度上检查简单错误。
2、findbugs安装
通过Eclipse插件进行安装
Eclipse -> Help -> Install New Software, site输入http://findbugs.cs.umd.edu/eclipse,进行安装。
3、findbugs使用
右击工程,选择Find Bugs -> Find Bugs即会对代码开始检查。检查完成后通过Windows -> Show View -> Find Bugs -> Bug Exporer查看bug列表,如TrineaAndroidCommon工程检查结果如下图:
点击右上角+标记展开所有bug细节,点击某个bug进入相应代码行
findbugs会对bug进行分类,同时每一类中会按bug的优先级分类,如
下图
4、findbugs高级功能
findbugs提供了代码review以及在线同步功能,这样,对于一个团队,尤其是异地工作,可以方便的代码review。以前在阿里应用有专门的开发部门开发类似功能。
右击工程,选择Properties -> Find Bugs, 勾选Enable project specific settings, store issue evaluations in选择FindBugs Cloud。在Bug Exporer视图中选中某个bug,在Bug Reviews视图中填写review信息即可,如下:
不过国内findbugs被强了,得用vpn。