Code coverage report for lib/check.js

Statements: 100% (52 / 52)      Branches: 100% (4 / 4)      Functions: 100% (9 / 9)      Lines: 100% (52 / 52)      Ignored: none     

All files » lib/ » check.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102              1   1   1   1   1   1       1   1   1   1 4                   1 2 2   2 4 4       2   2 2 2 2 2 2   2 2 2 2   2   2 2 2 2     2   4 4 3 2 2   3     4 4   4 4 4 4 4 4   4   4   2         1  
/**
 * @file 校验并过滤出错误行
 * @author chris<wfsr@foxmail.com>
 */
 
'use strict';
 
var _Promise = require('babel-runtime/core-js/promise')['default'];
 
var _Map = require('babel-runtime/core-js/map')['default'];
 
var _Object$create = require('babel-runtime/core-js/object/create')['default'];
 
var _Set = require('babel-runtime/core-js/set')['default'];
 
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
 
Object.defineProperty(exports, '__esModule', {
    value: true
});
 
var _fecs = require('fecs');
 
var _fecs2 = _interopRequireDefault(_fecs);
 
var _config = require('./config');
 
function formatMonth(date) {
    return date.getFullYear() * 100 + (date.getMonth() + 1);
}
 
/**
 * 使用 fecs 检查所有提交涉及到的文件
 *
 * @param {Array.<File[]>} commits 所有提交的文件
 * @return {Promise.<Object>}
 */
 
