Android Lint基本使用和自定义规则
一.基本使用
1.gradle配置
使用Lint时,在相应module的build.gradle文件的android配置项中,通过lintOptions
来配置相应的属性即可。
android {
lintOptions {
// 设置为 true 后,release 构建都会以 Fatal 的设置来运行 Lint。
// 如果构建时发现了致命(Fatal)的问题,会中止构建(具体由 abortOnError 控制)
checkReleaseBuilds true
// 设置为 true,则当 Lint 发现错误时停止 Gradle 构建
abortOnError false
// 重新指定 Lint 规则配置文件
lintConfig file("default-lint.xml")
// 仅检查指定的问题(根据规则的 id 指定)
check 'NewApi', 'InlinedApi'
// 设置为 true 则检查所有的问题,包括默认不检查问题
checkAllWarnings true
// 不检查指定的问题(根据规则的 id 指定)
disable 'TypographyFractions','TypographyQuotes'
// 检查指定的问题(根据规则的 id 指定)
enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
// 在报告中是否返回对应的 Lint 说明
explainIssues true
// 设置为 true 则错误报告中不包括源代码的行号
noLines true
// 设置为 true 时 Lint 将不报告分析的进度
quiet true
// 设置为 true 则显示一个问题所在的所有地方,而不会截短列表
showAll true
// 设置为 true 则只报告错误
ignoreWarnings true
// 设置为 true,则当有错误时会显示文件的全路径或绝对路径 (默认情况下为true)
absolutePaths true
// 写入报告的路径,默认为构建目录下的 lint-results.html
htmlOutput file("lint-report.html")
// 设置为 true 则会生成一个 HTML 格式的报告
htmlReport true
// 写入检查报告的文件(不指定默认为 lint-results.xml)
xmlOutput file("lint-report.xml")
// 设置为 true 则会生成一个 XML 报告
xmlReport false
// 配置写入输出结果的位置,格式可以是文件或 stdout
textOutput 'stdout'
// 设置为 true,则生成纯文本报告(默认为 false)
textReport false
// 设置为 true,则会把所有警告视为错误处理
warningsAsErrors true
// 覆盖 Lint 规则的严重程度,例如:
severityOverrides ["MissingTranslation": LintOptions.SEVERITY_WARNING]
// 将指定问题(根据 id 指定)的严重级别(severity)设置为 Fatal
fatal 'NewApi', 'InlineApi'
// 将指定问题(根据 id 指定)的严重级别(severity)设置为 Error
error 'Wakelock', 'TextViewEdits'
// 将指定问题(根据 id 指定)的严重级别(severity)设置为 Warning
warning 'ResourceAsColor'
// 将指定问题(根据 id 指定)的严重级别(severity)设置为 ignore
ignore 'TypographyQuotes'
}
}
2.指定规则
lintConfig file("default-lint.xml")
这个属性可以指定规则定义文件,在这个xml文件中,我们可以自己定义规则的应用场景、报警级别、是否启用等。
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- list of issues to configure -->
<!-- Ignore the UselessLeaf issue in the specified file -->
<issue id="ApplySharedPref" severity="ignore"><!--对指定文件,忽略该issue-->
</issue>
<issue id="LogUsage" severity="error" />
</lint>
3.执行Lint检测
Lint的检测有三种模式:
i.实时检测
我们在代码中出现某些问题时,Lint会检测出来并提示。
ii.手动检测
在AndroidStudio中,通过点击菜单栏Analyze-Inspect Code选项,可以定制检测范围,触发Lint进行检测,检测结果会放到底部的Inspection Results栏中。