sonar.testExecutionReportPaths не вызывает датчик при запуске из подпроекта gradle - PullRequest
0 голосов
/ 10 июля 2019

Я использую 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. Любая помощь очень ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...