diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 8b3935da..3cac575f 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -8,7 +8,7 @@ Before submitting the PR make sure the following are checked: * [ ] Squashed related commits together. * [ ] Added tests. * [ ] Updated documentation. -* [ ] Added an entry to the [changelog](https://github.com/rubocop-hq/rubocop-rspec/blob/master/CHANGELOG.md) if the new code introduces user-observable changes. +* [ ] Added an entry to the `CHANGELOG.md` if the new code introduces user-observable changes. * [ ] The build (`bundle exec rake`) passes (be sure to run this locally, since it may produce updated documentation that you will need to commit). If you have created a new cop: @@ -16,3 +16,8 @@ If you have created a new cop: * [ ] Added the new cop to `config/default.yml`. * [ ] The cop documents examples of good and bad code. * [ ] The tests assert both that bad code is reported and that good code is not reported. +* [ ] Set `VersionAdded` in `default/config.yml` to the next minor version. + +If you have modified an existing cop's configuration options: + +* [ ] Set `VersionChanged` in `default/config.yml` to the next major version. diff --git a/config/default.yml b/config/default.yml index 3ea319e7..e9ca2945 100644 --- a/config/default.yml +++ b/config/default.yml @@ -13,31 +13,37 @@ AllCops: RSpec/AlignLeftLetBrace: Description: Checks that left braces for adjacent single line lets are aligned. Enabled: false + VersionAdded: '1.16' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/AlignLeftLetBrace RSpec/AlignRightLetBrace: Description: Checks that right braces for adjacent single line lets are aligned. Enabled: false + VersionAdded: '1.16' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/AlignRightLetBrace RSpec/AnyInstance: Description: Check that instances are not being stubbed globally. Enabled: true + VersionAdded: '1.4' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/AnyInstance RSpec/AroundBlock: Description: Checks that around blocks actually run the test. Enabled: true + VersionAdded: '1.11' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/AroundBlock RSpec/Be: Description: Check for expectations where `be` is used without argument. Enabled: true + VersionAdded: '1.25' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Be RSpec/BeEql: Description: Check for expectations where `be(...)` can replace `eql(...)`. Enabled: true + VersionAdded: '1.7' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/BeEql RSpec/BeforeAfterAll: @@ -47,11 +53,13 @@ RSpec/BeforeAfterAll: - spec/spec_helper.rb - spec/rails_helper.rb - spec/support/**/*.rb + VersionAdded: '1.12' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/BeforeAfterAll RSpec/ContextMethod: Description: "`context` should not be used for specifying methods." Enabled: true + VersionAdded: '1.36' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ContextMethod RSpec/ContextWording: @@ -61,86 +69,103 @@ RSpec/ContextWording: - when - with - without + VersionAdded: '1.20' + VersionChanged: 1.20.1 StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ContextWording RSpec/DescribeClass: Description: Check that the first argument to the top level describe is a constant. Enabled: true + VersionAdded: '1.0' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribeClass RSpec/DescribeMethod: Description: Checks that the second argument to `describe` specifies a method. Enabled: true + VersionAdded: '1.0' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribeMethod RSpec/DescribeSymbol: Description: Avoid describing symbols. Enabled: true + VersionAdded: '1.15' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribeSymbol RSpec/DescribedClass: Description: Checks that tests use `described_class`. - SkipBlocks: false Enabled: true + SkipBlocks: false EnforcedStyle: described_class SupportedStyles: - described_class - explicit + SafeAutoCorrect: false + VersionAdded: '1.0' + VersionChanged: '1.11' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribedClass RSpec/DescribedClassModuleWrapping: Description: Avoid opening modules and defining specs within them. Enabled: false + VersionAdded: '1.37' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribedClassModuleWrapping RSpec/Dialect: Description: This cop enforces custom RSpec dialects. Enabled: false PreferredMethods: {} + VersionAdded: '1.33' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Dialect RSpec/EmptyExampleGroup: Description: Checks if an example group does not include any tests. Enabled: true CustomIncludeMethods: [] + VersionAdded: '1.7' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyExampleGroup RSpec/EmptyHook: Description: Checks for empty before and after hooks. Enabled: true - VersionAdded: 1.39.0 + VersionAdded: '1.39' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyHook RSpec/EmptyLineAfterExample: Description: Checks if there is an empty line after example blocks. Enabled: true AllowConsecutiveOneLiners: true + VersionAdded: '1.36' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyLineAfterExample RSpec/EmptyLineAfterExampleGroup: Description: Checks if there is an empty line after example group blocks. Enabled: true + VersionAdded: '1.27' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyLineAfterExampleGroup RSpec/EmptyLineAfterFinalLet: Description: Checks if there is an empty line after the last let block. Enabled: true + VersionAdded: '1.14' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyLineAfterFinalLet RSpec/EmptyLineAfterHook: Description: Checks if there is an empty line after hook blocks. Enabled: true + VersionAdded: '1.27' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyLineAfterHook RSpec/EmptyLineAfterSubject: Description: Checks if there is an empty line after subject block. Enabled: true + VersionAdded: '1.14' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyLineAfterSubject RSpec/ExampleLength: Description: Checks for long examples. Enabled: true Max: 5 + VersionAdded: '1.5' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExampleLength RSpec/ExampleWithoutDescription: @@ -151,6 +176,7 @@ RSpec/ExampleWithoutDescription: - always_allow - single_line_only - disallow + VersionAdded: '1.22' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExampleWithoutDescription RSpec/ExampleWording: @@ -162,6 +188,8 @@ RSpec/ExampleWording: have: has HAVE: HAS IgnoredWords: [] + VersionAdded: '1.0' + VersionChanged: '1.2' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExampleWording RSpec/ExpectActual: @@ -169,6 +197,7 @@ RSpec/ExpectActual: Enabled: true Exclude: - spec/routing/**/* + VersionAdded: '1.7' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExpectActual RSpec/ExpectChange: @@ -178,16 +207,19 @@ RSpec/ExpectChange: SupportedStyles: - method_call - block + VersionAdded: '1.22' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExpectChange RSpec/ExpectInHook: - Enabled: true Description: Do not use `expect` in hooks such as `before`. + Enabled: true + VersionAdded: '1.16' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExpectInHook RSpec/ExpectOutput: Description: Checks for opportunities to use `expect { ... }.to output`. Enabled: true + VersionAdded: '1.10' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExpectOutput RSpec/FilePath: @@ -198,11 +230,13 @@ RSpec/FilePath: RSpec: rspec IgnoreMethods: false SpecSuffixOnly: false + VersionAdded: '1.2' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FilePath RSpec/Focus: Description: Checks if examples are focused. Enabled: true + VersionAdded: '1.5' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Focus RSpec/HookArgument: @@ -213,16 +247,19 @@ RSpec/HookArgument: - implicit - each - example + VersionAdded: '1.7' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/HookArgument RSpec/HooksBeforeExamples: - Enabled: true Description: Checks for before/around/after hooks that come after an example. + Enabled: true + VersionAdded: '1.29' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/HooksBeforeExamples RSpec/ImplicitBlockExpectation: Description: Check that implicit block expectation syntax is not used. Enabled: true + VersionAdded: '1.35' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ImplicitBlockExpectation RSpec/ImplicitExpect: @@ -232,32 +269,39 @@ RSpec/ImplicitExpect: SupportedStyles: - is_expected - should + VersionAdded: '1.8' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ImplicitExpect RSpec/ImplicitSubject: - Enabled: true Description: Checks for usage of implicit subject (`is_expected` / `should`). + Enabled: true EnforcedStyle: single_line_only SupportedStyles: - single_line_only - single_statement_only - disallow + VersionAdded: '1.29' + VersionChanged: '1.30' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ImplicitSubject RSpec/InstanceSpy: Description: Checks for `instance_double` used with `have_received`. Enabled: true + VersionAdded: '1.12' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/InstanceSpy RSpec/InstanceVariable: Description: Checks for instance variable usage in specs. - AssignmentOnly: false Enabled: true + AssignmentOnly: false + VersionAdded: '1.0' + VersionChanged: '1.7' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/InstanceVariable RSpec/InvalidPredicateMatcher: Description: Checks invalid usage for predicate matcher. Enabled: true + VersionAdded: '1.16' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/InvalidPredicateMatcher RSpec/ItBehavesLike: @@ -267,36 +311,45 @@ RSpec/ItBehavesLike: SupportedStyles: - it_behaves_like - it_should_behave_like + VersionAdded: '1.13' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ItBehavesLike RSpec/IteratedExpectation: Description: Check that `all` matcher is used instead of iterating over an array. Enabled: true + VersionAdded: '1.14' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/IteratedExpectation RSpec/LeadingSubject: Description: Enforce that subject is the first definition in the test. Enabled: true + VersionAdded: '1.7' + VersionChanged: '1.14' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/LeadingSubject RSpec/LeakyConstantDeclaration: Description: Checks that no class, module, or constant is declared. Enabled: true + VersionAdded: '1.35' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/LeakyConstantDeclaration RSpec/LetBeforeExamples: Description: Checks for `let` definitions that come after an example. Enabled: true + VersionAdded: '1.16' + VersionChanged: '1.22' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/LetBeforeExamples RSpec/LetSetup: Description: Checks unreferenced `let!` calls being used for test setup. Enabled: true + VersionAdded: '1.7' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/LetSetup RSpec/MessageChain: Description: Check that chains of messages are not being stubbed. Enabled: true + VersionAdded: '1.7' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MessageChain RSpec/MessageExpectation: @@ -306,6 +359,8 @@ RSpec/MessageExpectation: SupportedStyles: - allow - expect + VersionAdded: '1.7' + VersionChanged: '1.8' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MessageExpectation RSpec/MessageSpies: @@ -315,58 +370,70 @@ RSpec/MessageSpies: SupportedStyles: - have_received - receive + VersionAdded: '1.9' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MessageSpies RSpec/MissingExampleGroupArgument: Description: Checks that the first argument to an example group is not empty. Enabled: true + VersionAdded: '1.28' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MissingExampleGroupArgument RSpec/MultipleDescribes: Description: Checks for multiple top level describes. Enabled: true + VersionAdded: '1.0' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MultipleDescribes RSpec/MultipleExpectations: Description: Checks if examples contain too many `expect` calls. Enabled: true Max: 1 + VersionAdded: '1.7' + VersionChanged: '1.21' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MultipleExpectations RSpec/MultipleSubjects: Description: Checks if an example group defines `subject` multiple times. Enabled: true + VersionAdded: '1.16' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MultipleSubjects RSpec/NamedSubject: Description: Checks for explicitly referenced test subjects. Enabled: true IgnoreSharedExamples: true + VersionAdded: 1.5.3 StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/NamedSubject RSpec/NestedGroups: Description: Checks for nested example groups. Enabled: true Max: 3 + VersionAdded: '1.7' + VersionChanged: '1.10' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/NestedGroups RSpec/NotToNot: Description: Checks for consistent method usage for negating expectations. + Enabled: true EnforcedStyle: not_to SupportedStyles: - not_to - to_not - Enabled: true + VersionAdded: '1.4' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/NotToNot RSpec/OverwritingSetup: - Enabled: true Description: Checks if there is a let/subject that overwrites an existing one. + Enabled: true + VersionAdded: '1.14' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/OverwritingSetup RSpec/Pending: - Enabled: false Description: Checks for any pending or skipped examples. + Enabled: false + VersionAdded: '1.25' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Pending RSpec/PredicateMatcher: @@ -378,81 +445,99 @@ RSpec/PredicateMatcher: SupportedStyles: - inflected - explicit + SafeAutoCorrect: false + VersionAdded: '1.16' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/PredicateMatcher RSpec/ReceiveCounts: - Enabled: true Description: Check for `once` and `twice` receive counts matchers usage. + Enabled: true + VersionAdded: '1.26' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ReceiveCounts RSpec/ReceiveNever: - Enabled: true Description: Prefer `not_to receive(...)` over `receive(...).never`. + Enabled: true + VersionAdded: '1.28' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ReceiveNever RSpec/RepeatedDescription: - Enabled: true Description: Check for repeated description strings in example groups. + Enabled: true + VersionAdded: '1.9' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedDescription RSpec/RepeatedExample: - Enabled: true Description: Check for repeated examples within example groups. + Enabled: true + VersionAdded: '1.10' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedExample RSpec/RepeatedExampleGroupBody: - Enabled: true Description: Check for repeated describe and context block body. + Enabled: true + VersionAdded: '1.38' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedExampleGroupBody RSpec/RepeatedExampleGroupDescription: - Enabled: true Description: Check for repeated example group descriptions. + Enabled: true + VersionAdded: '1.38' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedExampleGroupDescription RSpec/ReturnFromStub: - Enabled: true Description: Checks for consistent style of stub's return setting. + Enabled: true EnforcedStyle: and_return SupportedStyles: - and_return - block + VersionAdded: '1.16' + VersionChanged: '1.22' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ReturnFromStub RSpec/ScatteredLet: Description: Checks for let scattered across the example group. Enabled: true - StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ScatteredLet + VersionAdded: '1.14' VersionChanged: '1.39' + StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ScatteredLet RSpec/ScatteredSetup: Description: Checks for setup scattered across multiple hooks in an example group. Enabled: true + VersionAdded: '1.10' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ScatteredSetup RSpec/SharedContext: Description: Checks for proper shared_context and shared_examples usage. Enabled: true + VersionAdded: '1.13' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SharedContext RSpec/SharedExamples: Description: Enforces use of string to titleize shared examples. Enabled: true + VersionAdded: '1.25' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SharedExamples RSpec/SingleArgumentMessageChain: Description: Checks that chains of messages contain more than one element. Enabled: true + VersionAdded: '1.9' + VersionChanged: '1.10' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SingleArgumentMessageChain RSpec/SubjectStub: Description: Checks for stubbed test subjects. Enabled: true + VersionAdded: '1.7' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SubjectStub RSpec/UnspecifiedException: Description: Checks for a specified error in checking raised errors. Enabled: true + VersionAdded: '1.30' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/UnspecifiedException RSpec/VariableDefinition: @@ -480,27 +565,34 @@ RSpec/VerifiedDoubles: Enabled: true IgnoreNameless: true IgnoreSymbolicNames: false + VersionAdded: 1.2.1 + VersionChanged: '1.5' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/VerifiedDoubles RSpec/VoidExpect: Description: This cop checks void `expect()`. Enabled: true + VersionAdded: '1.16' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/VoidExpect RSpec/Yield: Description: This cop checks for calling a block within a stub. Enabled: true + VersionAdded: '1.32' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Yield Capybara/CurrentPathExpectation: Description: Checks that no expectations are set on Capybara's `current_path`. Enabled: true + VersionAdded: '1.18' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/CurrentPathExpectation Capybara/FeatureMethods: Description: Checks for consistent method usage in feature specs. Enabled: true EnabledMethods: [] + VersionAdded: '1.17' + VersionChanged: '1.25' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/FeatureMethods Capybara/VisibilityMatcher: @@ -512,6 +604,7 @@ Capybara/VisibilityMatcher: FactoryBot/AttributeDefinedStatically: Description: Always declare attribute values as blocks. Enabled: true + VersionAdded: '1.28' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/AttributeDefinedStatically FactoryBot/CreateList: @@ -521,11 +614,13 @@ FactoryBot/CreateList: SupportedStyles: - create_list - n_times + VersionAdded: '1.25' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/CreateList FactoryBot/FactoryClassName: Description: Use string value when setting the class attribute explicitly. Enabled: true + VersionAdded: '1.37' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/FactoryClassName Rails/HttpStatus: @@ -535,4 +630,5 @@ Rails/HttpStatus: SupportedStyles: - numeric - symbolic + VersionAdded: '1.23' StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Rails/HttpStatus diff --git a/tasks/cops_documentation.rake b/tasks/cops_documentation.rake index 61c0d485..8b06365f 100644 --- a/tasks/cops_documentation.rake +++ b/tasks/cops_documentation.rake @@ -32,15 +32,29 @@ task generate_cops_documentation: :yard_for_generate_documentation do end end + # rubocop:disable Metrics/MethodLength def properties(config, cop) - header = ['Enabled by default', 'Supports autocorrection'] - enabled_by_default = config.for_cop(cop).fetch('Enabled') + header = [ + 'Enabled by default', 'Safe', 'Supports autocorrection', 'VersionAdded', + 'VersionChanged' + ] + config = config.for_cop(cop) + safe_auto_correct = config.fetch('SafeAutoCorrect', true) + autocorrect = if cop.new.support_autocorrect? + "Yes #{'(Unsafe)' unless safe_auto_correct}" + else + 'No' + end content = [[ - enabled_by_default ? 'Enabled' : 'Disabled', - cop.new.support_autocorrect? ? 'Yes' : 'No' + config.fetch('Enabled') ? 'Enabled' : 'Disabled', + config.fetch('Safe', true) ? 'Yes' : 'No', + autocorrect, + config.fetch('VersionAdded', '-'), + config.fetch('VersionChanged', '-') ]] to_table(header, content) + "\n" end + # rubocop:enable Metrics/MethodLength def h2(title) content = +"\n" @@ -192,7 +206,10 @@ task generate_cops_documentation: :yard_for_generate_documentation do def print_cop_with_doc(cop, config) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength t = config.for_cop(cop) - non_display_keys = %w[Description Enabled StyleGuide Reference] + non_display_keys = %w[ + Description Enabled StyleGuide Reference Safe SafeAutoCorrect VersionAdded + VersionChanged + ] pars = t.reject { |k| non_display_keys.include? k } description = 'No documentation' examples_object = []