forked from DMPRoadmap/roadmap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.rubocop.yml
179 lines (145 loc) · 5.29 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
AllCops:
# Cache the results for faster processing
UseCache: true
# Show the name of the cops being voilated in the feedback
DisplayCopNames: true
DisplayStyleGuide: true
Exclude:
- 'bin/**/*'
- 'db/**/*'
- 'vendor/**/*'
- 'node_modules/**/*'
- 'test/**/*'
- 'lib/tasks/*'
# Force no empty lines at the start or end of a block's body. Ignore specs, since this
# improves readability within the RSpec blocks.
Layout/EmptyLinesAroundBlockBody:
Exclude:
- 'spec/**/*'
# Force a single blank line around a class's body. Adding this whitespace makes code
# a bit easier to read.
Layout/EmptyLinesAroundClassBody:
Enabled: true
EnforcedStyle: empty_lines
# Force a single blank line around a module's body. Adding this whitespace makes code
# a bit easier to read.
Layout/EmptyLinesAroundModuleBody:
Enabled: true
EnforcedStyle: empty_lines
# Ignore this cop. The Rubocop default is sensible, but the rubocop-rails gem modifies
# this to position end keywords awkwardly.
Layout/EndAlignment:
Enabled: true
EnforcedStyleAlignWith: keyword
# The difference between `rails` and `normal` is that the `rails` style
# prescribes that in classes and modules the `protected` and `private`
# modifier keywords shall be indented the same as public methods and that
# protected and private members shall be indented one step more than the
# modifiers. Other than that, both styles mean that entities on the same
# logical depth shall have the same indentation.
Layout/IndentationConsistency:
Description: 'Keep indentation straight.'
StyleGuide: '#spaces-indentation'
Enabled: true
EnforcedStyle: normal
Layout/IndentationWidth:
Description: 'Use 2 spaces for indentation.'
StyleGuide: '#spaces-indentation'
Enabled: true
# Restrict the length of each line of code to 90 characters. Enforcing this is important
# as many developers are working on smaller screens, or split screens. Having to scroll
# to read a full line of code makes code harder to read and more frustrating to work with.
Layout/LineLength:
# I've found that 90 is a suitable limit. Many developers balk at the 80 character
# default.
Max: 100
Layout/EmptyLinesAroundAttributeAccessor:
Enabled: true
Layout/SpaceAroundMethodCallOperator:
Enabled: true
# Enforce this in the main code but ignore it in specs since the Rspec core methods
# are defined as potentially ambiguous blocks
Lint/AmbiguousBlockAssociation:
Exclude:
- 'spec/**/*'
Lint/DeprecatedOpenSSLConstant:
Enabled: true
Lint/MixedRegexpCaptureTypes:
Enabled: true
Lint/RaiseException:
Enabled: true
Lint/StructNewOverride:
Enabled: true
# Bumping the default AbcSize so we don't need to refactor everything
Metrics/AbcSize:
Max: 25
# Restrict the number of lines of code that may be within a block of code. This should
# force developers to break their code into smaller discrete methods or objects.
Metrics/BlockLength:
# Exclude specs, since those are defined as large blocks of code
Exclude:
- 'spec/**/*'
# Bumping the default ClassLength so we don't need to refactor everything
Metrics/ClassLength:
Max: 300
# Bumping the default CyclomaticComplexity so we don't need to refactor everything
Metrics/CyclomaticComplexity:
Max: 25
# Bumping the default MethodLength so we don't need to refactor everything
Metrics/MethodLength:
Max: 25
# Bumping the default PerceivedComplexity so we don't need to refactor everything
Metrics/PerceivedComplexity:
Max: 25
# This cop enforces the use of boolean and/or "&&" and "||" over "and" "or".
# Sometimes using "and"/"or" is preferrable, when these are used as control flow.
#
# For example:
#
# render text: "Hello world" and return
#
Style/AndOr:
Enabled: false
# This cop enforces how modules and classes are nested within another module or class.
# In Rails code (e.g. models and controllers) nesting with a colon is preferrable (e.g.
# User::Session).
Style/ClassAndModuleChildren:
Exclude:
- 'app/**/*'
# This cop enforces each class to have documentation at the top. That's not always
# practical or necessary in Rails apps (e.g. the purpose of helpers is self evident).
Style/Documentation:
Enabled: false
# Enforce empty methods to be written across two lines, like any normal method would be.
# This allows for easy modification of the method in future.
Style/EmptyMethod:
Enabled: true
EnforcedStyle: expanded
# Leave the string formatting style as `"some text %{value}" % { value: "text" }`
# since we're uncertain what effect `format` and `sprintf` may have on the Fastgetext
# markup `_("text")`
Style/FormatString:
EnforcedStyle: percent
# Prefer the use of `"some %{token} text"` instead of `some %<token> text` or
# `some %token text` since it would invalidate many of our translation strings
Style/FormatStringToken:
EnforcedStyle: template
# Enforce double quotes. Don't allow single quotes. This is preferred since double
# quotes are more useful (they support escaping characters, and interpolation).
Style/StringLiterals:
Enabled: true
EnforcedStyle: double_quotes
Style/ExponentialNotation:
Enabled: true
Style/HashEachMethods:
Enabled: true
Style/HashTransformKeys:
Enabled: true
Style/HashTransformValues:
Enabled: true
Style/RedundantRegexpCharacterClass:
Enabled: true
Style/RedundantRegexpEscape:
Enabled: true
Style/SlicingWithRange:
Enabled: true