从gradle子项目运行时,sonar.testExecutionReportPaths不会触发传感器

时间:2019-07-10 18:37:50

标签: gradle sonarqube

我正在使用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中添加一个include'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插件组合是否有此问题?我已经尝试了2.6版的Gradle SonarQube插件的不同版本,但仍然获得了相同的结果。

我需要能够支持多项目Gradle设置的使用,并且仍要在SonarQube中显示所有正确的分析内容。任何帮助都将不胜感激。

0 个答案:

没有答案