Как сказать gradlew экспортировать файл результатов lint в ProjectDir?

Я создаю приложение для Android, используя конвейер Jenkins и Gradle.

Я хотел бы запустить тесты Lint для кода, поэтому в этом отношении используется следующая команда:

./gradlew lintStagingDebug

По какой-то причине эта задача Gradle не создает отчет.

Я знаю, что если бы я запустил lint вот так:

lint <project_dir> --xml xml_dest_path

Это создаст отчет.

Но поскольку на протяжении всего конвейера я использую gradlew для выполнения соответствующих задач (очистка, lint, компиляция, unittest, сборка), я бы хотел использовать gradlew и для этой задачи, но я не уверен, как сказать Gradle для экспорта отчета о ворсинах.

Еще я попробовал отредактировать project/build.gradle файл и изменить этот раздел:

lintOptions {
        abortOnError false
    }

в (согласно официальной документации Lint)

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

Кто-нибудь знает, как это можно сделать?


person Itai Ganot    schedule 09.11.2016    source источник


Ответы (2)


Вы можете предоставить выходной файл отчета XML в Gradle следующим образом:

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

Для метода xmlOutput требуется аргумент типа файла. В аргументе я использовал относительный путь. Вы также можете использовать его с projectDir.

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

Вот как я это решил.

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 перенаправление stdOut и stdErr в этот выходной файл с помощью команды Linux «tee».

person Itai Ganot    schedule 10.11.2016