我正在使用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中显示所有正确的分析内容。任何帮助都将不胜感激。