diff --git a/blogs/Android/自定义 Lint.md b/blogs/Android/自定义 Lint.md index 05c6612..f807bca 100644 --- a/blogs/Android/自定义 Lint.md +++ b/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 包之前,即: