2016-11-09 67 views
3

我正在使用Jenkins管道和Gradle構建Android應用程序。如何告訴gradlew將lint結果文件導出到projectDir?

我想在其上運行的代碼皮棉測試,因此,這是用於該事項的命令是:

./gradlew lintStagingDebug 

出於某種原因,這個搖籃任務不創建報告。

我知道,如果我跑絨,像這樣:

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'] 

任何人都知道它是如何做到的?

回答

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上運行的代碼棉絨測試中,我定義一個輸出文件,並在輸出和錯誤的所述gradlew命令重定向的結束時加入到這個輸出文件使用Linux命令「tee」。

1

可以提供通過以下方式在搖籃XML報表輸出文件:

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

的xmlOutput方法需要一個文件類型參數。我在參數中使用了相對路徑。您也可以將其與projectDir一起使用。

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