UNPKG

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
'use strict'; 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'];