Skip to content

TigerBetree/CustomLintChecker

Repository files navigation

Android自定义Lint检查

支持Lint类型:

  1. UseLogger: 查找代码中使用android.os.Log和System.out.print的地方,提示使用自己的Logger
  2. AvoidEnum: 查找代码中使用Enum的地方,提示使用常量代替(android建议避免使用Enum,因Enum较耗内存)
  3. UseSparseArray: 推荐使用SparseArray代替HashMap
  4. UseTextUtils: 字符串判空,避免使用 "".equals(str)或 str.equals(""),提示使用TextUtils.isEmpty(str)

用法:

    1. 编译生成jar,执行如下命令后在build/libs目录中找到com.custom.lint-1.0.jar
    ./gradlew build
    1. 将生成的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
    1. build.gradle文件中添加如下
    lintOptions {
        enable 'UseLogger', 'AvoidEnum', 'UseSparseArray', 'UseTextUtils'
        check 'UseLogger', 'AvoidEnum', 'UseSparseArray', 'UseTextUtils'
    }
    1. 执行命令,生成lint报告
    ./gradlew customLint

其它

    1. 删除用户目录下的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();
        }
    }

参考

Google

美团

LinkedIn

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

About

Android自定义Lint检查

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages