Android提供了一个代码检查工具Android Lint,能够对项目中潜在正确性、安全性、性能、可用性、可访问性、国际化等问题和隐患进行检查,并生成html和xml两种文件的扫描报告。Android Lint提供了6大类共200多条检查项,并对每个检查项指定了严重等级。如果需要搭建一个企业内部的Android静态代码扫描工具,直接使用Android自带的Android Lint检查是不够的,会有大量的误报和漏报。因此需要根据企业内部的开发规范、技术框架特性和业务特点制定自己的Lint检查规则。
1. Android Lint原生检查规则
目前Android Lint的检查分为下面六大类:
-Correctness正确性检查
-Security 安全性检查
-Performance 性能检查
-Usability 可用性检查
-Accessibility 未使用到资源
-Internationalization 国际化检查
需要详细查看所有的检查项以及每项的描述、严重性等,可以通过如下命令:
lint –list
lint –show
2.自定义规则
下面重点说一下如何根据企业的代码规范、开发框架和业务特点定制lint检查规则。这个分两种,一种是对Android Lint自带的规则进行修改,一种是在现有规则基础上编写新的规则。
2.1 对现有Android Lint规则进行修改:
在java文件中使用@SuppressLint关键字屏蔽某些检查
在xml文件里使用tools:ignore属性屏蔽某些检查
在项目工程根目录下编写Lint.xml文件,制定规则的作用域、级别等信息。
2.2 在现有Andorid Lint规则的基础上编写新的规则
需要继承IssueRegistry和Detector。继承IssueRegistry注册自定义的issue;继承Detector实现自定义探测器。实例代码如下: