Исключение файлов из покрытия при использовании Mocha и Istanbul

Как я могу исключить папки и файлы (по пути) из отчета о покрытии при использовании mocha и instanbul?

Я хочу исключить по конфигурации, а не

/*istanbul ignore next*/

в каждом файле.

(Сгенерированный отчет используется Дженкинсом)

Спасибо,


person Shai M.    schedule 19.05.2015    source источник
comment
Как вы вызываете Стамбул?   -  person JME    schedule 07.06.2015
comment
Что вы подразумеваете под призывом?   -  person Shai M.    schedule 07.06.2015
comment
Как вы управляете Стамбулом? Я спрашиваю, потому что есть опция командной строки для исключения файлов.   -  person JME    schedule 07.06.2015
comment
Я бегу: istanbul cover _mocha -- --recursive -R tap test/ > test.tap && istanbul report clover   -  person Shai M.    schedule 07.06.2015


Ответы (4)


Вы можете игнорировать файлы, соответствующие определенному шаблону, используя параметр -x.

 istanbul help cover

 ...
 -x <exclude-pattern> [-x <exclude-pattern>]
        one or more fileset patterns e.g. "**/vendor/**"
 ...
person Blaise    schedule 07.06.2015
comment
Как это сделать в файлах конфигурации, например. Файл? - person Steve K; 08.09.2015
comment
Зависит от того, какую библиотеку grunt вы используете для обертывания istanbul. В grunt-karma я исключаю папку (app/tests) вот так: {..., preprocessors['app/{*.js,!(tests)/**/*.js}'] = ['coverage'], ...} - person Blaise; 19.10.2015

Если вы запустите istanbul help config, вы увидите конфигурацию Стамбула по умолчанию. Вы можете скопировать/вставить конфигурацию по умолчанию в файл .istanbul.yml в корне вашего исходного дерева, а затем сохранить в нем исключения.

Вот как выглядит мой (это позволяет легко исключить многие каталоги):

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: []
person Rob Johansen    schedule 08.01.2016
comment
Вы уверены, что исключает работы, если для параметра include-all-source установлено значение true? инструментарий: root: src include-all-sources: true verbose: true excludes: [**/src/client/**] reporting: dir: охват И я все еще получаю клиентские файлы в своем отчете. - person Will Lovett; 16.02.2017

В вашем случае я бы использовал следующее:

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

Вы можете исключить несколько шаблонов, просто добавив несколько параметров -x.

person JME    schedule 07.06.2015

Спасибо за предложения,

Это было решение:

istanbul cover -x '**/config/**'  _mocha -- --recursive -R tap test/ > test.tap && istanbul report clover
person Shai M.    schedule 08.06.2015