Home

Awesome

Grunt-Complexity

Build Status

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

Versions

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:

// 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


<a href="http://code.viget.com"> <img src="http://code.viget.com/github-banner.png" alt="Code At Viget"> </a>

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