Visualize JavaScript source complexity with plato.
Based on the older es5 plato, this is a port to es6
and eslint
Install the module with: npm install --save es6-plato
//be sure and set your src, output, and any options.
let src = './scripts/**/*.js';
let outputDir = './artifacts/plato';
let platoArgs = {
title: 'example',
eslint: {}
};
//you can use the reports in the callback.
function callback(reports){
let overview = plato.getOverviewReport(reports);
let {
total,
average
} = overview.summary;
let output = `total
----------------------
eslint: ${total.eslint}
sloc: ${total.sloc}
maintainability: ${total.maintainability}
average
----------------------
eslint: ${average.eslint}
sloc: ${average.sloc}
maintainability: ${average.maintainability}`;
console.log(output);
}
//usage is plato.inspect
plato.inspect(src, outputDir, platoArgs, callback);
let gulp = require('gulp');
let plato = require('es6-plato');
let src = './scripts/**/*.js';
let outputDir = './artifacts/plato';
let lintRules = {
'rules': {
'indent': [2,'tab'],
'quotes': [2,'single'],
'semi': [2,'always'],
'no-console' : [1],
'curly': ['error'],
'no-dupe-keys': 2,
'func-names': [1, 'always']
},
'env': {
'es6': true
},
'globals': {
'require' : true
},
'parserOptions' : {
'sourceType': 'module',
'ecmaFeatures': {
'jsx': true,
'modules': true
}
}
};
let complexityRules = {
};
let platoArgs = {
title: 'example',
eslint: lintRules,
complexity: complexityRules
};
function analysis() {
return plato.inspect(src, outputDir, platoArgs);
}
gulp.task('analysis', analysis);
Usage : plato [options] -d <output_dir> <input files>
-h, --help
Display this help text.
-q, --quiet
Reduce output to errors only
-v, --version
Print the version.
-x, --exclude : String
File exclusion regex
-d, --dir : String *required*
The output directory
-r, --recurse
Recursively search directories
-t, --title : String
Title of the report
-D, --date : String
Time to use as the report date (seconds, > 9999999999 assumed to be ms)
Example
plato -r -d report src
- Complexity from typhonjs-escomplex
- Lint data from eslint
version | update |
---|---|
1.0.2-alpha | Project works with es6 and eslint |
1.0.6-alpha | Use typhonjs-escomplex |
1.0.0 | Class methods parsed and evaluated correctly |
1.0.2 | Fix error when no callback supplied |
1.0.5 | Update dependencies; fix lodash; add summary display link |
1.0.7 | Default complexity to 1-100 not 1-177, this can be overridden in the complexity object settings. |
#About This is currently a reimplementation of the older plato, and started as a fork from https://github.com/deedubs/es6-plato, but has since been heavily modified. After seeing it was unpublished on npm and also wanting to add more features, I Asked if it would be alright for me to publish and continue the work. This project uses eslint, not jshint for default linting.
I have switched to the typhon-js module since it properly parses classes.
Copyright (c) 2012 Jesse Harlin Licensed under the MIT license.