Node JS + Grunt-sonar-runner + Code Coverage未显示

时间:2016-04-08 10:01:33

标签: node.js gruntjs sonarqube mocha

我在节点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的文件夹中生成的覆盖率报告。不幸的是它没有被列入声纳。任何帮助将不胜感激。

先谢谢,

诺布尔

1 个答案:

答案 0 :(得分:0)

只需在项目根文件夹中定义一个sonar-roject.properties即可。在该属性文件中,我们可以指定istanbul生成的lcov.info的相对路径。启动声纳qube服务器后,只需运行声纳 - 跑步者(系统路径中提供声纳转轮)。 Sonar报告将在声纳仪表板中显示