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'],
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 : es6-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
es6-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. |
1.0.8 | Fixes to eslint allowing for plugin usage. |
1.0.9 | Update dependencies to latest versions |
1.0.13 | Fix templates to work in some CI envs + add jsx support |
1.0.14 | update dependencies in package.json |
1.0.15 | update dependencies in package.json |
1.0.16 | switch to globby, address Linux line endings |
#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.