在android中自定义linting lib

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

  • post由马特·康普顿写
  • Git Repo

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

我添加了以下内容到我的build.gradle文件来添加库

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

我不知道我错过了什么,但是当我运行./gradlew lint它运行./gradlew lint ,但不是我的自定义规则…任何帮助,提示或build议,非常感激。

编辑1

这是运行gradle时的terminal输出。

 :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 

编辑2

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

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

编辑3除了上面的链接,我发现这个post由贾森阿特伍德。 我们也有一个运行jenkins的CI服务器,在这里我们可以运行我们的检查,并根据我们的lint规则告知开发者错误。 这很好,但是,这是远远的一步。 从Android Studio运行我们的项目运行lint检查会更有价值,更省时,而不是只提交我们的代码来发现我们的项目违反了规则。

我已经写了一篇关于如何添加和集成自定义lint规则到你的android应用程序的post,你可以看看。 它也有链接到Github回购显示如何在Android项目中完成。 链接到post

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

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