2016-04-08 6 views
0
zeigt

Ich habe einen REST-Dienst in Knoten js und schrieb die Testfälle Mokka mit. Ich bin in der Lage, die Codeabdeckung mit istanbul zu erzeugen und funktioniert absolut gut. Jetzt ist es meine Anforderung, die Codeabdeckung mit Sonar anzuzeigen. Die Verstöße gegen die Code-Compliance werden wie erwartet aufgelistet. Aber die Codeabdeckung wird nicht in Sonar generiert. Ich bezweifle, dass etwas mit der Konfiguration von gruntfile.js nicht stimmt. Zurzeit erzeuge ich den Code-Compliance-Verstoß, indem ich die Quelle im Ordner grunt-sonar-runner in node_modules kopiere und grunt-sonar-runner ausführe. Meine aktuelle Ordnerstruktur wie folgt:Knoten JS + Grunt-Sonar-Läufer + Code Coverage nicht

<ProjectRoot> 

|--server.js 
|--[test] 
|--|--serverTest.js 

|--[node_modules] 
|--|--[grunt-sonar-runner] 
|--|--|--[src] 
|--|--|--|--server.js 

In den 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'], 

     } 
    } 

}); 

haben wir zwei Abschnitte -> Analyse und dryRun. Was ist das für ein Trockenrennen?

außerhalb dass Just, haben wir einen Schlüssel namens mochaTest.

Während Mokka mit Istanbul läuft, bin ich immer Berichterstattung Berichte, die in dem Projektstamm in einem Ordner Abdeckung genannt. Leider wird es nicht in Sonar gelistet. Jede Hilfe wäre willkommen.

Vielen Dank im Voraus,

Edler

+1

Sollten Sie nicht bieten options.sonar.javascript.lcov.reportPath? https://www.npmjs.com/package/grunt-sonar-runner –

+0

Ja .. Vielen Dank für die Antwort. Das Problem wurde behoben. Deinstalliertes Grunt-Sonar-Runner-Modul. Ich musste nur eine sonar-roject.properties im Projektstammordner definieren. Innerhalb dieser Eigenschaftendatei können wir den relativen Pfad zu der von istanbul generierten Datei lcov.info angeben. Nach dem Starten des Sonar Qube-Servers führen Sie einfach den Sonar-Runner aus (vorausgesetzt, Sonar Runner ist im Systempfad vorhanden). Sonar-Berichte werden im Sonar-Dashboard angezeigt. – noby1988

Antwort

0

hatte gerade eine sonar-roject.properties im Projektstammordner zu definieren. Innerhalb dieser Eigenschaftendatei können wir den relativen Pfad zu der von istanbul generierten Datei lcov.info angeben. Nach dem Starten des Sonar Qube-Servers führen Sie einfach den Sonar-Runner aus (vorausgesetzt, Sonar Runner ist im Systempfad vorhanden). Sonar Berichte werden in Sonar Armaturenbrett sichtbar sein