Я использую SonarQube 7.7 и Gradle 5.4.1 (протестировано с различными версиями Gradle без изменений в результатах)
У меня есть простой угловой проект, настроенный на использование кармы для генерации общих результатов тестирования вместе со стандартным отчетом lcov.
Я завернул угловой проект в проект Gradle. Если я запускаю проект с приведенной ниже конфигурацией build.gradle, я вижу общую информацию о тестах вместе с данными о покрытии (обзорная страница показывает 42,9% покрытия и 3 модульных теста)
plugins {
id 'org.sonarqube' version '2.7.1'
}
// sonarqube properties
sonarqube {
properties {
property 'sonar.host.url', '<host url>'
property 'sonar.login', '<login token>'
property 'sonar.sources', 'src'
property 'sonar.exclusions', '**/*.spec.ts'
property 'sonar.tests', 'src'
property 'sonar.test.inclusions', '**/*.spec.ts'
property 'sonar.typescript.lcov.reportPaths', 'coverage/lcov.info'
property 'sonar.testExecutionReportPaths', 'coverage/sonar-test-results.xml'
}
}
apply plugin: 'base'
// Project Settings
group = 'launcher'
version = '0.0.1-SNAPSHOT'
task npmInstall(type: Exec) {
executable = 'npm';
args = ['install'];
}
task ngBuild(type: Exec) {
executable = 'npm';
args = ['run', 'build'];
}
task unitTest(type: Exec) {
executable = 'npm';
args = ['run', 'test'];
}
// wire ui tasks into build execution process
tasks.assemble.dependsOn('npmInstall')
tasks.check.dependsOn('unitTest')
tasks.build.dependsOn('ngBuild')
wrapper {
jarFile = rootProject.file('.gradle-wrapper/gradle-wrapper.jar')
}
Обработка общей тестовой информации отображается в журнале отладки вывода плагина Gradle-сканера:
[DEBUG] [org.sonarqube.gradle.SonarQubeTask] Датчики: Метрики SonarCSS -> Правила SonarCSS -> JavaXmlSensor -> HTML -> SonarTS -> Покрытие SonarTS -> Импортер отчетов JaCoCo XML -> SonarJS -> на основе ESLint SonarJS -> Общий отчет о выполнении тестов -> JavaSecuritySensor -> CSharpSecuritySensor -> PhpSecuritySensor
Теперь, если я перейду к многопроектной сборке Gradle, как показано в следующем build.gradle, переместлю свой угловой проект в подпроект, называемый launcher-app, и добавлю в мое settings.gradle включаемое «launcher-app», Я получаю покрытие от lcov, но нет результатов модульных тестов (страница обзора показывает только 42,9% покрытия, а не 3 модульных теста)
plugins {
id 'org.sonarqube' version '2.7.1'
}
// sonarqube global properties
sonarqube {
properties {
property 'sonar.host.url', '<host url>'
property 'sonar.login', '<login token>'
}
}
allprojects {
apply plugin: 'base'
}
// Project Settings
group = 'launcher'
version = '0.0.1-SNAPSHOT'
project(':launcher-app') {
// sonarqube specific properties
sonarqube {
properties {
property 'sonar.sources', 'src'
property 'sonar.exclusions', '**/*.spec.ts'
property 'sonar.tests', 'src'
property 'sonar.test.inclusions', '**/*.spec.ts'
property 'sonar.typescript.lcov.reportPaths', 'coverage/lcov.info'
property 'sonar.testExecutionReportPaths', 'coverage/sonar-test-results.xml'
}
}
task npmInstall(type: Exec) {
executable = 'npm';
args = ['install'];
}
task ngBuild(type: Exec) {
executable = 'npm';
args = ['run', 'build'];
}
task unitTest(type: Exec) {
executable = 'npm';
args = ['run', 'test'];
}
// wire ui tasks into build execution process
tasks.assemble.dependsOn('npmInstall')
tasks.check.dependsOn('unitTest')
tasks.build.dependsOn('ngBuild')
}
wrapper {
jarFile = rootProject.file('.gradle-wrapper/gradle-wrapper.jar')
}
Отсутствие обработки общей тестовой информации видно в журнале отладки вывода сканера Gradle:
[DEBUG] [org.sonarqube.gradle.SonarQubeTask] Датчики: Метрики SonarCSS -> Правила SonarCSS -> JavaXmlSensor -> HTML -> SonarTS -> Покрытие SonarTS -> Импортер отчетов JaCoCo XML -> SonarJS -> на основе ESLint SonarJS
Есть что-то, что я неправильно настроил? Это проблема с версией SonarQube или комбинацией плагинов SonarQube Gradle, которую я использую? Я пробовал разные версии плагина Gradle SonarQube еще в версии 2.6 и все еще получаю те же результаты.
Мне нужно иметь возможность поддерживать использование мультипроектной установки Gradle и по-прежнему отображать все необходимые аналитические материалы в SonarQube. Любая помощь очень ценится.