'use strict';
var escomplex = require('escomplex-js'),
content = require('fs').readFileSync(require.resolve('../'), 'utf-8'),
opt = { logicalor: false, switchcase: false },
MAX = 24,
list = [], bad = [];
escomplex.analyse(content, opt).functions.forEach(function (entry) {
var name = (entry.name === '<anonymous>') ? (':' + entry.line) : entry.name;
list.push({ name: name, value: entry.cyclomatic });
});
list.sort(function (x, y) {
return y.value - x.value;
});
console.log('Most cyclomatic-complex functions:');
list.slice(0, 6).forEach(function (entry) {
console.log(' ', entry.name, entry.value);
if (entry.value > MAX) {
bad.push(entry);
}
});
console.log();
if (bad.length > 0) {
console.log('ERROR: Cyclomatic complexity treshold of', MAX, 'is exceeded!');
bad.forEach(function (entry) {
console.log(' ', entry.name, entry.value);
});
process.exit(1);
}