GithubHelp home page GithubHelp logo

kopach / codemetrics-cli Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kisstkondoros/codemetrics-cli

0.0 2.0 0.0 330 KB

Computes complexity in TypeScript / JavaScript / Lua files.

TypeScript 100.00%

codemetrics-cli's Introduction

Code Metrics - CLI

Computes complexity in TypeScript / JavaScript files.

Complexity calculation

The steps of the calculation:

  • create an AST from the input source file
  • walk through each and every node of it
  • depending on the type of the node and the configuration associated with it create a new entry about the node. This entry contains everything necessary for further use (e.g. a textual representation for the node, complexity increment, child nodes etc.)
  • show the sum of complexity of child nodes for methods and the maximum of child nodes for classes

Please note that it is not a standard metric, but it is a close approximation of Cyclomatic complexity.

Please also note that it is possible to balance the complexity calculation for the project / team / personal taste by adjusting the relevant configuration entries.

For example if one prefers guard clauses, and is ok with all the branches in switch statements then the following could be applied:

// codemetrics.config.js
// @ts-check
/** @type {import("codemetrics-cli").MetricsConfiguration}*/
var config = {};
config.ReturnStatement = 0;
config.CaseClause = 0;
config.DefaultClause = 0;

module.exports = config;

Configuration

The computation can be configured by default via the codemetrics.config.js file which is looked up automatically in the current and in the parent directories or by specifying the config file (with a relative or absolute path) via the --config parameter.

The file must have a single export, the configuration itself for which typescript type definitions are also provided. (See the example above)

Parameters

  -t, --threshold <number>  Minimum complexity to be shown
  -c, --config <string>     Path to the config file
  -l, --lint                Exit with non-zero on issues
  -p, --pattern <string>    Glob pattern

You can also use codemetrics-cli --help to get the list of the possible options.

Contributions

  • Add lint option to fail output when threshold not met - by @kopach

codemetrics-cli's People

Contributors

kisstkondoros avatar kopach avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.