APP Crash隐患克星-Godeyes

移动客户端APP最忌讳的问题之一就是发生崩溃、闪退、异常等问题,不仅影响产品功能,而且给用户带来非常不好的用户体验。Godeyes就是一款专门针对无线APP代码Crash隐患进行静态扫描的工具,包括Godeyes-Android和Godeyes-iOS两个平台的代码检查工具。Godeyes支持常用的Windows、Linux和mac三种操作系统,扫描规则源自项目典型crash案例代码分析,扫描准确率到达90%以上。在无线APP快速迭代过程中,对代码质量起到一个良好的保驾护航作用。本文重点介绍Android APP Godeyes工具的使用情况。

      对于Android端应用,Godeyes工具提供了Android Eclipse插件版本、Android Studio插件版本以及 Jenkins 集成版本三种版本,满足了几乎所有的Android项目开发环境需求。插件版本直接把相关工具包放入Eclipse开发环境的plugins目录中或者在Android Studio开发环境中Install已下载的plugin,然后在开发环境中对插件进行相关配置即可使用;Jenkins 集成版本是Godeyes命令行版,推荐在Linux服务器上运行,支持接入jenkins平台进行daily run,通常运用于项目的自动化持续集成流程中。不管是哪种集成方式,使用起来都非常简单方便。

Godeyes工具也一直在不断优化丰富中,经过多个版本的迭代,目前主要可以扫描Android项目以下方面的隐患问题:

系统API兼容性隐患

  • 大图片解析导致OOM的隐患
  • 格式化数字异常未捕获的隐患
  • ArrayList对象使用未判空隐患
  • 使用String.split结果未判断长度隐患
  • 添加Fragment前未判断是否IsAdded隐患
  • 使用除法或求余没有判断分母长度隐患
  • 使用String.substring前未判断String长度隐患
  • 通过HashMap获取对象使用未判空隐患
  • ArrayList使用get方法获取元素未判断下标有效性的隐患
  • 使用动态载入界面的元素未判断是否属于此界面的隐患
  • 使用IO流后没有关闭导致OOM隐患
  • 数据库操作异常未捕获处理隐患
  • 主动抛出异常未捕获处理隐患
  • dismiss()方法调用前isShowing未判断的隐患
  • 方法中存在return null返回对象直接进行方法调用隐患
  • 查询数据库没有关闭游标导致OOM的隐患
  • 销毁Dialog前是否isShowing未判断隐患
  • 复写生命周期函数没有调用super函数隐患
  • 数组越界隐患

Godeyes也提供了高级配置权限。开发者可以根据实际情况自行配置扫描规则,只有选择的规则才会进行扫描。此外,针对Godeyes的扫描结果进行分析后觉得不存在隐患,无需修复的问题,可以进行白名单配置,将需要过滤的类路径和行号添加到白名单后,该行将不输出到扫描结果中。

Godeyes扫描结果提供HTML格式的Report,并且支持详情跳转、代码示例、推荐方案等功能,查看和分析问题非常方便。代码检查效果示例如下图所示:(我们项目通过该工具扫描检查修复了30+个隐患问题)

Godeyes官网地址:http://godeyes.duapp.com/

共有 0 条评论评论