Onceover::CodeQuality
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:
- Linting
- Syntax
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!
Installation
Install the onceover-codequality
gem by adding it to your Gemfile
or by running the following command:
$ gem install onceover-codequality
Usage
Installing the codequality gem creates a new item within onceover's run
command: codequality
. See 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 onceover codequality
from and it will be automatically used by Puppet Lint. If missing, the built-in
defaults from lib/onceover/codequality/lint.rb
will be used.
Sample output
All clear
$ 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
FAQ
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?
Development
Writing your own onceover plugins
Have a look at helloworld plugin if you want to have a go at writing a plugin of your own.
How to run tests
bundle exec rake spec
How to build gem
gem build onceover-codequality.gemspec
How to upload to rubygems.org
gem push XXX.gem
Contributing
- This project is looking for a maintainer
- Bug reports and pull requests welcome