- UseLogger: 查找代码中使用android.os.Log和System.out.print的地方,提示使用自己的Logger
- AvoidEnum: 查找代码中使用Enum的地方,提示使用常量代替(android建议避免使用Enum,因Enum较耗内存)
- UseSparseArray: 推荐使用SparseArray代替HashMap
- UseTextUtils: 字符串判空,避免使用 "".equals(str)或 str.equals(""),提示使用TextUtils.isEmpty(str)
-
- 编译生成jar,执行如下命令后在build/libs目录中找到com.custom.lint-1.0.jar
./gradlew build
-
- 将生成的jar拷贝到主工程的lint目录(需要自己创建lint目录),并将下列代码拷贝粘贴到主工程的build.gradle文件中
task customLint() {
dependsOn lint
}
// 拷贝自定义lint.jar到用户的/.android/lint/目录
task copyCustomLintJarToUserHomeLintDir(type: Copy) {
from "lint/com.custom.lint-1.0.jar"
into System.getProperty('user.home') + '/.android/lint/'
}
customLint.dependsOn copyCustomLintJarToUserHomeLintDir
-
- 在build.gradle文件中添加如下
lintOptions {
enable 'UseLogger', 'AvoidEnum', 'UseSparseArray', 'UseTextUtils'
check 'UseLogger', 'AvoidEnum', 'UseSparseArray', 'UseTextUtils'
}
-
- 执行命令,生成lint报告
./gradlew customLint
-
- 删除用户目录下的lint.jar
task deleteCustomLintJar() {
doLast {
def lintDir = System.getProperty('user.home') + '/.android/lint/';
def lintFile = 'com.custom.lint-1.0.jar';
File file = new File(lintDir + lintFile);
file.delete();
}
}
https://github.com/bignerdranch/linette
https://github.com/googlesamples/android-custom-lint-rules
https://github.com/skyisle/sonar-android
https://github.com/hehonghui/android-tech-frontier/blob/master/issue-33/如何自定义Lint规则.md