首页 文章

在android中自定义linting lib

提问于
浏览
35

我的团队和我开发了Android应用程序,并决定了所有应遵循的编码指南 . 因此,我开始按照以下链接实现自定义lint规则:

我遇到的问题实际上是在项目的基础上实现这些lint规则 . 当我运行 ./gradlew clean build test install 时,按规定应用规则并且一切正常 . 但是当我使用 ./gradlew aarWrapper:assemble 构建aar库并将其添加到我的 libs 文件夹时,linting不起作用 .

我将以下内容添加到我的 build.gradle 文件中以添加库

repositories {
    flatDir {
            dirs 'libs'
        }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name: 'aarWrapper-debug', ext: 'aar')
}

我错过了'm not sure what I'但是当我运行 ./gradlew lint 时它会运行linter而不是我的自定义规则...非常感谢任何帮助,提示或建议 .

EDIT 1

这是运行gradle时的终端输出 .

:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareAarWrapperDebugLibrary UP-TO-DATE
:app:prepareComAndroidSupportAnimatedVectorDrawable2421Library UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72421Library UP-TO-DATE
:app:prepareComAndroidSupportDesign2421Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCompat2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCoreUi2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCoreUtils2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportFragment2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportMediaCompat2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportVectorDrawable2421Library UP-TO-DATE
:app:prepareComAndroidVolleyVolley100Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidAnswers138Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidBeta121Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidCrashlytics261Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidCrashlyticsCore2310Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBase961Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBasement961Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesLocation961Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesMaps961Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesTasks961Library UP-TO-DATE
:app:prepareIoFabricSdkAndroidFabric1312Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:incrementalDebugJavaCompilationSafeguard UP-TO-DATE
:app:compileDebugJavaWithJavac UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources UP-TO-DATE
:app:mergeDebugShaders UP-TO-DATE
:app:compileDebugShaders UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:transformClassesWithDexForDebug UP-TO-DATE
:app:mergeDebugJniLibFolders UP-TO-DATE
:app:transformNative_libsWithMergeJniLibsForDebug UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:transformResourcesWithMergeJavaResForDebug UP-TO-DATE
:app:validateSigningDebug
:app:packageDebug
:app:assembleDebug

BUILD SUCCESSFUL

Total time: 7.881 secs

EDIT 2

分叉项目:https://github.com/apertomove/linette

build.gradle:https://github.com/apertomove/linette/blob/apertomove-linette/build.gradle

EDIT 3 除了上面的链接,我发现这是由杰森阿特伍德写的post . 我们也有一个运行jenkins的CI服务器,我们可以运行我们的检查,并根据我们的lint规则通知开发人员错误 . 这很有效,然而,它是向前迈出的一步 . 当从Android Studio运行我们的项目时,从库中运行lint检查会更有 Value 和节省时间,而不是仅仅提交我们的代码以发现我们的项目违反了规则 .

2 回答

  • 1

    我已经写了一篇关于如何在你的Android应用程序中添加和集成自定义lint规则的帖子,你可以看看 . 它还有github repos的链接,显示它在android项目中的完成情况 . Link to post

    对我来说最简单的方法是在gradlew文件中设置ANDROID_LINT_JARS路径并将其指向已签入VCS系统的自定义lint jar,以便您在推送代码之前也可以在本地运行它 . 希望能帮助到你 .

  • 0

    @hopeman将jar文件复制到/.android/lint文件夹 . Android会选择您的自定义lint规则 .

相关问题