node package manager
Orgs are free. Discover, share, and reuse code in your team. Create a free org »

grunt-complexity

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.