jfugett / es6-plato

JavaScript source code visualization, static analysis, and complexity tool

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

es6-plato

Visualize JavaScript source complexity with plato. Based on the older es5 plato, this is a port to es6 and eslint

#The Report dank-es6-nugs

Installation

Install the module with: npm install --save es6-plato

Usage

From scripts

//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);

Example Gulpfile

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);

From the commandline

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

class functions, ya'll

Data sources

Contributors

Release History

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.

License

Copyright (c) 2012 Jesse Harlin Licensed under the MIT license.

About

JavaScript source code visualization, static analysis, and complexity tool

License:MIT License


Languages

Language:JavaScript 72.2%Language:HTML 19.7%Language:CSS 8.1%