grunt-complexity

1.1.0 • Public • Published

Grunt-Complexity

Build Status

A grunt task that utilizes complexity-report to evaluate the complexity and maintainability of code.

Versions

  • Use version 0.0.7 for Grunt 0.3.x
  • Use versions 0.1.x for Grunt 0.4.x

screenshot screenshot

Usage

npm install grunt-complexity --save-dev

Within your grunt file:

    // Project configuration.
    grunt.initConfig({
 
        complexity: {
            generic: {
                src: ['grunt.js', 'tasks/grunt-complexity.js'],
                exclude: ['doNotTest.js'],
                options: {
                    breakOnErrors: true,
                    jsLintXML: 'report.xml',         // create XML JSLint-like report
                    checkstyleXML: 'checkstyle.xml', // create checkstyle report
                    pmdXML: 'pmd.xml',               // create pmd report
                    errorsOnly: false,               // show only maintainability errors
                    cyclomatic: [3, 7, 12],          // or optionally a single value, like 3
                    halstead: [8, 13, 20],           // or optionally a single value, like 8
                    maintainability: 100,
                    hideComplexFunctions: false,     // only display maintainability
                    broadcast: false                 // broadcast data over event-bus
                }
            }
        }
 
 
    });
 
    grunt.loadNpmTasks('grunt-complexity');
    grunt.registerTask('default', 'complexity');

What is Cyclomatic and Halstead?

Documentation on this to come. For now, see jscomplexity.org

Reporter

Set the broadcast option to true to send the aggregated data over the grunt-event bus.

Emitted events are:

  • grunt-complexity.start
  • grunt-complexity.maintainability, payload
  • grunt-complexity.end
// payload of grunt-complexity.maintainability
{
  filepath: /path/to/file,
  valid: true|false,
  maintainability: 123.42
}

Contributing

This repo has a submodule, so after you npm install, you'll want to run:

git submodule init
git submodule update
cd test/grunt.0.4
npm install
cd ...

Tests can be run with npm test.

License

grunt-complexity is released under the MIT License.

Contributors


Code At Viget

Visit code.viget.com to see more projects from Viget.

Package Sidebar

Install

npm i grunt-complexity

Weekly Downloads

1,147

Version

1.1.0

License

MIT

Last publish

Collaborators

  • nhunzaker
  • lawson
  • viget