Necessary Package Manager

    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.

    Install

    npm i js-code-metric

    DownloadsWeekly Downloads

    261

    Version

    1.0.76

    License

    MIT

    Unpacked Size

    1.37 MB

    Total Files

    93

    Last publish

    Collaborators

    • rajaprabhu