This is the Code Quality plugin for Onceover, The gateway drug to automated infrastructure testing with Puppet
What does it do?
The plugin checks your control repository for:
And then generates documentation using Puppet Strings
For sure you can hack around with rake/make and hack something up each time but aint nobody got time for that!
onceover-codequality gem by adding it to your
Gemfile or by running the following command:
$ gem install onceover-codequality
Installing the codequality gem creates a new item within onceover's
onceover run codequality --help for all available options.
The command will return
1 to the system if any tests fail, otherwise
0, which makes it perfect to include in build pipelines.
Check all code in the control repository for Lint and Syntax errors
$ onceover run codequality
Skip Lint check
$onceover run codequality --no_lint
Skip Puppet syntax check
$ onceover run codequality --no_syntax
Skip Puppetfile syntax check
$ onceover run codequality --no_puppetfile
Skip documentation generation
$ onceover run codequality --no_docs
Use custom lint settings
Create a file
puppet-lint.rc in the directory you run
from and it will be automatically used by Puppet Lint. If missing, the built-in
lib/onceover/codequality/lint.rb will be used.
$ onceover run codequality INFO -> Checking for lint... INFO -> checking manifests INFO -> checking site/role INFO -> Checking syntax... ---> syntax:manifests ---> syntax:templates ---> syntax:hiera:yaml INFO -> Code Quality tests passed, have a nice day
Lint and syntax errors
$ onceover run codequality INFO -> Checking for lint... INFO -> checking manifests INFO -> checking site/role ./manifests/example.pp - WARNING: class not documented on line 1 ./manifests/webserver.pp - WARNING: class not documented on line 1 ./manifests/database_server.pp - WARNING: class not documented on line 1 ERROR -> Lint test failed, see previous errors INFO -> Checking syntax... ---> syntax:manifests Could not parse for environment *root*: Syntax error at 'ensure' at /home/geoff/crud/control-repo/manifests/bogus.pp:2:3 ERROR -> Syntax test failed, see previous errors ERROR -> Code Quality tests failed, see previous error $ echo $? 1
WARN: Unresolved specs during Gem::Specification.reset?
I get these errors when I run
onceover run codequality but everything seems to work, what gives?:
WARN: Unresolved specs during Gem::Specification.reset: rake (>= 0) hiera (< 4, >= 2.0) gettext (>= 3.0.2) WARN: Clearing out unresolved specs. Please report a bug if this causes problems.
Beats me - something to do with rubygems. The best way to beat this message is to use bundler which basically you should already be doing anyway (for your own sanity):
$ bundle exec onceover run codequality
What are you using under-the-hood?
If you have new ideas for things to check this might be a handy place to add them, please open a ticket, otherwise see the helloworld plugin if you want to have a go at writing a plugin of your own.
Bug reports and pull requests are welcome on GitHub at https://github.com/declarativesystems/onceover-codequality.