Validates CPP files with Google's cpplint
A list of files is also expected.
Setting verbosity to
Using the
Using the
Using a custom reporter, disabling whitespace/braces and enabling whitespace/includealpha
Usage
This module has been built for usage with Node scripts, to run from the command line, and to be used as a Grunt task.Options
All methods of using this module allow for these specific configuration options:- reporter The reporter to use ( spec | json | plain-text ); defaults
- counting The counting-type ( total | toplevel | detailed ); defaults
build
and whitespace
will also be printed. If detailed is provided, then
a count is provided for each category like build/class
.- verbose The verbosity level; defaults to 1. A number 0-5 to restrict
- filters Enable/disable filtering for specific errors.
- extensions List of file extensions to lint.
- linelength The allowed line length.
A list of files is also expected.
CLI usage
Using thespec
reporter, disabling whitespace/braces errors and linting file1.bin/cpplint --reporter spec --filter whitespace-braces file1
Setting verbosity to
3
, line length to 120
, and the counting-type to detailed
while linting file1 and file2.bin/cpplint --verbose 3 --counting detailed --linelength 120 file2 file3
Using the
plain-text
reporter, ignoring build/deprecated errors and linting file1.bin/cpplint --filter build-deprecated --reporter plain-text file1
Using the
cc
and hpp
extensions and linting source1.cc and source1.hpp.bin/cpplint --extensions cc,hpp source1.cc source1.hpp
JavaScript usage
Using thespec
reportervar cpplint = require('lib/index.js');
var reporter = require('lib/reporters').spec;
var options = {
files: [
'/path/to/some/files.cc'
]
};
cpplint(options, reporter);
Using a custom reporter, disabling whitespace/braces and enabling whitespace/includealpha
var cpplint = require('lib/index');
var options = {
files: [
'/path/to/some/files.cc'
],
filters: {
'whitespace': {
'braces': false,
'include_alpha': true
}
},
// This could be an array of strings or a comma separated string
extensions: [
'cc',
'hpp'
]
};
cpplint(options, function (err, report) {
// your reporting logic
});
Grunt Task
grunt.loadNpmTasks('node-cpplint');
grunt.initConfig({
cpplint: {
files: [
'src/**/*.cc',
'src/**/*.cpp'
],
reporter: 'spec',
verbosity: 1
},
filters: {
'whitespace': {
'braces': false,
'include_alpha': true
}
},
linelength: 120,
// This could be an array of strings or a comma separated string
extensions: [
'cc',
'hpp'
]
});
TODO
Future plans (in no particular order):- better test coverage
- xunit-xml reporter
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests (using vows) for any new or changed functionality. Lint and test your code usinggrunt jslint
and verify that all unit tests are passing with grunt vows
.Revision History
0.4.0
- add support for the
linelength
option
0.3.0
- update cpplint
0.2.0
- update cpplint
- added extensions option for overriding what file extensions to lint
0.1.5
- more windows compability fixes (line-endings) (@zcbenz)
0.1.4
- bug fix in filters support (@kevinsawicki)
0.1.3
- update grunt task to work with grunt 0.4 (@kevinsawicki)
- update dev dependencies (grunt-jslint, vows, ...)
- added
npm test
support
0.1.2
- added support for ignoring certain errors (filters)
0.1.1
- added simple grunt task
0.1.0
- first public version
- provides a few simple options for validating CPP files