escomplex-plugin-metrics-module
Version:
Provides the core module metric / report generation plugin for typhonjs-escomplex module processing.
152 lines (119 loc) • 4.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _ModuleMetricAverage = require('./ModuleMetricAverage');
var _ModuleMetricAverage2 = _interopRequireDefault(_ModuleMetricAverage);
var _ModuleMetricCalculate = require('./ModuleMetricCalculate');
var _ModuleMetricCalculate2 = _interopRequireDefault(_ModuleMetricCalculate);
var _ModuleMetricPostAverage = require('./ModuleMetricPostAverage');
var _ModuleMetricPostAverage2 = _interopRequireDefault(_ModuleMetricPostAverage);
var _ModuleMetricProcess = require('./ModuleMetricProcess');
var _ModuleMetricProcess2 = _interopRequireDefault(_ModuleMetricProcess);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Provides a typhonjs-escomplex-module / ESComplexModule plugin which gathers and calculates all default metrics.
*
* @see https://www.npmjs.com/package/typhonjs-escomplex-commons
* @see https://www.npmjs.com/package/typhonjs-escomplex-module
*/
var PluginMetricsModule = function () {
function PluginMetricsModule() {
(0, _classCallCheck3.default)(this, PluginMetricsModule);
}
(0, _createClass3.default)(PluginMetricsModule, [{
key: 'onConfigure',
/**
* Loads any default settings that are not already provided by any user options.
*
* @param {object} ev - escomplex plugin event data.
*
* The following options are:
* ```
* (boolean) newmi - Boolean indicating whether the maintainability index should be rebased on a scale from
* 0 to 100; defaults to false.
* ```
*/
value: function onConfigure(ev) {
ev.data.settings.newmi = typeof ev.data.options.newmi === 'boolean' ? ev.data.options.newmi : false;
}
/**
* During AST traversal when a node is entered it is processed immediately if the node type corresponds to a
* loaded trait syntax. This is the main metric capture and processing location.
*
* @param {object} ev - escomplex plugin event data.
*/
}, {
key: 'onEnterNode',
value: function onEnterNode(ev) {
var moduleReport = ev.data.moduleReport;
var scopeControl = ev.data.scopeControl;
var node = ev.data.node;
var parent = ev.data.parent;
var syntax = ev.data.syntaxes[node.type];
// Process node syntax.
if ((typeof syntax === 'undefined' ? 'undefined' : (0, _typeof3.default)(syntax)) === 'object') {
_ModuleMetricProcess2.default.processSyntax(moduleReport, scopeControl, syntax, node, parent);
}
}
/**
* Performs average calculations based on collected report data.
*
* @param {object} ev - escomplex plugin event data.
*/
}, {
key: 'onModuleAverage',
value: function onModuleAverage(ev) {
_ModuleMetricAverage2.default.calculate(ev.data.moduleReport);
}
/**
* Performs initial calculations based on collected report data.
*
* @param {object} ev - escomplex plugin event data.
*/
}, {
key: 'onModuleCalculate',
value: function onModuleCalculate(ev) {
_ModuleMetricCalculate2.default.calculate(ev.data.moduleReport);
}
/**
* Performs any calculations that depend on averaged data. This is where the maintainability index is calculated.
*
* @param {object} ev - escomplex plugin event data.
*/
}, {
key: 'onModulePostAverage',
value: function onModulePostAverage(ev) {
_ModuleMetricPostAverage2.default.calculate(ev.data.moduleReport, ev.data.settings);
}
/**
* A new module report scope has been created. Update any associated metrics processing regarding the new scope.
*
* @param {object} ev - escomplex plugin event data.
*/
}, {
key: 'onModulePostScopeCreated',
value: function onModulePostScopeCreated(ev) {
_ModuleMetricProcess2.default.postScopeCreated(ev.data.moduleReport, ev.data.scopeControl, ev.data.newScope);
}
/**
* A new module report scope has been created. Update any associated metrics processing regarding the new scope.
*
* @param {object} ev - escomplex plugin event data.
*/
}, {
key: 'onModulePreScopeCreated',
value: function onModulePreScopeCreated(ev) {
_ModuleMetricProcess2.default.preScopeCreated(ev.data.moduleReport, ev.data.scopeControl, ev.data.newScope, ev.data.node, ev.data.parent);
}
}]);
return PluginMetricsModule;
}();
exports.default = PluginMetricsModule;
module.exports = exports['default'];