JavaScript source analysis and visualizer
npm install js-code-metricVisualize JavaScript source complexity with js-code-metric.
Based on the older es5 plato, this is a port to es6 and eslint
1. Install.npm install --save-dev js-code-metric
2. Add.
```
"scripts" : {
"js-code-metric": "./node_modules/.bin/jschecker -r -d ./report src",
}
3. Run.
npm run js-code-metric
Install the module with: npm install --save-dev js-code-metric
`js
//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);
`
`js
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);
`
`sh`
Usage : js-code-metric [options] -d
-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
`shell``
js-code-metric -r -d report src
* Complexity from typhonjs-escomplex
* Lint data from eslint
* [Rajaprabhu]
| version | update |
| ----------- | ------------------------------------------------------------------------------------------------ |
| 1.0.0-alpha | Project works with es6 and eslint |
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.
Copyright (c) 2019 Rajaprabhu
Licensed under the MIT license.