Android(Java)利用findbugs进行代码静态检查

时间:2022-04-14 16:24:19
   主要介绍利用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工程检查结果如下图:
  

Android(Java)利用findbugs进行代码静态检查



  点击右上角+标记展开所有bug细节,点击某个bug进入相应代码行

  findbugs会对bug进行分类,同时每一类中会按bug的优先级分类,如 下图
  

Android(Java)利用findbugs进行代码静态检查



  4、findbugs高级功能

  findbugs提供了代码review以及在线同步功能,这样,对于一个团队,尤其是异地工作,可以方便的代码review。以前在阿里应用有专门的开发部门开发类似功能。

  右击工程,选择Properties -> Find Bugs, 勾选Enable project specific settings, store issue evaluations in选择FindBugs Cloud。在Bug Exporer视图中选中某个bug,在Bug Reviews视图中填写review信息即可,如下:
  

Android(Java)利用findbugs进行代码静态检查


  不过国内findbugs被强了,得用vpn。