Run lint when building android studio projects

前端 未结 7 601
予麋鹿
予麋鹿 2020-11-28 07:12

I would like to be able to run the lint task when I\'m building projects with the android studio to ensure the lint rules are being followed.

I have tried using task

相关标签:
7条回答
  • 2020-11-28 07:48

    If you want to force Android Studio project to run the lint check before the default run configuration without affecting how your gradle tasks are configured, AND you want to do this in the gradle build system, then you can add the following block outside of the android block in the app module's build.gradle as follows:

    android {
    ....
        lintOptions {
            abortOnError true
        }
    }
    
    tasks.whenTaskAdded { task ->
        if (task.name == 'compileDevDebugSources') {
            task.dependsOn lint
            task.mustRunAfter lint
        }
    }
    

    Replace compileDevDebugSources with the desired build variant that you have already defined, eg. compileReleaseSources, compileDebugSources, compileStagingDebugSources, etc.

    This was tested working on Android Studio 3.0

    0 讨论(0)
  • 2020-11-28 07:49

    If you just want to configure your Android Studio project to run the lint check before the default run configuration without affecting how your gradle tasks are configured, you can follow these steps.

    1. Open the run configurations drop down and choose edit

    enter image description here

    1. Select your app run configuration

    enter image description here

    1. Press the '+' to add a new step

    enter image description here

    1. Choose "Gradle-aware Make"

    enter image description here

    1. Type 'check' and choose the option with your app module name and check. (Mine is :app:check)

    enter image description here

    1. Press the up arrow to move the new check step before the existing Gradle-aware make step

    enter image description here

    Now, Android Studio will run the lint check and fail the build if any lint errors occur.

    0 讨论(0)
  • 2020-11-28 07:52

    here is my solution which also works when you click Build - Make Project in Android Studio:

    android {
    ..
        afterEvaluate {
            applicationVariants.all {
                variant ->
                    // variantName: e.g. Debug, Release
                    def variantName = variant.name.capitalize()
                    // now we tell gradle to always start lint after compile
                    // e.g. start lintDebug after compileDebugSources
                    project.tasks["compile${variantName}Sources"].doLast {
                        project.tasks["lint${variantName}"].execute()
                    }
            }
        }
    }
    
    0 讨论(0)
  • 2020-11-28 07:53

    To runt lint and analyze your project, simply select Analyze > Inspect Code.

    You should get a nice window with all issues.

    enter image description here

    Also check Run lint in Android Studio for more information.


    I did a little more research, try adding this to your build.gradle.

    lintOptions {
          abortOnError true
      } 
    

    There are many options that you can apply to the build.gradle

    0 讨论(0)
  • 2020-11-28 08:02

    Just modifying answer of @Yoel Gluschnaider

    For me if I use Val it shows error like this : Could not set unknown property 'lintTask' for object of type com.android.build.gradle.internal.api.ApplicationVariantImpl.

    So I replace it

    applicationVariants.all {
        def lintTask = tasks["lint${name.capitalize()}"]
        assembleProvider.get().dependsOn.add(lintTask)
    }
    

    and it work fine!!

    0 讨论(0)
  • 2020-11-28 08:12

    just run the "check" task

    ./gradlew clean check assembleRelease
    
    0 讨论(0)
提交回复
热议问题