自定义lint规则
可以项目依赖lintaar,也可以把lintaar打包成maven使用。然后在app的build.gradle下进行如下配置
android节点下 lintOptions { //这边可以对lint进行一些设置 abortOnError false } 外层 android.applicationVariants.all { variant -> variant.outputs.each { output -> def lintTask = tasks["lint${variant.name.capitalize()}"] output.assemble.dependsOn lintTask } } 另外可以在custome-lint-config.json中对一些变量进行设置。提高灵活性。命令行执行命名./gradlew lint 运行
lintOptions { // true--关闭lint报告的分析进度 quiet true // true--错误发生后停止gradle构建 abortOnError false // true--只报告error ignoreWarnings true // true--忽略有错误的文件的全/绝对路径(默认是true) //absolutePaths true // true--检查所有问题点,包含其他默认关闭项 checkAllWarnings true // true--所有warning当做error warningsAsErrors true // 关闭指定问题检查 disable 'TypographyFractions', 'TypographyQuotes' // 打开指定问题检查 enable 'RtlHardcoded', 'RtlCompat', 'RtlEnabled' // 仅检查指定问题 check 'NewApi', 'InlinedApi' // true--error输出文件不包含源码行号 noLines true // true--显示错误的所有发生位置,不截取 showAll true // 回退lint设置(默认规则) lintConfig file("default-lint.xml") // true--生成txt格式报告(默认false) textReport true // 重定向输出;可以是文件或'stdout' textOutput 'stdout' // true--生成XML格式报告 xmlReport false // 指定xml报告文档(默认lint-results.xml) xmlOutput file("lint-report.xml") // true--生成HTML报告(带问题解释,源码位置,等) htmlReport true // html报告可选路径(构建器默认是lint-results.html ) htmlOutput file("lint-report.html") // true--所有正式版构建执行规则生成崩溃的lint检查,如果有崩溃问题将停止构建 checkReleaseBuilds true // 在发布版本编译时检查(即使不包含lint目标),指定问题的规则生成崩溃 fatal 'NewApi', 'InlineApi' // 指定问题的规则生成错误 error 'Wakelock', 'TextViewEdits' // 指定问题的规则生成警告 warning 'ResourceAsColor' // 忽略指定问题的规则(同关闭检查) ignore 'TypographyQuotes' }
<!--忽略这个id-->
<issue id="IconMissingDensityFolder" severity="ignore" />
<!--特殊路径不检查-->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>
<!--改变严重性-->
<issue id="HardcodedText" severity="error" />
<issue id="LogUtilsNotUsed" severity="error" />
<issue id="AttrNotPrefixed" severity="warning"/>
<issue id="NewThread" severity="warning"/>
<issue id="ShowToast" severity="error"/>
<issue id="ImageFileSizeOut" severity="error"/>
{ "log-usage-message": "请勿使用android.util.Log,建议使用Logger工具类", //log打印工具可替换,根据项目来定 "value-prefix": "app_", //string前缀,每个module可单独配置 "image-file-maxsize": "100" //图片文件限制的大小 }
string的所有name命名加前缀,主要是为了防止组件化之后的资源冲突
所有activity必须继承BaseActivity,方便统一管理和防止统计遗漏
广播成对出现,注册之后要在onDestroy中注销
检查项目中图片的大小,防止过大图片的出现
统一使用Log打印工具,代码中不出现Log.e之类的代码
不允许直接new Thread
view的id命名规范,参照阿里的命名规范
实体类是否序列化的检查,防止混淆后出错
慕课网Android自定义Lint实践
自定义Lint调试与开发
美团外卖Android Lint代码检查实践
Android自定义Lint实践
使用 Lint 改进您的代码
Detector api
简书Android Lint
Psi查询文档
Android自定义Lint实践
官方Detector
Uast树版lint