.rubocop.yml
# This is the configuration used to check the rubocop source code.
require:
- rubocop/cop/internal_affairs
- rubocop-rspec
AllCops:
Exclude:
- 'vendor/**/*'
- 'spec/fixtures/**/*'
- 'tmp/**/*'
TargetRubyVersion: 2.4
Naming/PredicateName:
# Method define macros for dynamically generated method.
MethodDefinitionMacros:
- define_method
- define_singleton_method
- def_node_matcher
- def_node_search
Style/FrozenStringLiteralComment:
Enabled: false
Style/FormatStringToken:
# Because we parse a lot of source codes from strings. Percent arrays
# look like unannotated format string tokens to this cop.
Exclude:
- spec/**/*
Style/IpAddresses:
# The test for this cop includes strings that would cause offenses
Exclude:
- spec/rubocop/cop/style/ip_addresses_spec.rb
# Checks if uses of quotes match the configured preference.
Style/StringLiterals:
Enabled: false
Style/PercentLiteralDelimiters:
PreferredDelimiters:
'%i': '()'
# Don't complain about top-level class documentation comments.
Documentation:
Enabled: false
# Don't complain about long block lengths.
Metrics/BlockLength:
Enabled: false
Metrics/ClassLength:
CountComments: false # count full line comments?
Max: 150
Metrics/LineLength:
Max: 105
IgnoredPatterns:
- '(\A|\s)#' # Don't get upset at comments longer than the line length.
- 'authorize %' # Exclude Pundit authorization calls
- 'belongs_to :'
- 'has_many :'
- 'has_and_belongs_to_many :'
- 'has_one :'
Metrics/ModuleLength:
CountComments: false # count full line comments?
Max: 150
Style/AndOr:
# Whether `and` and `or` are banned only in conditionals (conditionals)
# or completely (always).
EnforcedStyle: always
Style/ClassAndModuleChildren:
Enabled: false
Style/Lambda:
EnforcedStyle: literal
Layout/EmptyLinesAroundClassBody:
Enabled: false
Layout/EmptyLinesAroundBlockBody:
Enabled: false
Layout/EndAlignment:
EnforcedStyleAlignWith: variable
Style/GuardClause:
Enabled: false
Style/PercentLiteralDelimiters:
Enabled: false
Style/TrailingCommaInArguments:
Enabled: false
Style/TrailingCommaInArrayLiteral:
Enabled: false
Style/TrailingCommaInHashLiteral:
Enabled: false
Layout/EndOfLine:
EnforcedStyle: lf
Layout/ClassStructure:
Enabled: true
Categories:
module_inclusion:
- include
- prepend
- extend
ExpectedOrder:
- module_inclusion
- constants
- public_class_methods
- initializer
- instance_methods
- protected_methods
- private_methods
Layout/IndentHeredoc:
EnforcedStyle: powerpack
# Trailing white space is meaningful in code examples
Layout/TrailingWhitespace:
AllowInHeredoc: true
Lint/AmbiguousBlockAssociation:
Exclude:
- 'spec/**/*.rb'
Lint/InterpolationCheck:
Exclude:
- 'spec/**/*.rb'
Lint/UselessAccessModifier:
MethodCreatingMethods:
- 'def_matcher'
- 'def_node_matcher'
Lint/BooleanSymbol:
Enabled: false
Metrics/BlockLength:
Exclude:
- 'Rakefile'
- '**/*.rake'
- 'spec/**/*.rb'
Metrics/ModuleLength:
Exclude:
- 'spec/**/*.rb'
RSpec/PredicateMatcher:
EnforcedStyle: explicit
RSpec/NestedGroups:
Max: 7