2016-03-15 2 views
1

Я пытаюсь настроить jshint linter в первый раз на моем проекте. Я использую gulp-jshint. Следующая конфигурация работает отлично. У меня есть количество ошибок для каждого из моих файлов. Вопрос: Возможно ли подсчитать все ошибки в проекте?Показать общее количество ошибок с помощью Gulp Jshint

т.е. если FiLea есть 4 ошибки, FILEB есть 2 ошибки, fileC есть 1 ошибка глотком задачи вы в конечном итоге с чем-то «Ваш проект имеет 7 ошибку в общей сложности»

Вот мой Глоток конфигурации

gulp.task('lint', function() { 
    return gulp.src(paths.scripts) 
    .pipe(jshint('.jshintrc')) 
    .pipe(jshint.reporter('jshint-stylish')); 
}); 

Спасибо!

ответ

3

EDIT: Поскольку я отправил этот ответ, я очистил и значительно расширил код, который я написал ниже, и опубликовал его как свой собственный пакет на npm: jshint-stylish-summary.

Вот скриншот выхода:

 


jshint-stylish, кажется, не поддерживает конечный итог. Возможно, вам захочется найти другого репортера, который сделает то, что вы хотите. (А быстрый perusal of mine ничего не принесет ничего полезного.)

Если вы хотите продолжать использовать jshint-stylish, у вас все еще есть возможность добавить a custom reporter. Вот один я реализовал, что поможет вам начать:

var map = require('map-stream'); 

var jshintTotalReporter = function() { 
    var total = { warnings: 0, errors: 0 }; 
    total.files = { all: 0, success: 0, warning: 0, error: 0 }; 
    return { 
    collect: map(function(file, cb) { 
     var codes = { W: 0, E: 0 }; 
     (file.jshint.results||[]).forEach(function(result) { 
     codes[result.error.code[0]]++; 
     }); 
     total.warnings += codes['W']; 
     total.errors += codes['E']; 
     total.files.all++; 
     total.files.success += (codes['W'] + codes['E'] > 0) ? 0 : 1; 
     total.files.warning += (codes['W'] > 0) ? 1 : 0; 
     total.files.error += (codes['E'] > 0) ? 1 : 0; 
     cb(); 
    }), 
    report: function() { 
     console.log(total.files.all + ' files checked'); 
     console.log(total.files.success + ' files without problems'); 
     console.log(total.files.warning + ' files with warnings (' + 
        total.warnings + ' warnings total)'); 
     console.log(total.files.error + ' files with errors (' + 
        total.errors + ' errors total)'); 
    } 
    }; 
}; 

gulp.task('lint', function() { 
    var jshintTotals = jshintTotalReporter();  
    return gulp.src(paths.scripts) 
     .pipe(jshint('.jshintrc')) 
     .pipe(jshint.reporter('jshint-stylish')) 
     .pipe(jshintTotals.collect) 
     .on('end', jshintTotals.report); 
}); 

(Не забудьте запустить npm install --save-dev map-stream или это не будет работать).

Результат довольно рудиментарный, но должен иметь всю информацию, которая может представлять интерес. Пример:

9 files checked 
3 files without problems 
6 files with warnings (13 warnings total) 
4 files with errors (7 errors total) 

Если вы хотите красивые вещи на которые вы можете использовать chalk, чтобы добавить цвета к выходу и log-symbols для миленьких значков, которые jshint-stylish использований.

Смежные вопросы