如何告诉gradlew将lint结果文件导出到projectDir?

时间:2016-11-09 16:31:27

标签: android gradle lint

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

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

./gradlew lintStagingDebug

由于某种原因,此Gradle任务未创建报告。

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

lint <project_dir> --xml xml_dest_path

它会创建报告。

但是,因为贯穿整个管道,我使用gradlew来运行相关任务(清理,lint,编译,单元测试,组装)我也想使用gradlew执行此任务但是我&# 39;我不知道如何告诉Gradle导出lint报告。

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

lintOptions {
        abortOnError false
    }

to(根据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']

任何人都知道如何做到这一点?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

以下是我如何解决它。

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重定向到此输出文件。