Android Lint
这是一个通用Android Lint库,你可以用它来检查代码规范、bug、资源命名等✌️。
本库最大特点是通用,相较于其他Lint库(规则直接在代码写死),最大的不同是,规则全靠配置生成,更加灵活,在多团队协作下,只需拷贝配置文件,修改提示信息即可完成迁移。
支持增量扫描功能,速度更快。
支持lint发现错误后自动执行脚本功能,更加友好。
对于增量扫描原理可以看Lint增量扫描实践,具体在项目中使用可以参考Android Lint代码检查实践。
如果有感兴趣的大佬,欢迎一起开发、交流。
地址
https://github.com/RocketZLY/AndroidLint
项目结构
.
├── app // demo工程用来展示lint检查效果
├── checks // lint规则代码
├── custom_lint_config.json // 规则配置文件
├── lintlibrary // 空项目,依赖了checks用来生成aar包
├── lintpatch // 实现lint增量扫描、修复lint26.5.3bug的补丁代码
├── lintplugin // lint插件,用来增量扫描、执行脚本、简化配置、日志输出等
依赖
需要Android Gradle Plugin在3.5.0以上,目前我项目使用的是3.5.3实测ok。
根目录gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.rocketzly:lintPlugin:$lastVersion"
}
}
module gradle
apply plugin: "com.rocketzly.lintPlugin"
使用
添加依赖后,并在项目根目录下添加custom_lint_config.json规则配置文件(关于配置可以看后面的规则配置)
编码实时提示
添加依赖和配置文件后Rebuild一下(如果还不行则执行次./gradlew :${moduleName}:lintFull
)即可编码实时提示。
有一点需要注意,AS对于Lint实时提示支持的不算特别好,少数情况下会出现编码时提示不了的情况,但是命令行执行生成报告结果都是正常的,所以以报告结果为准。
命令行执行
目前支持两个命令:
./gradlew lintFull
全量扫描(只扫自定义issue)./gradlew lintIncrement -Pbaseline="xxx" -Prevision="xxx"
增量扫描(只扫自定义issue)
参数描述:
- baseline:执行lintIncrement必须参数,用来设置基线代码分支或者commit节点
- revision:执行lintIncrement必须参数,用来设置最新分支或者commit节点
- scriptPath:可选参数,在lint发现错误的时候自动执行脚本路径,目前只支持执行python3和shell脚本
脚本入参