Подтвердить что ты не робот

Пользовательские linting lib в android

Моя команда и я разрабатываем приложения для Android и решили разработать правила кодирования, которые должны следовать всем. Поэтому я начал внедрять пользовательские правила lint в соответствии со следующими ссылками:

Проблема, с которой я столкнулась, фактически реализует эти правила lint на основе проекта. Когда я запускаю ./gradlew clean build test install, как указано, применяются правила, и все хорошо. Однако, когда я создаю библиотеку aar с помощью ./gradlew aarWrapper:assemble и добавляю ее в папку libs, листинг не работает.

Я добавил следующее в мой файл build.gradle, чтобы добавить библиотеку

repositories {
    flatDir {
            dirs 'libs'
        }
}

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

Я не уверен, что мне не хватает, но когда я запускаю ./gradlew lint, он запускает linter, но не с моими пользовательскими правилами... Приветствуется любая помощь, советы или советы.

РЕДАКТИРОВАТЬ 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

РЕДАКТИРОВАТЬ 2

Forked project: https://github.com/apertomove/linette

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

РЕДАКТИРОВАТЬ 3 В дополнение к ссылкам выше я нашел этот пост, написанный Джейсоном Этвудом. У нас также есть сервер CI, в котором работают jenkins, в которых мы можем запускать наши проверки и сообщать разработчикам об ошибках, основанных на наших правилах. Это отлично работает, однако, это шаг вперед. Было бы гораздо более ценным и экономить время, чтобы запускать проверки lint из библиотеки при запуске наших проектов из Android Studio вместо того, чтобы выполнять наш код, только чтобы узнать, что наш проект нарушает правила.

4b9b3361

Ответ 1

Я написал сообщение о том, как добавить и интегрировать пользовательские правила lint в ваше приложение Android, вы можете посмотреть. Он также имеет ссылки на репозитории github, показывающие, как это делается в проекте Android. Ссылка на сообщение

Самый простой способ для меня состоял в том, чтобы установить путь ANDROID_LINT_JARS в файле gradlew и указать его на настраиваемую банку lint, которая проверена в системе VCS, так что вы можете запустить ее локально, а затем до нажатия кода. Надеюсь, что это поможет.

Ответ 2

@hopeman скопируйте файл jar в папку /.android/lint. Android выберет ваши пользовательские правила lint.