使用 Gulp Jshint 显示错误总数

Display total number of errors with Gulp Jshint

我第一次尝试在我的项目中设置 jshint linter。我正在使用 gulp-jshint。以下配置运行良好我的每个文件都有错误数。 问题:是否可以对项目中的所有错误进行计数?

即:如果文件A有4个错误,文件B有2个错误,文件C有1个错误 gulp 任务你最终得到了 "Your project have 7 error in total"

这是我的 gulp 配置

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

谢谢!

编辑: 自从我发布这个答案以来,我已经清理并显着扩展了我在下面编写的代码并将其作为自己的包发布在 npm 上:jshint-stylish-summary

这是输出的屏幕截图:


jshint-stylish doesn't seem to support a final summary. You might want to look for a different reporter that does what you want. (A quick 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 to add some color to the output and log-symbols 作为 jshint-stylish 使用的精美小图标。