【问题标题】:How to tell gradlew to export lint results file to projectDir?如何告诉 gradlew 将 lint 结果文件导出到 projectDir?
【发布时间】:2017-08-04 15:44:43
【问题描述】:

我正在使用 Jenkins 管道和 Gradle 构建一个 Android 应用程序。

我想对代码运行 Lint 测试,因此用于此问题的命令是:

./gradlew lintStagingDebug

由于某种原因,这个 Gradle 任务没有创建报告。

我知道如果我像这样运行 lint:

lint <project_dir> --xml xml_dest_path

它将创建报告。

但是由于在整个管道中我都在使用 gradlew 来运行相关任务(clean、lint、compile、unittest、assemble),所以我也想使用 gradlew 来完成这项任务,但我不确定如何告诉 Gradle 导出 lint 报告。

我尝试的另一件事是编辑 project/build.gradle 文件并更改此部分:

lintOptions {
        abortOnError false
    }

到(根据Lint official documentation

lintOptions {
        abortOnError false
        xmlOutput projectDir/lint-results.xml
    }

然后我得到一个错误:

A problem occurred evaluating project ':App01'.
> No signature of method: java.io.File.div() is applicable for argument types: (com.android.build.gradle.tasks.Lint_Decorated) values: [task ':App01:lint']

有人知道怎么做吗?

【问题讨论】:

    标签: android gradle lint


    【解决方案1】:

    您可以通过以下方式在 Gradle 中提供 XML 报告输出文件:

    lintOptions {
        xmlOutput file("lint-results.xml")
    }
    

    xmlOutput 方法需要一个文件类型参数。我在参数中使用了相对路径。您也可以将它与 projectDir 一起使用。

    lintOptions {
        xmlOutput file("$projectDir/lint-results.xml")
    }
    

    【讨论】:

      【解决方案2】:

      我是这样解决的。

      stage('Lint run') {
          sh """
              export HOME=$GRADLE_USER_HOME
              export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
              OUTPUTFILE="lint-results.txt"
              touch \$OUTPUTFILE
              ./gradlew lint${BUILDFLAV}${BUILDTYPE} -x lint 2>&1 | tee \$OUTPUTFILE
              """
      })
      

      说明:

      为了继续使用 gradlew 对代码运行 lint 测试,我定义了一个输出文件,并在 gradlew 命令的末尾添加了使用 Linux 命令“tee”将 stdOut 和 stdErr 重定向到此输出文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-27
        • 1970-01-01
        • 2019-02-26
        • 1970-01-01
        相关资源
        最近更新 更多