【工利其器】Android Lint篇——为Android量身定作的静态代码审查工具

前言android

       咱们在进行代码优化的时候,每每是经过开发者的经验来判断哪些代码可能存在潜在问题,哪些资源的使用不合规范等。实际上Android SDK提供了一款功能很是强大的工具,来帮助开发者自动检测代码的质量及安全问题,这款工具就叫Android Lint。Lint提供了命令行方式以及与IDE集成的方式来执行,如今Android开发者基本上都使用Android Studio(后文简称AS,下同)来进行开发,强大的AS也集成了该工具,本文就基于AS3.2版原本介绍Lint。程序员

 

1、Android Lint简介安全

       Android Lint是SDK Tools 16(ADT16,当前笔者使用的ADT已是26了,因此如今就不用担忧本身所使用的SDK中不包含lint工具了)开始引入的一个代码扫描工具,路径为:Sdk\tools\bin\lint.bat。经过它对Android工程源代码进行扫描和检查,可发现潜在的问题,以便程序员及早修正这个问题。经过Lint,无需实际执行应用,也没必要编写测试用例,就能够检查Android项目中源文件是否存潜在的错误,以及在正确性、安全性、性能、易用性、无障碍性和国际化方面是否须要优化改进。工具

 

2、Lint的工做原理布局

       会使用Lint了,能够简单了解一下它的原理,即工做过程。Android Lint 的工做过程比较简单,一个基础的 Lint 过程由 Lint Tool(检测工具),Source Files(项目源文件) 和 lint.xml(配置文件) 三个部分组成,Lint Tool 读取 Source Files,根据 lint.xml 配置的规则(issue)输出结果(以下图)。性能

 

3、Lint在AS中的使用测试

       因为如今Lint是直接集成到AS中的,因此能够直接使用,无需再安装。字体

  一、Lint的启动优化

       Lint在Android Studio中的使用步骤很是简单,有两条途径能够启动Lint:ui

    (1)从主菜单栏中启动

       点击主菜单 > Analyze > Inspect Code会弹出检查范围选择对话框

    

该对话框用于选择要检查的范围,根据实际须要选择便可。其中选择“Custom scope”时能够自定义检查范围,

选择好检查范围后,点击“OK”后,Lint就开始启动了,AS界面的底部会表示正在运行中,稍等一下子就能看到检查结果了。

    (2)经过右键菜单启动

       在AS界面文件或编辑界面点击右键,在弹出的菜单中也能够看到“Analyze  > Inspect Code”选项,后面就和上面的方法同样了,这里再也不赘述。

 二、查看检查结果

       检查完成后会能够看到以下界面板了:

 

在这个面板中,“Lint检查结果区”展现的就是经过Lint工具检查出来的结果。当点击这些结果中的问题项时,能够在右边看到该类问题或者具体问题的详情,而后自动完成修改或者根据对问题的描述手动修改。

  三、结果面板功能说明

        上述结果面板从左到右能够分为三个大区域:工具栏,结果区和问题详情区。

     (1)工具栏

       工具栏中提供了多个经常使用的功能,把鼠标移到图标上时会给出相应的提示,这里对部分按钮进行说明:

       1)图中①处,Group By Serverity:检查结果按照问题严重程度分组。

       2)图中②处,Group By Directory:检查结果按照目录分组。

       3)图中③处,Filter resolved items:过滤掉已经解决的问题项。

       4)图中④处,Export:导出为HTML或者XML文档。

       5)图中⑤处,Edit Settings:编辑设置,经过这里能够对Lint进行设置,后面会详细介绍。

       6)图中⑥处,Apply a quickfix:快速修复,点击这里能够直接对所选问题进行快速修复。

    (2)检查结果区

       因为这里检查代码不只仅只有Lint在工做,还有不少其它插件也在执行,因此结果中有不少其它工具检查出来的问题,Android > Lint下面的目录就是Lint的结果区了。若是展开Lint的结果,会发现这些问题都是Android所特有的问题,好比布局文件、控件、AndroidManifest文件中的问题,可见Lint就是为Android而量身定作的。默认时这些结果是按照必定的分类来分组的,好比,Correctness、Performance、Security等,这问题类型是否须要检查,也是在设置中设置的,后面会详细介绍。固然经过这个结果区还能够看到Java、Kotlin、Spelling等的问题,也同样解决。

    (3)问题详情区

       若是鼠标在结果区选择的是某一类问题,这部分显示了所选问题的详情,解决建议,以及快速修复等功能。其中“Run inspection on”按钮,点击后会弹出以下对话框:

