RSpec-specific analysis for your projects, as an extension to RuboCop.
Just install the rubocop-rspec gem
gem install rubocop-rspecor if you use bundler put this in your Gemfile
gem 'rubocop-rspec', require: false
You need to tell RuboCop to load the RSpec extension. There are three ways to do this:
Put this into your .rubocop.yml.
require: rubocop-rspecAlternatively, use the following array notation when specifying multiple extensions.
require:
- rubocop-other-extension
- rubocop-rspecNow you can run rubocop and it will automatically load the RuboCop RSpec
cops together with the standard cops.
rubocop --require rubocop-rspecRuboCop::RakeTask.new do |task|
task.requires << 'rubocop-rspec'
endrubocop-rspec is available on Code Climate as part of the rubocop engine. Learn More.
You can read more about RuboCop-RSpec in its official manual.
By default, rubocop-rspec only inspects code within paths ending in _spec.rb or including spec/. You can override this setting in your config file by specifying one or more patterns:
# Inspect all files
AllCops:
RSpec:
Patterns:
- '.+'# Inspect only files ending with `_test.rb`
AllCops:
RSpec:
Patterns:
- '_test.rb$'All cops are located under
lib/rubocop/cop/rspec, and contain
examples/documentation.
In your .rubocop.yml, you may treat the RSpec cops just like any other
cop. For example:
RSpec/FilePath:
Exclude:
- spec/my_poorly_named_spec_file.rbEnforcing
expect(calculator.compute(line_item)).to eq(5)over
calculator.compute(line_item).should == 5is a feature of RSpec itself – you can read about it in the RSpec Documentation
Enforcing
RSpec.describe MyClass do
...
endover
describe MyClass do
...
endcan be achieved using RSpec's disable_monkey_patching! method, which you can read more about in the RSpec Documentation. This will also prevent should from being defined on every object in your system.
Before disabling should you will need all your specs to use the expect syntax. You can use Transpec, which will do the conversion for you.
Checkout the contribution guidelines.
rubocop-rspec is MIT licensed. See the accompanying file for
the full text.