我在节点js中创建了一个REST服务,并使用mocha编写了测试用例。我已经能够使用istanbul生成代码覆盖率并且工作正常。现在我的要求是使用Sonar显示代码覆盖率。代码合规性违规将按预期列出。但代码覆盖范围并未在声纳中生成。我怀疑gruntfile.js配置有问题。目前,我通过复制node_modules中grunt-sonar-runner文件夹内的源来生成代码合规性违规,并执行grunt-sonar-runner。我当前的文件夹结构如下所示:
<ProjectRoot>
|--server.js
|--[test]
|--|--serverTest.js
|--[node_modules]
|--|--[grunt-sonar-runner]
|--|--|--[src]
|--|--|--|--server.js
在gruntfile.js中,
grunt.initConfig({
jshint: {
all: [
'Gruntfile.js',
'tasks/*.js',
'test/*.js'
],
options: {
jshintrc: '.jshintrc'
}
},
// Before generating any new files, remove any previously-created files.
clean: {
tests: ['tmp']
},
// Configuration to be run (and then tested).
sonarRunner: {
analysis: {
options: {
debug: true,
separator: '\n',
sonar: {
host: {
url: 'http://localhost:9000'
},
jdbc: {
url: 'jdbc:h2:tcp://localhost:9092/sonar',
username: 'sonar',
password: 'sonar'
},
projectKey: 'sonar:grunt-sonar-runner:0.1.0',
projectName: 'Grunt Sonar Runner',
projectVersion: '0.10',
sources: ['src'].join(','),
language: 'js',
sourceEncoding: 'UTF-8'
}
}
},
dryRun: {
options: {
dryRun: true,
debug: true,
separator: '\n',
sonar: {
host: {
url: 'http://localhost:9000'
},
jdbc: {
url: 'jdbc:mysql://localhost:3306/sonar',
username: 'sonar',
password: 'sonar'
},
projectKey: 'sonar:grunt-sonar-runner:0.1.0',
projectName: 'Grunt Sonar Runner',
projectVersion: '0.10',
sources: ['src'].join(','),
exclusions: '**/R.js'
}
}
}
},
// Unit tests.
mochaTest: {
test: {
options: {
reporter: 'spec'
},
src: ['test/**/*.js'],
}
}
});
我们有两个部分 - &gt;分析和干燥。什么是dryRun?
就在那之外,我们有一个名为mochaTest的密钥。
在使用istanbul运行mocha时,我会在项目根目录中生成一个名为coverage的文件夹中生成的覆盖率报告。不幸的是它没有被列入声纳。任何帮助将不胜感激。
先谢谢,
诺布尔
答案 0 :(得分:0)
只需在项目根文件夹中定义一个sonar-roject.properties即可。在该属性文件中,我们可以指定istanbul生成的lcov.info的相对路径。启动声纳qube服务器后,只需运行声纳 - 跑步者(系统路径中提供声纳转轮)。 Sonar报告将在声纳仪表板中显示