这里选择在哪一个范围内检查同类问题。

       若是在结果区选择的是具体的问题项,那么右边显示的就是对问题所在的位置进行预览。以下图所示:

       经过上面的介绍,能够看到Lint的基本使用仍是比较简单的。

 

4、对Lint进行设置

  一、进入设置界面的两种方式

       有两种途径能够进入到Lint的设置界面:

    (1)File > Settings > Editor > Inspections;

    (2)Lint控制面板工具栏的设置按钮,即第二节中的按钮⑤。

  二、设置面板预览

 三、设置项功能介绍

       设置界面中的各个区域和按钮的功能都在图中标注了,这里再对按钮①和按钮②进行说明。

    (1)筛选按钮   

       这是一个下拉框,经过该处能够筛选要显示的功能项。

    (2) 问题严重等级设置

  

下拉列表,会显示能够自定义的等级及对应颜色,能够经过此处编辑选择项的严重等级。点击“Edit severities”能够添加新的严重等级,以及编辑各等级德颜色和字体。固然,系统默认的问题严重性等级和这里略有区别,系统默认的严重等级由高到低依次为:Fatal、Error、Warning、Information、Ignore 5个等级。

 

5、Lint问题种类

       从设置面板中能够看到,问题能够分为以下几个大类:

    (1)Accessibility 辅助选项,好比ImageView的contentDescription每每建议在属性中定义等。

    (2)Compliance 合规性,违反了Google Play的要求,好比使用了过时的库版本,性能、安全性、API等级等没有遵循新系统的要求等。

    (3)Correctness 不够完美的编码,好比硬编码、使用过期API等。

    (4)Internationalization 国际化,直接使用汉字,没有使用资源引用等

    (5)Interoperability 互操做性,好比和Kotln的交互等。

    (6)Performanc 对性能有影响的编码,好比:静态引用,循环引用等

    (7)Security 不安全的编码,好比在 WebView 中容许使用 JavaScriptInterface等

    (8)Usability 可用的,有更好的替换的 好比排版、图标格式建议.png格式等

 

6、根据规则名称来检查

       有时候咱们须要明确检查某一类问题,好比查找项目中没有使用的资源,并将它们删除,它们会耗性能。能够经过以下的方式来找到这些没有使用的资源:点击Analyze > Run Inspection By Name,会弹出对话框

输入该规则的名称,按“Enter”键,提示选择检查范围:

点击“OK”按钮,结果中只会显示“Unused resoures”的问题项目:

该功能能帮咱们明肯定位某一类问题。

 

7、自定义Lint

       对于多数状况,默认的Lint已经足够使用了,但总有一些需求是Lint自带规则不能知足的,这个时候就须要自定义Lint规则了。固然,限于笔者对Liint的使用经验有限,对自定义Lint还不太熟悉,这里推荐一篇文章,有兴趣的能够深刻研究:

自定义Lint实践https://blog.csdn.net/ouyang_peng/article/details/80374867

 

参考:

       http://www.javashuo.com/article/p-nnisujjk-ns.html

       http://tools.android.com/tips/lint

       https://developer.android.google.cn/studio/write/lint

       https://blog.csdn.net/hudashi/article/details/8333349

       https://www.jianshu.com/p/9eaf7c0eee67

 

结语

       本文只介绍了Android Lint常见的一些使用方法,必定还有不少很牛的功能,但愿读者们多多探索,多多交流,共同进步,谢谢!

相关文章
相关标签/搜索