UNPKG

kudo

Version:

check someone's code quality in git repository

349 lines (347 loc) 16.3 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for lib/check.js</title> <meta charset="utf-8"> <link rel="stylesheet" href="../prettify.css"> <link rel="stylesheet" href="../base.css"> <style type='text/css'> div.coverage-summary .sorter { background-image: url(../sort-arrow-sprite.png); } </style> </head> <body> <div class="header high"> <h1>Code coverage report for <span class="entity">lib/check.js</span></h1> <h2> Statements: <span class="metric">100% <small>(52 / 52)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Branches: <span class="metric">100% <small>(4 / 4)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Functions: <span class="metric">100% <small>(9 / 9)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Lines: <span class="metric">100% <small>(52 / 52)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp; </h2> <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">lib/</a> &#187; check.js</div> </div> <div class="body"> <pre><table class="coverage"> <tr><td class="line-count">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</td><td class="line-coverage"><span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-yes">3</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">3</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/** * @file 校验并过滤出错误行 * @author chris&lt;wfsr@foxmail.com&gt; */ &nbsp; 'use strict'; &nbsp; var _Promise = require('babel-runtime/core-js/promise')['default']; &nbsp; var _Map = require('babel-runtime/core-js/map')['default']; &nbsp; var _Object$create = require('babel-runtime/core-js/object/create')['default']; &nbsp; var _Set = require('babel-runtime/core-js/set')['default']; &nbsp; var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default']; &nbsp; Object.defineProperty(exports, '__esModule', { value: true }); &nbsp; var _fecs = require('fecs'); &nbsp; var _fecs2 = _interopRequireDefault(_fecs); &nbsp; var _config = require('./config'); &nbsp; function formatMonth(date) { return date.getFullYear() * 100 + (date.getMonth() + 1); } &nbsp; /** * 使用 fecs 检查所有提交涉及到的文件 * * @param {Array.&lt;File[]&gt;} commits 所有提交的文件 * @return {Promise.&lt;Object&gt;} */ &nbsp; exports['default'] = function (commits) { var through = require('through2'); var stream = through.obj({ highWaterMark: 10000 }); &nbsp; commits.forEach(function (files) { files.forEach(function (file) { stream.write(file); }); }); &nbsp; stream.end(null); &nbsp; var options = _fecs2['default'].getOptions(); options.command = 'check'; options.stream = stream; options.rule = true; options.lookup = _config.options.lookup; options.reporter = 'baidu'; &nbsp; 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); &nbsp; collector.total = total; &nbsp; var finish = function finish(success, json, files, errors) { total.success = success; total.files = files; total.errors = errors; }; &nbsp; _fecs2['default'].check(options, finish).pipe(through.obj({ highWaterMark: 10000 }, function (file, enc, cb) { &nbsp; 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); &nbsp; var month = formatMonth(file.date); var monthData = collector.get(month) || _Object$create(meta); &nbsp; monthData.files++; monthData.errors += file.errors.length; monthData.errorLines += errorLines; monthData.lines += file.stat.lines; total.errorLines += errorLines; total.lines += file.stat.lines; &nbsp; collector.set(month, monthData); &nbsp; cb(null, file); })).once('finish', function () { resolve(collector); }); }); }; &nbsp; module.exports = exports['default']; //# sourceMappingURL=data:application/json;base64,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QUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksZUFBYyxJQUFJLENBQUMsQ0FBQzs7QUFFNUQscUJBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNsQixxQkFBUyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUN2QyxxQkFBUyxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUM7QUFDbkMscUJBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDbkMsaUJBQUssQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDO0FBQy9CLGlCQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOztBQUUvQixxQkFBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7O0FBRWhDLGNBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbEIsQ0FBQyxDQUNMLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxZQUFZO0FBQ3pCLG1CQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdEIsQ0FBQyxDQUFDO0tBQ04sQ0FBQyxDQUFDO0NBQ04iLCJmaWxlIjoiY2hlY2suanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlIOagoemqjOW5tui/h+a7pOWHuumUmeivr+ihjFxuICogQGF1dGhvciBjaHJpczx3ZnNyQGZveG1haWwuY29tPlxuICovXG5cbmltcG9ydCBmZWNzIGZyb20gJ2ZlY3MnO1xuaW1wb3J0IHtvcHRpb25zIGFzIGNsaU9wdGlvbnN9IGZyb20gJy4vY29uZmlnJztcblxuZnVuY3Rpb24gZm9ybWF0TW9udGgoZGF0ZSkge1xuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgKiAxMDAgKyAoZGF0ZS5nZXRNb250aCgpICsgMSk7XG59XG5cblxuLyoqXG4gKiDkvb/nlKggZmVjcyDmo4Dmn6XmiYDmnInmj5DkuqTmtonlj4rliLDnmoTmlofku7ZcbiAqXG4gKiBAcGFyYW0ge0FycmF5LjxGaWxlW10+fSBjb21taXRzIOaJgOacieaPkOS6pOeahOaWh+S7tlxuICogQHJldHVybiB7UHJvbWlzZS48T2JqZWN0Pn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGNvbW1pdHMpIHtcbiAgICBsZXQgdGhyb3VnaCA9IHJlcXVpcmUoJ3Rocm91Z2gyJyk7XG4gICAgbGV0IHN0cmVhbSA9IHRocm91Z2gub2JqKHtoaWdoV2F0ZXJNYXJrOiAxMDAwMH0pO1xuXG4gICAgY29tbWl0cy5mb3JFYWNoKGZ1bmN0aW9uIChmaWxlcykge1xuICAgICAgICBmaWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgICAgICBzdHJlYW0ud3JpdGUoZmlsZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc3RyZWFtLmVuZChudWxsKTtcblxuXG4gICAgbGV0IG9wdGlvbnMgPSBmZWNzLmdldE9wdGlvbnMoKTtcbiAgICBvcHRpb25zLmNvbW1hbmQgPSAnY2hlY2snO1xuICAgIG9wdGlvbnMuc3RyZWFtID0gc3RyZWFtO1xuICAgIG9wdGlvbnMucnVsZSA9IHRydWU7XG4gICAgb3B0aW9ucy5sb29rdXAgPSBjbGlPcHRpb25zLmxvb2t1cDtcbiAgICBvcHRpb25zLnJlcG9ydGVyID0gJ2JhaWR1JztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGxldCBtZXRhID0ge2xpbmVzOiAwLCBmaWxlczogMCwgZXJyb3JzOiAwLCBlcnJvckxpbmVzOiAwfTtcbiAgICAgICAgbGV0IGNvbGxlY3RvciA9IG5ldyBNYXAoKTtcbiAgICAgICAgbGV0IHRvdGFsID0gT2JqZWN0LmNyZWF0ZShtZXRhKTtcblxuICAgICAgICBjb2xsZWN0b3IudG90YWwgPSB0b3RhbDtcblxuICAgICAgICBsZXQgZmluaXNoID0gZnVuY3Rpb24gKHN1Y2Nlc3MsIGpzb24sIGZpbGVzLCBlcnJvcnMpIHtcbiAgICAgICAgICAgIHRvdGFsLnN1Y2Nlc3MgPSBzdWNjZXNzO1xuICAgICAgICAgICAgdG90YWwuZmlsZXMgPSBmaWxlcztcbiAgICAgICAgICAgIHRvdGFsLmVycm9ycyA9IGVycm9ycztcbiAgICAgICAgfTtcblxuICAgICAgICBmZWNzLmNoZWNrKG9wdGlvbnMsIGZpbmlzaCkucGlwZShcbiAgICAgICAgICAgIHRocm91Z2gub2JqKHtoaWdoV2F0ZXJNYXJrOiAxMDAwMH0sIGZ1bmN0aW9uIChmaWxlLCBlbmMsIGNiKSB7XG5cbiAgICAgICAgICAgICAgICBsZXQgc2V0ID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgICAgIGxldCBlcnJvckxpbmVzID0gZmlsZS5lcnJvcnMucmVkdWNlKGZ1bmN0aW9uIChpLCBlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXNldC5oYXMoZXJyb3IubGluZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldC5hZGQoZXJyb3IubGluZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgbW9udGggPSBmb3JtYXRNb250aChmaWxlLmRhdGUpO1xuICAgICAgICAgICAgICAgIGxldCBtb250aERhdGEgPSBjb2xsZWN0b3IuZ2V0KG1vbnRoKSB8fCBPYmplY3QuY3JlYXRlKG1ldGEpO1xuXG4gICAgICAgICAgICAgICAgbW9udGhEYXRhLmZpbGVzKys7XG4gICAgICAgICAgICAgICAgbW9udGhEYXRhLmVycm9ycyArPSBmaWxlLmVycm9ycy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgbW9udGhEYXRhLmVycm9yTGluZXMgKz0gZXJyb3JMaW5lcztcbiAgICAgICAgICAgICAgICBtb250aERhdGEubGluZXMgKz0gZmlsZS5zdGF0LmxpbmVzO1xuICAgICAgICAgICAgICAgIHRvdGFsLmVycm9yTGluZXMgKz0gZXJyb3JMaW5lcztcbiAgICAgICAgICAgICAgICB0b3RhbC5saW5lcyArPSBmaWxlLnN0YXQubGluZXM7XG5cbiAgICAgICAgICAgICAgICBjb2xsZWN0b3Iuc2V0KG1vbnRoLCBtb250aERhdGEpO1xuXG4gICAgICAgICAgICAgICAgY2IobnVsbCwgZmlsZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLm9uY2UoJ2ZpbmlzaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc29sdmUoY29sbGVjdG9yKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4iXX0=</pre></td></tr> </table></pre> </div> <div class="footer"> <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Thu Sep 17 2015 12:12:36 GMT+0800 (CST)</div> </div> <script src="../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../sorter.js"></script> </body> </html>