当前位置:  开发笔记 > 运维 > 正文

在构建android studio项目时运行lint

如何解决《在构建androidstudio项目时运行lint》经验,为你挑选了5个好方法。

当我用android studio构建项目时,我希望能够运行lint任务,以确保遵循lint规则.

我尝试过使用任务依赖但没有运气.我的teamcity构建服务器使用运行lint任务的构建任务,因此效果很好.但是,当我选择调试版本变体时,android studio似乎可以互换使用generateDebugSources和compileDebugJava任务.

这是我在build.gradle中尝试过的:

assemble.dependsOn lint

Ross Hambric.. 35

如果您只想将Android Studio项目配置为在默认运行配置之前运行lint检查,而不影响您的gradle任务的配置方式,则可以按照以下步骤操作.

    打开运行配置下拉菜单并选择编辑

在此输入图像描述

    选择您的应用运行配置

在此输入图像描述

    按"+"添加新步骤

在此输入图像描述

    选择"Gradle-aware Make"

在此输入图像描述

    输入"check"并选择包含您的应用模块名称的选项并进行检查.(我的是:app:check)

在此输入图像描述

    按向上箭头可check在现有Gradle-aware make步骤之前移动新步骤

在此输入图像描述

现在,如果发生任何lint错误,Android Studio将运行lint检查并使构建失败.



1> Ross Hambric..:

如果您只想将Android Studio项目配置为在默认运行配置之前运行lint检查,而不影响您的gradle任务的配置方式,则可以按照以下步骤操作.

    打开运行配置下拉菜单并选择编辑

在此输入图像描述

    选择您的应用运行配置

在此输入图像描述

    按"+"添加新步骤

在此输入图像描述

    选择"Gradle-aware Make"

在此输入图像描述

    输入"check"并选择包含您的应用模块名称的选项并进行检查.(我的是:app:check)

在此输入图像描述

    按向上箭头可check在现有Gradle-aware make步骤之前移动新步骤

在此输入图像描述

现在,如果发生任何lint错误,Android Studio将运行lint检查并使构建失败.


这是有效的,但理想情况下我不希望项目中的每个人都必须以这种方式设置他们的环境.有没有办法用gradle做到这一点?

2> AndyGable..:

要破坏lint并分析你的项目,只需选择Analyze > Inspect Code.

你应该得到一个包含所有问题的好窗口.

在此输入图像描述

另请参阅Android Studio中的运行lint以获取更多信息.


我做了一些研究,试着把它添加到你的build.gradle.

lintOptions {
      abortOnError true
  } 

有许多选项可以应用于build.gradle


我想防止在任何lint错误上编译项目,以确保遵循lint规则.可以简单地忽略运行代码检查,并且不保证在编译时遵循lint规则.
我已经在使用abortOnError,这就是构建服务器上构建中断的原因.Android studio在构建项目时不运行lint任务.如何在构建项目时运行lint任务?
我不想手动运行lint任务,我希望它在制作项目时运行.

3> Yoel Gluschn..:

要在build.gradle中执行此操作,请将以下行添加到build.gradle:

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

这使得所有组装任务都依赖于在Android Studio执行的每个汇编调用之前有效运行它们的lint任务.

编辑

使用Android Gradle Plugin 3.3和Gradle 5.x这是使用Kotlin脚本的修订版:

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



4> stephane k...:

只需运行"检查"任务

./gradlew clean check assembleRelease


嗯,这可能是另一个问题的最佳答案.

5> Phileo99..:

如果您想强制Android Studio项目在默认运行配置之前运行lint检查,而不影响gradle任务的配置方式,并且想要在gradle构建系统中执行此操作,则可以在代码块外部添加以下代码android块在应用程序模块的build.gradle中,如下所示:

android {
....
    lintOptions {
        abortOnError true
    }
}

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

替换compileDevDebugSources 为您已经定义的所需构建版本,例如。compileReleaseSourcescompileDebugSourcescompileStagingDebugSources,等。

经过测试,可以在Android Studio 3.0上运行

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有