A JavaScript complexity analysis grunt task.
JavaScript Smarty
Latest commit 3e51251 Aug 25, 2016 @nhunzaker nhunzaker 1.0.1



Build Status

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


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

screenshot screenshot


npm install grunt-complexity --save-dev

Within your grunt file:

    // Project configuration.

        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.registerTask('default', 'complexity');

What is Cyclomatic and Halstead?

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


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


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.


grunt-complexity is released under the MIT License.


Code At Viget

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