-
Notifications
You must be signed in to change notification settings - Fork 8
/
.rubocop.yml
138 lines (107 loc) · 2.95 KB
/
.rubocop.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
inherit_from: .rubocop_todo.yml
# This file defines all the linter rules for the project.
# See the list of the rules which are called "cops"
# https://docs.rubocop.org/rubocop/cops.html
# https://docs.rubocop.org/rubocop-rails/cops_rails.html
# These configurations are *largely* the rubocop defaults.
# We've relaxed some configurations that may be harder to meet while
# you are learning.
# rubocop allows us to go simply beyond code formatting and also focus on
# best practices, like code complexity.
require:
- rubocop-rails
- rubocop-rspec
AllCops:
NewCops: enable
TargetRubyVersion: 2.6
Exclude:
- bin/*
- config/routes.rb
- db/schema.rb
- db/seed_data.rb
- db/seeds.rb
- features/step_definitions/web_steps.rb
- features/support/paths.rb
- features/support/selectors.rb
- Gemfile
- Guardfile
- lib/**/* # This is probably a bit broad, but not much code there...
- node_modules/**/*
- vendor/**/*
Layout/EndOfLine:
EnforcedStyle: lf
Lint/AmbiguousRegexpLiteral:
Exclude:
- features/step_definitions/*
Style/CommentAnnotation:
Keywords:
- CS169
- ACTION-MAP
- TODO
- HACK
- REVIEW
Rails:
Enabled: true
Gemspec/RequiredRubyVersion:
Enabled: true
Layout/EmptyLineAfterGuardClause:
Enabled: true
# No space makes the method definition shorter and differentiates
# from a regular assignment.
Layout/SpaceAroundEqualsInParameterDefault:
EnforcedStyle: no_space
# Most readable form.
Layout/HashAlignment:
EnforcedHashRocketStyle: table
EnforcedColonStyle: table
Layout/LineLength:
Max: 120
Lint/RaiseException:
Enabled: true
Lint/StructNewOverride:
Enabled: true
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsabcsize
Metrics/AbcSize:
Max: 30
Enabled: true
Metrics/BlockLength:
Enabled: false
AllowedPatterns:
- "*"
# Skips style of child classes and modules.
Style/ClassAndModuleChildren:
Enabled: false
Style/CollectionMethods:
Enabled: true
PreferredMethods:
reduce: "inject"
Style/Documentation:
Enabled: false
Style/HashEachMethods:
Enabled: true
AutoCorrect: false # Unsafe autocorrect
Style/HashTransformKeys:
Enabled: true
AutoCorrect: false # Unsafe autocorrect
Style/HashTransformValues:
Enabled: true
AutoCorrect: false # Unsafe autocorrect
# Mixing the styles looks just silly.
Style/HashSyntax:
EnforcedStyle: ruby19_no_mixed_keys
# has_key? and has_value? are far more readable than key? and value?
Style/PreferredHashMethods:
EnforcedStyle: verbose
# Enforces using '' instead of "" unless necessary.
Style/StringLiterals:
Enabled: false
Metrics/MethodLength:
Max: 20
RSpec/InstanceVariable:
Enabled: false
RSpec/DescribeClass:
Exclude:
- spec/linters/*
# Ideally, you'd want no more than 2.
RSpec/MultipleExpectations:
Max: 4