A JavaScript complexity analysis grunt task.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
tasks
test
.gitignore
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
Gruntfile.js
LICENSE.md
complexity.json
complexity.png
example.png
package.json
readme.md
yarn.lock

readme.md

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.