Android Studio 中自己定义Lint

一.在Android Studio中,新建Module,选择Java Library,起名junte

二.自定义lint规则需要继承一些特定的类,所以需要在junte的build.gradle中添加依赖:
 

三.在junte中新建一个LoggerDetector类,用来检测用户代码中是否使用了android.util.Log类,如果有,就报告一个issue,代码如下:


Android Studio 中自己定义Lint_第1张图片
Android Studio 中自己定义Lint_第2张图片
Android Studio 中自己定义Lint_第3张图片

传入的6个参数意义如下:

LogUtilsNotUseds: 我们这条lint规则的id,这个id必须是独一无二的。

You must use our 'LogUtils':对这条lint规则的简短描述。

Logging should be avoided in production for security and performance reasons. Therefore, we created a LogUtils that wraps all our calls to Logger and disable them for release flavor.:对这条lint规则更详细的解释。

Category.MESSAGES:类别。

9:优先级,必须在1到10之间。

Severity.ERROR:严重程度。其他可用的严重程度还有FATAL、WARNING、INFORMATIONAL、IGNORE。

Implementation:这是连接Detector与Scope的桥梁,其中Detector的功能是寻找issue,而scope定义了在什么范围内查找issue。在我们的例子中,我们需要在字节码级别分析用户有没有使用android.util.Log。

四.在junte中新建一个JunteLintRegistry类,它继承自IssueRegistry。这个类用来注册我们自己定义了哪些issue,代码如下:


Android Studio 中自己定义Lint_第4张图片

五.对于自定义lint生成的jar,我们必须在它的清单文件中指明它的主类,通过配置junte的build.gradle文件来完成:


Android Studio 中自己定义Lint_第5张图片


   由于我们要把上一步生成的jar文件包含到一个aar中,配置如下:


Android Studio 中自己定义Lint_第6张图片

六.新建一个Android Library项目,命名为junte_aar,用来输出aar:

在junte_aar的build.gradle的根节点加入以下内容:


Android Studio 中自己定义Lint_第7张图片

七.在用户app中使用我们的自定义lint,在用户自己的应用程序module中,打开app的build.gradle文件,在dependencies中加入以下依赖:


这里我们在app的MainActivity中使用了android自带的Log功能:


在终端中,我们执行./gradlew lint来执行lint任务


Android Studio 中自己定义Lint_第8张图片

你可能感兴趣的:(Android Studio 中自己定义Lint)