js-code-metric

1.0.76 • Public • Published

js-code-metric

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

Start in 3 steps.

  1. Install. npm install --save-dev js-code-metric

  2. Add.

"scripts" : {
    "js-code-metric": "./node_modules/.bin/jschecker -r -d ./report src",
}
  1. Run. npm run js-code-metric

Installation

Install the module with: npm install --save-dev js-code-metric

Usage

From scripts

//be sure and set your src, output, and any options.
let src = "./scripts/**/*.js";
let outputDir = "./artifacts/jschecker";
 
let jscheckerArgs = {
  title: "example",
  eslint: {}
};
 
//you can use the reports in the callback.
function callback(reports) {
  let overview = jschecker.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 jschecker.inspect
jschecker.inspect(src, outputDir, jscheckerArgs, callback);

Example Gulpfile

let gulp = require("gulp");
let jschecker = require("jschecker");
 
let src = "./scripts/**/*.js";
let outputDir = "./artifacts/jschecker";
 
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 jscheckerArgs = {
  title: "example",
  eslint: lintRules,
  complexity: complexityRules
};
 
function analysis() {
  return jschecker.inspect(src, outputDir, jscheckerArgs);
}
 
gulp.task("analysis", analysis);

From the commandline

Usage : js-code-metric [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
  -l, --jshint : String
      Specify a jshintrc file for JSHint linting
  -t, --title : String
      Title of the report
  -D, --date : String
      Time to use as the report date (seconds, > 9999999999 assumed to be ms)
  -n, --noempty
      Skips empty lines from line count
  -e, --eslint : String
      Specify a eslintrc file for ESLint linting

Example

js-code-metric -r -d report src

Data sources

Contributors

  • [Rajaprabhu]

Release History

version update
1.0.0-alpha Project works with es6 and eslint

About

This is currently a reimplementation of the older plato, and started as a fork from https://github.com/deedubs/js-code-metric, but has since been heavily modified. After seeing it was unpublished on npm and also wanting to add more features, 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) 2019 Rajaprabhu Licensed under the MIT license.

Dependents (0)

Package Sidebar

Install

npm i js-code-metric

Weekly Downloads

36

Version

1.0.76

License

MIT

Unpacked Size

1.37 MB

Total Files

93

Last publish

Collaborators

  • rajaprabhu