Сонар Jacoco для установки Kotlin не генерирует покрытие кода

Я пытаюсь выполнить настройку сонара с помощью Jacoco для Kotlin, чтобы создать отчет о покрытии кода, но это не так. показывая любое покрытие кода. При проверке консоли сонара отображается следующая ошибка. Кто-нибудь сталкивался с этой проблемой раньше, любые предложения, которые можно пропустить.

Мета-информация

плагин с использованием sonarqube версии "2.6.1"

gradleVersion = '3.0.1'

kotlinVersion = '1.2.21'

Версия Sonarqube = Версия 6.7.1 (сборка 35068) - LGPL v3

Раздражает то, что мой проект установки генерирует пустой отчет о покрытии кода :(. PFA.

введите здесь описание изображения

Изменить: Найдите структурную привязку проекта.

Я добавляю настройки файла сонара и градиента Jacoco, которые я использую для создания отчета по матрице сонара.

введите здесь описание изображения

Вот файл sonar.gradle:

sonarqube {

    properties {
        property "sonar.projectKey", "jacoco.sonar.test"
        property "sonar.projectName", "Sonar Jacoco Test"
        property "sonar.projectVersion", "1.1"

        property "sonar.java.source", "7"

        property "sonar.android.lint.report", "build/outputs/lint-results.xml"
        property "sonar.java.binaries", "build/tmp/kotlin-classes"
        property "sonar.java.test.binaries", "build/intermediates/classes/test/,build/tmp/kotlin-classes/devDebugUnitTest"
        property "sonar.tests","src/test/java"
        property "sonar.sources","src/main/java"
        property "sonar.java.coveragePlugin", "jacoco"
        property "sonar.jacoco.reportPaths","build/jacoco/testDevDebugUnitTest.exec"
        property "sonar.junit.reportsPath","build/test-results/testDevDebugUnitTest"
    }
}

и вот файл jacoco.gradle

apply plugin: 'jacoco'

jacoco {
    toolVersion = "0.7.9"
    reportsDir = file("${project.projectDir}/app/build/reports")
}

task jacocoTestReport(type: JacocoReport, dependsOn: "app:testDevDebugUnitTest") {
    group = "Reporting"

    reports {
        xml.enabled = true
        html.enabled = true
    }

    def fileFilter = ['**/R.class',
                      '**/R$*.class',
                      '**/BuildConfig.*',
                      '**/*$ViewInjector*.*',
                      '**/*$ViewBinder*.*',
                      '**/*$MembersInjector*.*',
                      '**/Manifest*.*',
                      '**/*Test*.*',
                      'android/**/*.*']

    classDirectories = fileTree(
            dir: "${project.projectDir}/app/build/intermediates/classes/dev",
            excludes: fileFilter
        ) + fileTree(
            dir: "${project.projectDir}/app/build/tmp/kotlin-classes/devDebug",
            excludes: fileFilter
        )

    // sources
    sourceDirectories = files(["${project.projectDir}/app/src/main/java"])
    executionData = files("${project.projectDir}/app/build/jacoco/testDevDebugUnitTest.exec")
}

Следуя командам gradle, которые я использую для создания отчета Jacobo, а затем отчета о взлете.

./gradlew clean jacocoTestReport sonarqube

Я заметил, что после того, как я получаю, должен быть какой-то путь.

Информация о покрытии не собиралась. Возможно, вы забыли включить отладочную информацию в скомпилированные классы?

Извините, если это длина в битах; но это лучшее, что я нашел для резюме в одном месте. Также обратите внимание, что я пробовал аналогичную настройку с классом Java вместо Kotlin, который генерирует отчет с покрытием кода.


person CoDe    schedule 14.02.2018    source источник
comment
Не могли бы вы отредактировать свой вопрос, включив в него версию SonarQube?   -  person G. Ann - SonarSource Team    schedule 14.02.2018
comment
пожалуйста, проверьте нижний колонтитул своей страницы SonarQube и добавьте найденную там версию. Я подозреваю, что то, что вы назвали своей версией SonarQube, на самом деле является версией вашего сканера.   -  person G. Ann - SonarSource Team    schedule 14.02.2018
comment
какую версию SonarJava вы используете? и какую версию отчетов Jacoco вы создаете? SonarJava 5.1 добавляет поддержку jacoco 8.0 - я не уверен, какую версию вы создаете, но это может быть связано?   -  person Simon Schrottner    schedule 21.02.2018
comment
Я использую: SQube: 7.0, SRunner: 3.0.3.778. Версия Jacoco, которую я не упомянул явно, должна быть последней (например, jacoco-0.8.0).   -  person CoDe    schedule 21.02.2018
comment
Где находятся исходные файлы kotlin?   -  person Andrew    schedule 24.02.2018
comment
Он находится в каталоге man / src / java @Andrew.   -  person CoDe    schedule 26.02.2018
comment
@ G.Ann-SonarSourceTeam Не могли бы вы повторить вопрос еще раз, я добавил еще немного информации о настройке проекта. К вашему сведению: у меня такая же проблема.   -  person CoDe    schedule 12.07.2018
comment
@ G.Ann-SonarSourceTeam Нужно ли мне использовать этот детект основанное решение ??   -  person CoDe    schedule 12.07.2018
comment
Есть обновления по этому поводу? Я столкнулся с той же проблемой @CoDe. Я нашел обходное решение в соответствии с вашей проблемой: android.jlelse.eu/ Но это вы написали среднюю статью? На самом деле, я еще не пробовал его обходной путь   -  person mochadwi    schedule 04.06.2019


Ответы (2)


Если вы используете оркестратор тестов Android, скорее всего, это проблема.

Сегодня у меня была такая же проблема, и после отключения оркестратора тестов Android покрытие снова работает.

Отчет об ошибке: https://issuetracker.google.com/issues/72758547

Я не уверен, как настроены сборки Android Kotlin, но в моем Android Java build.gradle мне пришлось закомментировать тестовый оркестратор следующим образом:

android {
...
    testOptions {
        // temporarily disable the orchestrator as this breaks coverage: https://issuetracker.google.com/issues/72758547
        //execution 'ANDROID_TEST_ORCHESTRATOR'
    ...
    }
}
person Inti    schedule 23.02.2018
comment
Нет, я не использую ANDROID_TEST_ORCHESTRATOR - person CoDe; 26.02.2018

Есть несколько вещей, которые вам нужно сделать, чтобы он работал на kotlin.

  • Убедитесь, что ваш сонарк> 7,5
  • Если ваш sonarqube вер ‹7.5, попросите администратора установить плагин sonar-jacoco. Проверьте версию совместимости плагина, если sonarqube ‹5.5.
plugins {
    id "jacoco"
    id "org.sonarqube" version "2.7.1"
}

Перейдите по этому URL-адресу: https://community.sonarsource.com/t/coverage-test-data-importing-jacoco-coverage-report-in-xml-format/12151

Добавьте свойства в свой build.gradle, чтобы он мог искать результаты jacoco.

property 'sonar.coverage.jacoco.xmlReportPaths', "${buildDir}/reports/jacoco/test/jacocoTestReport.xml"

Следуйте по этому URL-адресу для просмотра свойств: https://docs.sonarqube.org/7.5/analysis/analysis-parameters/

person Humble Bee    schedule 13.05.2020
comment
Спасибо за ответ. У меня сейчас нет такой же настройки, чтобы попробовать это. Но сможете ли вы создать и поделиться образцом репо, чтобы другие могли ссылаться, и это было бы большим подспорьем. - person CoDe; 02.06.2020