grunt-complexity

A JavaScript complexity analysis grunt task.

Showing:

Popularity

Downloads/wk

1.3K

GitHub Stars

223

Maintenance

Last Commit

4yrs ago

Contributors

20

Package

Dependencies

4

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

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.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial