JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 8139
  • Score
    100M100P100Q128250F
  • License MIT

Measure the churn/complexity score. Higher values mean hotspots where refactorings should happen.

Package Exports

  • code-complexity

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (code-complexity) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

code-complexity

Measure the churn/complexity score. Higher values mean hotspots where refactorings should happen.

Build Status Coverage Status Style Status NPM Version

Quoting Michael Feathers (source here):

Often when we refactor, we look at local areas of code. If we take a wider view, using information from our version control systems, we can get a better sense of the effects of our refactoring efforts.

Note: the current complexity implementation is based on source lines of code (using the node-sloc package). Better means are open to discussion in the repo Issues.

Usage

$ npx code-complexity <path-to-git-directory>

Help

    Usage: code-complexity <dir> [options]
    
    Measure the churn/complexity score. Higher values mean hotspots where refactorings should happen.
    
    Options:
      -V, --version          output the version number
      --filter <strings>     list of globs (comma separated) to filter
      -f, --format [format]  format results using table or json
      -l, --limit [limit]    limit the number of files to output
      -i, --since [since]    limit the age of the commit analyzed
      -s, --sort [sort]      sort results (allowed valued: score,
                             churn, complexity or file)
      -h, --help             display help for command
    
    Examples:
    
    $ code-complexity <dir>
    $ code-complexity <dir> --limit 3
    $ code-complexity <dir> --sort score
    $ code-complexity <dir> --filter 'src/**,!src/front/**'
    $ code-complexity <dir> --limit 10 --sort score

Output

$ npx code-complexity . --sort=score --limit=3

┌──────────────────────────────┬────────────┬───────┬───────┐
│ file                         │ complexity │ churn │ score │
├──────────────────────────────┼────────────┼───────┼───────┤
│ src/cli.ts                   │ 1038824   │
├──────────────────────────────┼────────────┼───────┼───────┤
│ test/code-complexity.test.ts │ 1077749   │
├──────────────────────────────┼────────────┼───────┼───────┤
│ .idea/workspace.xml          │ 1236738   │
└──────────────────────────────┴────────────┴───────┴───────┘

Troubleshooting

  • Error: stdout maxBuffer exceeded: use the flag --since to limit the number of commits to analyze.