2015-05-19 19 views
22

Come posso escludere cartelle e file (per traccia) dal report di copertura quando si utilizza mocha e instanbul?Esclusione di file dalla copertura quando si utilizza Mocha e Istanbul

voglio escludere da una configurazione e non

/*istanbul ignore next*/ 

in ogni file.

(L'uso report generato da Jenkins)

Grazie,

+0

Come stai invocando Istanbul? – JME

+0

Cosa intendi invocando? –

+0

Come stai andando a Istanbul? Chiedo perché c'è un'opzione della riga di comando per escludere i file. – JME

risposta

19

È possibile ignorare i file che corrispondono a un determinato modello utilizzando il parametro -x.

istanbul help cover 

... 
-x <exclude-pattern> [-x <exclude-pattern>] 
     one or more fileset patterns e.g. "**/vendor/**" 
... 
+0

Come fare ciò nei file di configurazione, ad es. GruntFile? – nottinhill

+0

Dipende da quale libreria grunt utilizzi per avvolgere Istanbul. In 'grunt-karma' sto escludendo una cartella (' app/tests') come questa: '{..., preprocessors ['app/{*. Js,! (Tests)/**/*. Js} '] = [' coverage '], ...} ' – Blaise

4

io il tuo caso vorrei utilizzare il seguente:

istanbul -x "**/pattern/to/exclude/**" cover _mocha -- --recursive -R tap test/ > test.tap && istanbul report clover – snoof 9 hours ago 

è possibile escludere più pattern solo con l'aggiunta multipla -x opzioni.

4

Grazie per i suggerimenti,

questa era la soluzione:

istanbul cover -x '**/config/**' _mocha -- --recursive -R tap test/ > test.tap && istanbul report clover 
14

Se si esegue istanbul help config vedrete configurazione predefinita di Istanbul. È possibile copiare/incollare la configurazione di default in un file .istanbul.yml nella radice della struttura di origine, quindi memorizzare le esclusioni in essa contenute.

Ecco cosa miniera assomiglia (questo lo rende facile per escludere molte directory):

verbose: false 
instrumentation: 
    root: . 
    extensions: 
     - .js 
    default-excludes: true 
    excludes: ['**/tinymce/**', '**/lib/**', '**/tools/**', '**/build/**'] 
    embed-source: false 
    variable: __coverage__ 
    compact: true 
    preserve-comments: false 
    complete-copy: false 
    save-baseline: false 
    baseline-file: ./coverage/coverage-baseline.json 
    include-all-sources: true 
    include-pid: false 
    es-modules: false 
reporting: 
    print: summary 
    reports: 
     - lcov 
    dir: ./tools/coverage 
    watermarks: 
     statements: [50, 80] 
     lines: [50, 80] 
     functions: [50, 80] 
     branches: [50, 80] 
    report-config: 
     clover: {file: clover.xml} 
     cobertura: {file: cobertura-coverage.xml} 
     json: {file: coverage-final.json} 
     json-summary: {file: coverage-summary.json} 
     lcovonly: {file: lcov.info} 
     teamcity: {file: null, blockName: Code Coverage Summary} 
     text: {file: null, maxCols: 0} 
     text-lcov: {file: lcov.info} 
     text-summary: {file: null} 
hooks: 
    hook-run-in-context: false 
    post-require-hook: null 
    handle-sigint: false 
check: 
    global: 
     statements: 0 
     lines: 0 
     branches: 0 
     functions: 0 
     excludes: [] 
    each: 
     statements: 0 
     lines: 0 
     branches: 0 
     functions: 0 
     excludes: [] 
+0

Sei sicuro che esclude opere con include-all-sources impostate su true? strumentazione: root: vero verbose:: true non comprende: [ "\ * \ */src/client/\ * \ *"] segnalazione: dir: "copertura" src all sources includono- E sto ancora ricevendo i file client nel mio rapporto. –