exports['default'] = function (commits) {
    var through = require('through2');
    var stream = through.obj({ highWaterMark: 10000 });
 
    commits.forEach(function (files) {
        files.forEach(function (file) {
            stream.write(file);
        });
    });
 
    stream.end(null);
 
    var options = _fecs2['default'].getOptions();
    options.command = 'check';
    options.stream = stream;
    options.rule = true;
    options.lookup = _config.options.lookup;
    options.reporter = 'baidu';
 
    return new _Promise(function (resolve, reject) {
        var meta = { lines: 0, files: 0, errors: 0, errorLines: 0 };
        var collector = new _Map();
        var total = _Object$create(meta);
 
        collector.total = total;
 
        var finish = function finish(success, json, files, errors) {
            total.success = success;
            total.files = files;
            total.errors = errors;
        };
 
        _fecs2['default'].check(options, finish).pipe(through.obj({ highWaterMark: 10000 }, function (file, enc, cb) {
 
            var set = new _Set();
            var errorLines = file.errors.reduce(function (i, error) {
                if (!set.has(error.line)) {
                    i++;
                    set.add(error.line);
                }
                return i;
            }, 0);
 
            var month = formatMonth(file.date);
            var monthData = collector.get(month) || _Object$create(meta);
 
            monthData.files++;
            monthData.errors += file.errors.length;
            monthData.errorLines += errorLines;
            monthData.lines += file.stat.lines;
            total.errorLines += errorLines;
            total.lines += file.stat.lines;
 
            collector.set(month, monthData);
 
            cb(null, file);
        })).once('finish', function () {
            resolve(collector);
        });
    });
};
 
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,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QUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksZUFBYyxJQUFJLENBQUMsQ0FBQzs7QUFFNUQscUJBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNsQixxQkFBUyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUN2QyxxQkFBUyxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUM7QUFDbkMscUJBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDbkMsaUJBQUssQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDO0FBQy9CLGlCQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOztBQUUvQixxQkFBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7O0FBRWhDLGNBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbEIsQ0FBQyxDQUNMLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxZQUFZO0FBQ3pCLG1CQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdEIsQ0FBQyxDQUFDO0tBQ04sQ0FBQyxDQUFDO0NBQ04iLCJmaWxlIjoiY2hlY2suanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlIOagoemqjOW5tui/h+a7pOWHuumUmeivr+ihjFxuICogQGF1dGhvciBjaHJpczx3ZnNyQGZveG1haWwuY29tPlxuICovXG5cbmltcG9ydCBmZWNzIGZyb20gJ2ZlY3MnO1xuaW1wb3J0IHtvcHRpb25zIGFzIGNsaU9wdGlvbnN9IGZyb20gJy4vY29uZmlnJztcblxuZnVuY3Rpb24gZm9ybWF0TW9udGgoZGF0ZSkge1xuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgKiAxMDAgKyAoZGF0ZS5nZXRNb250aCgpICsgMSk7XG59XG5cblxuLyoqXG4gKiDkvb/nlKggZmVjcyDmo4Dmn6XmiYDmnInmj5DkuqTmtonlj4rliLDnmoTmlofku7ZcbiAqXG4gKiBAcGFyYW0ge0FycmF5LjxGaWxlW10+fSBjb21taXRzIOaJgOacieaPkOS6pOeahOaWh+S7tlxuICogQHJldHVybiB7UHJvbWlzZS48T2JqZWN0Pn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGNvbW1pdHMpIHtcbiAgICBsZXQgdGhyb3VnaCA9IHJlcXVpcmUoJ3Rocm91Z2gyJyk7XG4gICAgbGV0IHN0cmVhbSA9IHRocm91Z2gub2JqKHtoaWdoV2F0ZXJNYXJrOiAxMDAwMH0pO1xuXG4gICAgY29tbWl0cy5mb3JFYWNoKGZ1bmN0aW9uIChmaWxlcykge1xuICAgICAgICBmaWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgICAgICBzdHJlYW0ud3JpdGUoZmlsZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc3RyZWFtLmVuZChudWxsKTtcblxuXG4gICAgbGV0IG9wdGlvbnMgPSBmZWNzLmdldE9wdGlvbnMoKTtcbiAgICBvcHRpb25zLmNvbW1hbmQgPSAnY2hlY2snO1xuICAgIG9wdGlvbnMuc3RyZWFtID0gc3RyZWFtO1xuICAgIG9wdGlvbnMucnVsZSA9IHRydWU7XG4gICAgb3B0aW9ucy5sb29rdXAgPSBjbGlPcHRpb25zLmxvb2t1cDtcbiAgICBvcHRpb25zLnJlcG9ydGVyID0gJ2JhaWR1JztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGxldCBtZXRhID0ge2xpbmVzOiAwLCBmaWxlczogMCwgZXJyb3JzOiAwLCBlcnJvckxpbmVzOiAwfTtcbiAgICAgICAgbGV0IGNvbGxlY3RvciA9IG5ldyBNYXAoKTtcbiAgICAgICAgbGV0IHRvdGFsID0gT2JqZWN0LmNyZWF0ZShtZXRhKTtcblxuICAgICAgICBjb2xsZWN0b3IudG90YWwgPSB0b3RhbDtcblxuICAgICAgICBsZXQgZmluaXNoID0gZnVuY3Rpb24gKHN1Y2Nlc3MsIGpzb24sIGZpbGVzLCBlcnJvcnMpIHtcbiAgICAgICAgICAgIHRvdGFsLnN1Y2Nlc3MgPSBzdWNjZXNzO1xuICAgICAgICAgICAgdG90YWwuZmlsZXMgPSBmaWxlcztcbiAgICAgICAgICAgIHRvdGFsLmVycm9ycyA9IGVycm9ycztcbiAgICAgICAgfTtcblxuICAgICAgICBmZWNzLmNoZWNrKG9wdGlvbnMsIGZpbmlzaCkucGlwZShcbiAgICAgICAgICAgIHRocm91Z2gub2JqKHtoaWdoV2F0ZXJNYXJrOiAxMDAwMH0sIGZ1bmN0aW9uIChmaWxlLCBlbmMsIGNiKSB7XG5cbiAgICAgICAgICAgICAgICBsZXQgc2V0ID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgICAgIGxldCBlcnJvckxpbmVzID0gZmlsZS5lcnJvcnMucmVkdWNlKGZ1bmN0aW9uIChpLCBlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXNldC5oYXMoZXJyb3IubGluZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldC5hZGQoZXJyb3IubGluZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgbW9udGggPSBmb3JtYXRNb250aChmaWxlLmRhdGUpO1xuICAgICAgICAgICAgICAgIGxldCBtb250aERhdGEgPSBjb2xsZWN0b3IuZ2V0KG1vbnRoKSB8fCBPYmplY3QuY3JlYXRlKG1ldGEpO1xuXG4gICAgICAgICAgICAgICAgbW9udGhEYXRhLmZpbGVzKys7XG4gICAgICAgICAgICAgICAgbW9udGhEYXRhLmVycm9ycyArPSBmaWxlLmVycm9ycy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgbW9udGhEYXRhLmVycm9yTGluZXMgKz0gZXJyb3JMaW5lcztcbiAgICAgICAgICAgICAgICBtb250aERhdGEubGluZXMgKz0gZmlsZS5zdGF0LmxpbmVzO1xuICAgICAgICAgICAgICAgIHRvdGFsLmVycm9yTGluZXMgKz0gZXJyb3JMaW5lcztcbiAgICAgICAgICAgICAgICB0b3RhbC5saW5lcyArPSBmaWxlLnN0YXQubGluZXM7XG5cbiAgICAgICAgICAgICAgICBjb2xsZWN0b3Iuc2V0KG1vbnRoLCBtb250aERhdGEpO1xuXG4gICAgICAgICAgICAgICAgY2IobnVsbCwgZmlsZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLm9uY2UoJ2ZpbmlzaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc29sdmUoY29sbGVjdG9yKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4iXX0=