Koality
Runs opinionated code metric tools against your code as part of the test suite. If the set level of desired quality is not met the build will fail.
Beware of the drop bears.
Installation
Add this line to your application's Gemfile:
gem 'koality', :require => false
And then execute:
$ bundle
Or install it yourself as:
$ gem install koality
Usage
Add the following to your applications Rakefile. Place it after
MyApp::Application.load_tasks
for Rails apps.
begin
require 'koality/rake_task'
Koality::RakeTask.new do |opts|
# configure options here
# See [koality_home]/lib/koality/options.rb for defaults
# opts.abc_threshold = 10
end
task :default => :koality
rescue LoadError
warn 'Could not load Koality, skipping Rake task.'
end
Running your test suite with Koality:
rake
Running koality on its own:
rake koality
SimpleCov Integration (Optional)
Add the following to the top of your spec/spec_helper.rb file. Must be before your require your application code.
require 'koality/simplecov'
SimpleCov.start
Available options
All options are shown with their current defaults.
Koality::RakeTask.new do |opts|
opts.abc_file_pattern = '{app,lib}/**/*.rb'
opts.abc_threshold = 15
opts.abc_violations_threshold = 0
opts.abc_enabled = true
opts.style_file_pattern = '{app,lib,spec}/**/*.{rb,coffee,js}'
opts.style_line_length_threshold = 120
opts.style_violations_threshold = 0
opts.style_enabled = true
opts.doc_file_pattern = '{app,lib}/**/*.rb'
opts.doc_violations_threshold = 0
opts.doc_enabled = false
opts.code_coverage_threshold = 90
opts.code_coverage_file = 'code_coverage'
opts.code_coverage_enabled = true
opts.rails_bp_accept_patterns = []
opts.rails_bp_ignore_patterns = []
opts.rails_bp_errors_threshold = 0
opts.rails_bp_error_file = 'rails_best_practices_errors'
opts.rails_bp_enabled = true
opts.custom_thresholds = []
opts.total_violations_threshold = 0
opts.abort_on_failure = true
opts.output_directory = 'quality'
opts.colorize_output = true
end
Configuring Rails Best Practices
Generate the config file (config/rails_best_practices.yml)
bundle exec rails_best_practices -g
Edit configuration or comment out lines to skip certain checks.
Common Questions
-
I don't want to the build to fail if I exceed any thresholds. How do I turn that off?
opts.abort_on_failure = false
-
I only want to fail the build if there are over 10 ABC errors. How do I set that up?
opts.abc_violations_threshold = 10 opts.total_violations_threshold = -1
-
How do I keep style violations from breaking the build?
opts.style_violations_threshold = -1 opts.total_violations_threshold = -1
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request