js-code-metric
v1.0.76
Published
JavaScript source analysis and visualizer
Downloads
57
Maintainers
Readme
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.
Install.
npm install --save-dev js-code-metric
Add.
"scripts" : {
"js-code-metric": "./node_modules/.bin/jschecker -r -d ./report src",
}
- 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
- Complexity from typhonjs-escomplex
- Lint data from eslint
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.