使用 Lint 來約束團隊編碼規範

前言

若是用 Lint 來約束團隊編碼規範呢?html

其實很簡單,就是自定義 Lint。我以前也寫過一篇文章:自定義 Lint,基於 AS 3.x APIjava

如今 AS 都已經到 4.1 了,不過有些東西尚未過期。android

最近又在 Medium 上看到一篇小姐姐寫的 Lint 相關文章,自己東西不難,可是文章中列舉了不少資源,真是感嘆國外資源豐富呀!git

原文地址:Enforcing Team Rules with Lintgithub

若是你準備學一下 Lint 或者想了解一下 Lint,下面列舉的資源可能對你很是有用。android-studio

下面是非正式翻譯:markdown

幾個月前,個人團隊達成了一個協議,就是項目中的 TODO 要提供幾個信息,好比誰要處理這個 todo、時間、解釋說明這個 todo 要作啥。工具

爲了方便,我寫了一個 todo template:oop

這個 todo template 怎麼寫的見原文:zarah.dev/2020/03/06/…佈局

可是有的小夥伴仍是會忘記,因而就使用自定義 Lint 來約束這種規範。

在 Android 系統中有一些咱們常見的 Lint 規則,好比:

  1. 忘記 call super() ,CallSuperDetector
  2. 約束佈局 xml 裏面忘記添加約束了,ConstraintLayoutDetector
  3. 過分繪製檢查,OverdrawDetector

等等,在咱們本身寫的時候能夠參考系統的一些實現。

YouTube 上面也有一個視頻來教你怎麼寫自定義 Lint:

Coding in style: Static analysis with Custom Lint Rules (Android Dev Summit '19

官方文檔:Writing Custom Lint Rules

Google Simple: github.com/googlesampl…

Android 系統裏面全部的 Lint 規則源代碼:

cs.android.com/android-stu…

小結一下

首先知道 Lint 能幹嗎,Lint 就是一個靜態分析工具,它可以處理源碼(Java、Kotlin)文件、資源文件(layout 等)、Manifest、Gradle files 等。

上面也列舉了系統中的不少實現,當須要自定義 Lint 規則時能夠參考一下,資源不少,根本不慌~