.rubocop.yml
# This is the default configuration file. Enabling and disabling is configured
# in separate files. This file adds all other parameters apart from Enabled.
inherit_from:
- enabled.yml
- disabled.yml
# Common configuration.
AllCops:
# Include gemspec and Rakefile
Includes:
- '**/*.gemspec'
- '**/Rakefile'
Excludes:
- '**/initializers/*'
- 'config/*'
- 'db/*'
# By default, the rails cops are not run. Override in project or home
# directory .rubocop.yml files, or by giving the -R/--rails option.
RunRailsCops: true
# Indent private/protected/public as deep as method definitions
AccessModifierIndentation:
EnforcedStyle: indent
SupportedStyles:
- outdent
- indent
# Align the elements of a hash literal if they span more than one line.
AlignHash:
# Alignment of entries using hash rocket as separator. Valid values are:
#
# key - left alignment of keys
# 'a' => 2
# 'bb' => 3
# separator - alignment of hash rockets, keys are right aligned
# 'a' => 2
# 'bb' => 3
# table - left alignment of keys, hash rockets, and values
# 'a' => 2
# 'bb' => 3
EnforcedHashRocketStyle: key
# Alignment of entries using colon as separator. Valid values are:
#
# key - left alignment of keys
# a: 0
# bb: 1
# separator - alignment of colons, keys are right aligned
# a: 0
# bb: 1
# table - left alignment of keys and values
# a: 0
# bb: 1
EnforcedColonStyle: key
# Allow safe assignment in conditions.
AssignmentInCondition:
AllowSafeAssignment: true
BlockNesting:
Max: 3
BracesAroundHashParameters:
EnforcedStyle: no_braces
SupportedStyles:
- braces
- no_braces
# Indentation of `when`.
CaseIndentation:
IndentWhenRelativeTo: case
SupportedStyles:
- case
- end
IndentOneStep: false
ClassLength:
CountComments: false # count full line comments?
Max: 100
# Align with the style guide.
CollectionMethods:
PreferredMethods:
collect: 'map'
collect!: 'map!'
inject: 'reduce'
detect: 'find'
find_all: 'select'
# Checks formatting of special comments
CommentAnnotation:
Keywords:
- TODO
- FIXME
- OPTIMIZE
- HACK
- REVIEW
# Avoid complex methods.
CyclomaticComplexity:
Max: 6
# Multi-line method chaining should be done with leading dots.
DotPosition:
Style: leading
SupportedStyles:
- leading
- trailing
# Use empty lines between defs.
EmptyLineBetweenDefs:
# If true, this parameter means that single line method definitions don't
# need an empty line between them.
AllowAdjacentOneLineDefs: false
# Align ends correctly.
EndAlignment:
# The value `keyword` means that `end` should be aligned with the matching
# keyword (if, while, etc.).
# The value `variable` means that in assignments, `end` should be aligned
# with the start of the variable on the left hand side of `=`. In all other
# situations, `end` should still be aligned with the keyword.
AlignWith: keyword
SupportedStyles:
- keyword
- variable
# Checks use of for or each in multiline loops.
For:
EnforcedStyle: each
SupportedStyles:
- for
- each
# Built-in global variables are allowed by default.
GlobalVars:
AllowedVariables: []
HashSyntax:
EnforcedStyle: ruby19
SupportedStyles:
- ruby19
- hash_rockets
LambdaCall:
EnforcedStyle: call
SupportedStyles:
- call
- braces
LineLength:
Max: 99
MethodDefParentheses:
EnforcedStyle: require_parentheses
SupportedStyles:
- require_parentheses
- require_no_parentheses
MethodLength:
CountComments: false # count full line comments?
Max: 10
MethodName:
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- camelCase
NumericLiterals:
MinDigits: 5
Output:
Ignore:
- '^.*\.rake$'
- '^.*/script/.*$'
- '^.*/tasks/.*$'
- 'Rakefile$'
ParameterLists:
Max: 5
CountKeywordArgs: true
# Allow safe assignment in conditions.
ParenthesesAroundCondition:
AllowSafeAssignment: true
PredicateName:
NamePrefixBlacklist:
- is_
- has_
- have_
RaiseArgs:
EnforcedStyle: exploded
SupportedStyles:
- compact # raise Exception.new(msg)
- exploded # raise Exception, msg
RedundantReturn:
# When true allows code like `return x, y`.
AllowMultipleReturnValues: false
RegexpLiteral:
MaxSlashes: 1
Semicolon:
# Allow ; to separate several expressions on the same line.
AllowAsExpressionSeparator: false
SignalException:
EnforcedStyle: semantic
SupportedStyles:
- only_raise
- only_fail
- semantic
SingleLineBlockParams:
Methods:
- reduce:
- a
- e
- inject:
- a
- e
SingleLineMethods:
AllowIfMethodIsEmpty: true
StringLiterals:
EnforcedStyle: single_quotes
SupportedStyles:
- single_quotes
- double_quotes
SpaceAroundBlockBraces:
EnforcedStyle: space_inside_braces
SupportedStyles:
- space_inside_braces
- no_space_inside_braces
# Valid values are: space, no_space
EnforcedStyleForEmptyBraces: no_space
# Space between { and |. Overrides EnforcedStyle if there is a conflict.
SpaceBeforeBlockParameters: true
SpaceInsideHashLiteralBraces:
EnforcedStyle: space
EnforcedStyleForEmptyBraces: no_space
SupportedStyles:
- space
- no_space
TrailingComma:
EnforcedStyleForMultiline: no_comma
SupportedStyles:
- comma
- no_comma
# TrivialAccessors doesn't require exact name matches and doesn't allow
# predicated methods by default.
TrivialAccessors:
ExactNameMatch: false
AllowPredicates: false
Whitelist:
- to_ary
- to_a
- to_c
- to_enum
- to_h
- to_hash
- to_i
- to_int
- to_io
- to_open
- to_path
- to_proc
- to_r
- to_regexp
- to_str
- to_s
- to_sym
VariableName:
EnforcedStyle: snake_case
SupportedStyles:
- snake_case
- camelCase
WordArray:
MinSize: 0
##################### Rails ##################################
DefaultScope:
IncludePaths:
- app/models
HasAndBelongsToMany:
IncludePaths:
- app/models
ReadAttribute:
IncludePaths:
- app/models
Validation:
IncludePaths:
- app/models