我正在使用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']
任何人都知道如何做到这一点?
答案 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重定向到此输出文件。