首页 文章

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

提问于
浏览
3

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

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

./gradlew lintStagingDebug

由于某种原因,此Gradle任务不会创建报告 .

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

lint <project_dir> --xml xml_dest_path

它会创建报告 .

但是因为在整个管道中我使用gradlew来运行相关任务(清理,lint,编译,单元测试,汇编)我也想使用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']

谁知道怎么做?

2 回答

  • 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
            """
    })
    

    Explanation:

    为了继续使用gradlew对代码运行lint测试,我已经定义了一个输出文件,并在gradlew命令结束时使用Linux命令“tee”将stdOut和stdErr重定向到此输出文件 .

  • 1

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

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

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

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

相关问题