使用lint来改善你的代码

时间:2024-05-20 09:09:29

一.lint简介

什么是静态代码分析

静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。

在软件开发过程中,静态代码分析往往先于动态测试之前进行,同时也可以作为制定动态测试用例的参考。统计证明,在整个软件开发生命周期中,30% 至 70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。

静态代码分析工具的优势

  1. 帮助开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷。

  2. 帮助代码设计人员更专注于分析和解决代码设计缺陷。

  3. 显著减少在代码逐行检查上花费的时间,提高软件可靠性并节省软件开发和测试成本。

什么是Lint

lint是最著名的C语言工具之一,是由贝尔实验室SteveJohnson于1979在PCC(PortableC Compiler)基础上开发的静态代码分析,一般由UNIX系统提供。

Android-Lint是SDK Tools 16 (ADT 16)之后才引入的工具。 
它通过检测你的代码来发现潜在的bug或是关于正确性、安全性、性能、可用性、可访问性以及国际化方面的最优改进。

Lint能够很容易的帮你识别代码中存在的一些问题,而不需要运行应用程序或写任何测试用例。lint检测出的每一个问题都有描述信息和重要级别,你可以按照这个级别来确定需要修改的代码优先级。你也可以通过降低问题的优先级来忽略跟你的项目无关的问题,同样你也可以提高问题的优先级。你可以使用lint的命令行接口来把它集成到你的自动化测试流程中。

Lint工作流程

使用lint来改善你的代码

二.运行lint

通过Android Studio 运行 Lint

使用lint来改善你的代码

使用lint来改善你的代码

点击AS上面的绿色的运行按钮是不会触发lint检查的,如果你想每次点击运行都进行lint检查,可以如下设置:

使用lint来改善你的代码

使用lint来改善你的代码

使用lint来改善你的代码

三.配置lint

默认Lint检查

使用lint来改善你的代码

在Java文件中配置Lint检查

要在Android 工程里的某一个类或方法禁用lint检查,可以在Java代码中添加 @SuppressLint 注解。

下面的例子展示了如何禁止lint检查onCreate方法中的NewApi问题。而它会继续检查该类的其他的方法的 NewApi问题。 

@SuppressLint("NewApi")

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

下面的例子展示了如何禁止lint检查 FeedProvider的ParseError问题

@SuppressLint("ParserError") 
public class FeedProvider extends ContentProvider {

如果想要禁止lint检查Java文件的所有问题,可以使用关键字“all”: 
@SuppressLint(“all”)

在XML文件中配置Lint检查

你可以使用tools:ignore属性来禁用lint检查你xml文件的指定部分。为了让lint识别到这个属性,你应该在xml文件中添加下面这个命名空间:

namespace xmlns:tools="http://schemas.android.com/tools"

下面这个例子展示了如何禁止lint检查xml布局文件中标签的 UnusedResources 问题。如果父标签声明了 ignore 属性,子标签就可以继承该属性。下面这个例子中,TextView的lint检查也被禁止了:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
tools:ignore="UnusedResources" > 
<TextView 
    android:text="@string/auto_update_prompt" /> 
</LinearLayout>

要禁止检查多个问题,可以用逗号分隔:

tools:ignore="NewApi,StringFormatInvalid"

如果想要禁止lint检查XML文件的全部问题,使用关键字“all” 
tools:ignore=”all”

四.lint实践

lint检查整个项目的话,可能会出现oom,可以只针对某一项进行检查,不会出现问题.

比如只检查无用的资源,最终删除了6m多的无用资源,使安装包从27m变为了21m.

这种方式检查到的无用资源包括了反射取的,所以要把反射取的资源再放回去,否则会报错。

可以调整提示的等级,比如把硬编码等级调整为error

相关文章