Giter Club home page Giter Club logo

onceover-codequality's Introduction

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

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.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/declarativesystems/onceover-codequality.

onceover-codequality's People

Contributors

alexjfisher avatar dependabot[bot] avatar geoffwilliams avatar nekototori avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.