Update 自定义 Lint.md

master
Omooo 5 years ago
parent 6d3da73eae
commit e9810f9075
  1. 16
      blogs/Android/自定义 Lint.md

@ -4,7 +4,7 @@
![](https://i.loli.net/2019/07/09/5d243bc10f1aa59752.png)
#### 前言
### 前言
首先,先要仔细想想,什么时候需要用到自定义 Lint 呢?
@ -28,13 +28,13 @@ ThreadDetector:用于检测直接通过 new Thread 创建线程,提示应该
**源码地址:**[https://github.com/Omooo/CustomLint](https://github.com/Omooo/CustomLint)
#### 正文
### 正文
先来看一个简单的自定义 Lint 是怎么样一步一步写出来的,该例子实际上来自 [https://github.com/googlesamples/android-custom-lint-rules](https://github.com/googlesamples/android-custom-lint-rules) ,该 Rep 就一个 SampleCodeDetector,也就是上文中所说的。
自定义 Lint 一共可以分为四步:
##### 第一步:创建 java library 工程
#### 第一步:创建 java library 工程
在 build.gradle 文件里添加依赖:
@ -43,7 +43,7 @@ compileOnly "com.android.tools.lint:lint-api:26.4.1"
compileOnly "com.android.tools.lint:lint-checks:26.4.1"
```
##### 第二步:创建 Detector
#### 第二步:创建 Detector
```java
public class SampleDetector extends Detector implements Detector.UastScanner {
@ -103,7 +103,7 @@ Lint API 中内置了很多 Scanner:
这里需要注意的一点是,如果对应的 ISSUE 严重程度为错误(Severity.ERROR),那么在默认情况下,会中断编译流程,当然,你也可以配置 LintOptions 来抑制 Lint 错误。
##### 第三步:注册 Detector
#### 第三步:注册 Detector
```java
public class CustomIssueRegistry extends IssueRegistry {
@ -124,7 +124,7 @@ public class CustomIssueRegistry extends IssueRegistry {
这里可以注册多个 Detector,目前最新版本的 Lint 内置了 360 种 Detector,都在 BuiltinIssueRegistry 类中,可以作为我们编写自定义 Lint 的最佳参考案例。
##### 第四步:引入自定义 Lint
#### 第四步:引入自定义 Lint
首先需要在 lint_library 中的 build.gradle 文件中添加,完整代码为:
@ -157,13 +157,13 @@ dependencies {
}
```
#### Lint 进阶
### Lint 进阶
以上,一个简单的自定义 Lint 就写完了,但是有点意犹未尽的感觉。这时候就需要你发挥想象力,想想自己需要什么。你可以参考我给的源码,或者参考 Android 内置的 Lint 源码,看看它们能做什么。
这一小节很重要,但是我并不会给你讲如何去实现某某功能,自己看源码学习,因为真的不难哇。
#### 最后
### 最后
如果你很懒,很烦每次都敲一遍 ./gradlew lint 去查看 Lint 输出,那么可以把执行 Lint 任务挂载在每次安装 Debug 包之前,即:

Loading…
Cancel
Save