7

A while ago i tried adding lint to my android studio project by adding a lint.xml file at the app module and adding the following lintOptions:

lintOptions {
    abortOnError true
    checkReleaseBuilds true
    lintConfig file("lint.xml")
}

Everything was working fine, debug builds were failing when there were lint errors and passing otherwise. I did not incorporate the changes into the project though and i recently returned to those changes to find that builds are no longer failing on lint errors. I cant seem to find the changes made in the project during that time that caused this. Release builds are still failing on lint errors as expected.

from what i can gather the lint task is supposed to run by default but i am not seeing it as part of the tasks run when i build

additional info that might help:

  • i am using the gradle wrapper with distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip
  • i am building through android studio's Build -> Rebuild Project and
    not the green play button (i know this will not run lint)
  • the lint.xml:

<?xml version="1.0" encoding="UTF-8"?>
<lint>

    <!--The given layout_param is not defined for the given layout, meaning it has no
    effect.-->
    <issue id="ObsoleteLayoutParam" severity="error" />
    <!--A layout that has no children or no background can often be removed-->
    <issue id="UselessLeaf" severity="error" />
    <issue id="HardcodedText" severity="error" />
    <issue id="UnusedResources" severity="error" />
    <!--AdapterViews such as ListViews must be configured with data from Java code,
    such as a ListAdapter.-->
    <issue id="AdapterViewChildren" severity="error" />
    <!--Missing commit() on SharedPreference editor-->
    <issue id="CommitPrefEdits" severity="error" />
    <!--looks for cases where you have cut & pasted calls to
    findViewById but have forgotten to update the R.id field-->
    <issue id="CutPasteId" severity="error" />
    <!--Calling String#toLowerCase() or #toUpperCase() without specifying an explicit
    locale is a common source of bugs.-->
    <issue id="DefaultLocale" severity="error" />
    <!--Implied locale in date format-->
    <issue id="SimpleDateFormat" severity="error" />
    <!--Incorrect order of elements in manifest-->
    <issue id="ManifestOrder" severity="error" />
    <!--Using STRING instead of TEXT-->
    <issue id="SQLiteString" severity="error" />
    <!--Memory allocations within drawing code-->
    <issue id="DrawAllocation" severity="error" />
    <!--Handler is declared as an inner class, it may prevent the outer
    class from being garbage collected.-->
    <issue id="HandlerLeak" severity="error" />
    <!--Ellipsis string can be replaced with ellipsis character-->
    <issue id="TypographyEllipsis" severity="error" />
    <!--ScrollViews can have only one child-->
    <issue id="ScrollViewCount" severity="error" />
    <!--FragmentTransaction, you typically need to commit it as well-->
    <issue id="CommitTransaction" severity="error" />
    <!--A scrolling widget such as a ScrollView should not contain any nested
    scrolling widgets since this has various usability issues-->
    <issue id="NestedScrolling" severity="error" />
    <!--ScrollView children must set their layout_width or layout_height attributes to
    wrap_content-->
    <issue id="ScrollViewSize" severity="error" />
    <!--Using Wrong AppCompat Method-->
    <issue id="AppCompatMethod" severity="error" />
    <!--Some methods have no side effects, an calling them without doing something
    without the result is suspicious.-->
    <issue id="CheckResult" severity="error" />
    <!--Duplicate ids across layouts combined with include tags-->
    <issue id="DuplicateIncludedIds" severity="error" />
    <!--This check ensures that a layout resource which is defined in multiple
    resource folders, specifies the same set of widgets.-->
    <issue id="InconsistentLayout" severity="error" />
    <!--Wrong locale name-->
    <issue id="LocaleFolder" severity="error" />
    <!--Target SDK attribute is not targeting latest version-->
    <issue id="OldTargetApi" severity="error" />
    <!--Frequent alarms are bad for battery life.-->
    <issue id="ShortAlarm" severity="error" />


    <!--Using system app permission-->
    <issue id="ProtectedPermissions" severity="ignore" />
    <!--Package not included in Android-->
    <issue id="InvalidPackage" severity="ignore" />

</lint>
Yuxal
  • 445
  • 4
  • 14
  • can you add to the question the lint.xml file? might be that you are adding rulles that causing everything to pass lint.... – Tal Kanel Mar 30 '16 at 13:37

1 Answers1

3

Found a solution on Run lint when building android studio projects. basically you make the assemble task depend on the the lint task to force it to run:

applicationVariants.all { variant ->
variant.outputs.each { output ->
    def lintTask = tasks["lint${variant.name.capitalize()}"]
    output.assemble.dependsOn lintTask
}

}

For Library projects -

libraryVariants.all { variant ->
    variant.outputs.each { output ->
        def lintTask = tasks["lint${variant.name.capitalize()}"]
        tasks["bundle${variant.name.capitalize()}"].dependsOn lintTask
    }
}
Community
  • 1
  • 1
Yuxal
  • 445
  • 4
  • 14