rubocop-github 0.17.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0fd87ba9b81dbf0489ef9f8bdddfdc7ad832c7735e4376851165a03369a4493d
4
- data.tar.gz: 294732c21b2ac89bde8bc654854d659293b7347ca478013e2eeeda8be3b92c4d
3
+ metadata.gz: a5aac9faf8fd07df225b66910c710065d8d69fd889bd424778c3802374691d95
4
+ data.tar.gz: fc3548902e7759613503804188cd2e71e45ff0e4c6464c7544c6f3a62d9addd3
5
5
  SHA512:
6
- metadata.gz: 75eca6f6d9a4c688a24f57f6b282d8a7515e7408db7c403ae0c3acdcd677d9cbb6acaa0713c55f8544baed002a077a1bcb3f2a4efd24d9118b720b7175d84a2c
7
- data.tar.gz: 4770a141ce649d7bb034a9071db481a52858461672804e63ba62ea928072e0094177630d747a40b50ec017dafb323b5e6f4d4249d2e4ab543a20ebd5c53cfb14
6
+ metadata.gz: d5850a48c2665aff47ca0d0505b20869d0e573e4bb4018a79132a78e64c3b7fd3fe9c27c0c472966a1ce1e9bcaf9969a61d9241d919f899769a6b73f308fd48a
7
+ data.tar.gz: d451981724e1d7bc407f7bf0f5fb2078f97eb9779f83fa3168241e25b28beffebb06d55805bc8e7fee8eceb1621e8cc28ce0308f389e1ebe30edd4ef023108b5
data/README.md CHANGED
@@ -4,28 +4,6 @@ This repository provides recommended RuboCop configuration and additional Cops f
4
4
 
5
5
  ## Usage
6
6
 
7
- Rubocop 0.68 removed performance cops and 0.72 removed Rails cops. However, upgrading `rubocop-github` without modification will almost definitely create very many new offenses. The current version of this gem exposes the "legacy" configuration under `config/default.yml` and `config/rails.yml` which should be used *if and only if* the version of rubocop is locked to `< 0.68` in your project (which it should be unless you `bundle update rubocop`). It also exposes an "edge" configuration under `config/default_edge.yml` and `config/rails_edge.yml` so that the changes can be tested without introducing breaking changes.
8
-
9
- ### Legacy usage
10
-
11
- **Gemfile**
12
-
13
- ``` ruby
14
- gem "rubocop", "< 0.68"
15
- gem "rubocop-github"
16
- ```
17
-
18
- **.rubocop.yml**
19
-
20
- ``` yaml
21
- inherit_gem:
22
- rubocop-github:
23
- - config/default.yml
24
- - config/rails.yml
25
- ```
26
-
27
- ### Edge usage
28
-
29
7
  **Gemfile**
30
8
 
31
9
  ``` ruby
@@ -43,6 +21,11 @@ inherit_gem:
43
21
  - config/rails_edge.yml
44
22
  ```
45
23
 
24
+ ### Legacy usage
25
+
26
+ If you are using a rubocop version < 1.0.0, you can use rubocop-github version
27
+ 0.16.2 (see the README from that version for more details).
28
+
46
29
  ## Testing
47
30
 
48
31
  `bundle install`
data/STYLEGUIDE.md CHANGED
@@ -387,7 +387,8 @@ remove_member(user, skip_membership_check: true)
387
387
 
388
388
  * The names of potentially "dangerous" methods (i.e. methods that modify `self` or the
389
389
  arguments, `exit!`, etc.) should end with an exclamation mark. Bang methods
390
- should only exist if a non-bang method exists. ([More on this](http://dablog.rubypal.com/2007/8/15/bang-methods-or-danger-will-rubyist)).
390
+ should only exist if a non-bang counterpart (method name which does NOT end with !)
391
+ also exists.
391
392
 
392
393
  ## Percent Literals
393
394
 
data/config/default.yml CHANGED
@@ -1,2 +1,334 @@
1
- # Inherit from default_deprecated until 1.0
2
- inherit_from: default_deprecated.yml
1
+ require:
2
+ - rubocop/cop/github
3
+ - rubocop-performance
4
+
5
+ AllCops:
6
+ DisabledByDefault: true
7
+
8
+ Bundler/DuplicatedGem:
9
+ Enabled: true
10
+
11
+ Bundler/OrderedGems:
12
+ Enabled: true
13
+
14
+ GitHub/InsecureHashAlgorithm:
15
+ Enabled: true
16
+
17
+ Layout/BlockAlignment:
18
+ Enabled: true
19
+
20
+ Layout/BlockEndNewline:
21
+ Enabled: true
22
+
23
+ Layout/ConditionPosition:
24
+ Enabled: true
25
+
26
+ Layout/DefEndAlignment:
27
+ Enabled: true
28
+
29
+ Layout/EndAlignment:
30
+ Enabled: false
31
+
32
+ Layout/EndOfLine:
33
+ Enabled: true
34
+
35
+ Layout/IndentationStyle:
36
+ Enabled: true
37
+ EnforcedStyle: spaces
38
+ IndentationWidth: 2
39
+
40
+ Layout/IndentationWidth:
41
+ Enabled: true
42
+ Width: 2
43
+
44
+ Layout/InitialIndentation:
45
+ Enabled: true
46
+
47
+ Layout/LineLength:
48
+ Enabled: false
49
+
50
+ Layout/SpaceAfterColon:
51
+ Enabled: true
52
+
53
+ Layout/SpaceAfterComma:
54
+ Enabled: true
55
+
56
+ Layout/SpaceAfterMethodName:
57
+ Enabled: true
58
+
59
+ Layout/SpaceAfterNot:
60
+ Enabled: true
61
+
62
+ Layout/SpaceAfterSemicolon:
63
+ Enabled: true
64
+
65
+ Layout/SpaceAroundBlockParameters:
66
+ Enabled: true
67
+
68
+ Layout/SpaceAroundEqualsInParameterDefault:
69
+ Enabled: true
70
+
71
+ Layout/SpaceBeforeBlockBraces:
72
+ Enabled: true
73
+
74
+ Layout/SpaceInsideArrayLiteralBrackets:
75
+ Enabled: true
76
+ EnforcedStyle: no_space
77
+
78
+ Layout/SpaceInsideArrayPercentLiteral:
79
+ Enabled: true
80
+
81
+ Layout/SpaceInsideBlockBraces:
82
+ Enabled: true
83
+
84
+ Layout/SpaceInsideParens:
85
+ Enabled: true
86
+
87
+ Layout/SpaceInsideRangeLiteral:
88
+ Enabled: true
89
+
90
+ Layout/SpaceInsideReferenceBrackets:
91
+ Enabled: true
92
+
93
+ Layout/TrailingEmptyLines:
94
+ Enabled: true
95
+
96
+ Layout/TrailingWhitespace:
97
+ Enabled: true
98
+
99
+ Lint/CircularArgumentReference:
100
+ Enabled: true
101
+
102
+ Lint/Debugger:
103
+ Enabled: true
104
+
105
+ Lint/DeprecatedClassMethods:
106
+ Enabled: true
107
+
108
+ Lint/DuplicateMethods:
109
+ Enabled: true
110
+
111
+ Lint/DuplicateHashKey:
112
+ Enabled: true
113
+
114
+ Lint/EachWithObjectArgument:
115
+ Enabled: true
116
+
117
+ Lint/ElseLayout:
118
+ Enabled: true
119
+
120
+ Lint/EmptyEnsure:
121
+ Enabled: true
122
+
123
+ Lint/EmptyInterpolation:
124
+ Enabled: true
125
+
126
+ Lint/EnsureReturn:
127
+ Enabled: true
128
+
129
+ Lint/FlipFlop:
130
+ Enabled: true
131
+
132
+ Lint/FloatOutOfRange:
133
+ Enabled: true
134
+
135
+ Lint/FormatParameterMismatch:
136
+ Enabled: true
137
+
138
+ Lint/LiteralAsCondition:
139
+ Enabled: true
140
+
141
+ Lint/LiteralInInterpolation:
142
+ Enabled: true
143
+
144
+ Lint/Loop:
145
+ Enabled: true
146
+
147
+ Lint/NextWithoutAccumulator:
148
+ Enabled: true
149
+
150
+ Lint/RandOne:
151
+ Enabled: true
152
+
153
+ Lint/RequireParentheses:
154
+ Enabled: true
155
+
156
+ Lint/RescueException:
157
+ Enabled: true
158
+
159
+ Lint/RedundantStringCoercion:
160
+ Enabled: true
161
+
162
+ Lint/UnderscorePrefixedVariableName:
163
+ Enabled: true
164
+
165
+ Lint/RedundantCopDisableDirective:
166
+ Enabled: true
167
+
168
+ Lint/RedundantSplatExpansion:
169
+ Enabled: true
170
+
171
+ Lint/UnreachableCode:
172
+ Enabled: true
173
+
174
+ Lint/BinaryOperatorWithIdenticalOperands:
175
+ Enabled: true
176
+
177
+ Lint/UselessSetterCall:
178
+ Enabled: true
179
+
180
+ Lint/Void:
181
+ Enabled: true
182
+
183
+ Metrics/AbcSize:
184
+ Enabled: false
185
+
186
+ Metrics/BlockLength:
187
+ Enabled: false
188
+
189
+ Metrics/BlockNesting:
190
+ Enabled: false
191
+
192
+ Metrics/ClassLength:
193
+ Enabled: false
194
+
195
+ Metrics/CyclomaticComplexity:
196
+ Enabled: false
197
+
198
+ Metrics/MethodLength:
199
+ Enabled: false
200
+
201
+ Metrics/ModuleLength:
202
+ Enabled: false
203
+
204
+ Metrics/ParameterLists:
205
+ Enabled: false
206
+
207
+ Metrics/PerceivedComplexity:
208
+ Enabled: false
209
+
210
+ Naming/AsciiIdentifiers:
211
+ Enabled: true
212
+
213
+ Naming/ClassAndModuleCamelCase:
214
+ Enabled: true
215
+
216
+ Naming/FileName:
217
+ Enabled: true
218
+
219
+ Naming/MethodName:
220
+ Enabled: true
221
+
222
+ Performance/CaseWhenSplat:
223
+ Enabled: false
224
+
225
+ Performance/Count:
226
+ Enabled: true
227
+
228
+ Performance/Detect:
229
+ Enabled: true
230
+
231
+ Performance/DoubleStartEndWith:
232
+ Enabled: true
233
+
234
+ Performance/EndWith:
235
+ Enabled: true
236
+
237
+ Performance/FlatMap:
238
+ Enabled: true
239
+
240
+ Performance/RangeInclude:
241
+ Enabled: false
242
+
243
+ Performance/RedundantMatch:
244
+ Enabled: false
245
+
246
+ Performance/RedundantMerge:
247
+ Enabled: true
248
+ MaxKeyValuePairs: 1
249
+
250
+ Performance/ReverseEach:
251
+ Enabled: true
252
+
253
+ Performance/Size:
254
+ Enabled: true
255
+
256
+ Performance/StartWith:
257
+ Enabled: true
258
+
259
+ Security/Eval:
260
+ Enabled: true
261
+
262
+ Style/ArrayJoin:
263
+ Enabled: true
264
+
265
+ Style/BeginBlock:
266
+ Enabled: true
267
+
268
+ Style/BlockComments:
269
+ Enabled: true
270
+
271
+ Style/CaseEquality:
272
+ Enabled: true
273
+
274
+ Style/CharacterLiteral:
275
+ Enabled: true
276
+
277
+ Style/ClassMethods:
278
+ Enabled: true
279
+
280
+ Style/Copyright:
281
+ Enabled: false
282
+
283
+ Style/DefWithParentheses:
284
+ Enabled: true
285
+
286
+ Style/EndBlock:
287
+ Enabled: true
288
+
289
+ Style/For:
290
+ Enabled: true
291
+
292
+ Style/FrozenStringLiteralComment:
293
+ Enabled: true
294
+
295
+ Style/HashSyntax:
296
+ Enabled: true
297
+ EnforcedStyle: ruby19_no_mixed_keys
298
+
299
+ Style/LambdaCall:
300
+ Enabled: true
301
+
302
+ Style/MethodCallWithoutArgsParentheses:
303
+ Enabled: true
304
+
305
+ Style/MethodDefParentheses:
306
+ Enabled: true
307
+
308
+ Style/MultilineIfThen:
309
+ Enabled: true
310
+
311
+ Style/NilComparison:
312
+ Enabled: true
313
+
314
+ Style/Not:
315
+ Enabled: true
316
+
317
+ Style/OneLineConditional:
318
+ Enabled: true
319
+
320
+ Style/RedundantSortBy:
321
+ Enabled: true
322
+
323
+ Style/Sample:
324
+ Enabled: true
325
+
326
+ Style/StabbyLambdaParentheses:
327
+ Enabled: true
328
+
329
+ Style/Strip:
330
+ Enabled: true
331
+
332
+ Style/StringLiterals:
333
+ Enabled: true
334
+ EnforcedStyle: double_quotes
data/config/rails.yml CHANGED
@@ -1,2 +1,127 @@
1
- # Inherit from rails_deprecated until 1.0
2
- inherit_from: rails_deprecated.yml
1
+ require:
2
+ - rubocop-rails
3
+
4
+ Rails/OutputSafety:
5
+ Enabled: true
6
+
7
+ Rails/PluralizationGrammar:
8
+ Enabled: true
9
+
10
+ Rails/RequestReferer:
11
+ Enabled: true
12
+ EnforcedStyle: referrer
13
+
14
+ Rails/ScopeArgs:
15
+ Enabled: true
16
+
17
+ Rails/UniqBeforePluck:
18
+ Enabled: true
19
+
20
+ GitHub/RailsApplicationRecord:
21
+ Enabled: true
22
+
23
+ GitHub/RailsControllerRenderActionSymbol:
24
+ Enabled: true
25
+ Include:
26
+ - 'app/controllers/**/*.rb'
27
+
28
+ GitHub/RailsControllerRenderLiteral:
29
+ Enabled: true
30
+ StyleGuide: https://github.com/github/rubocop-github/blob/master/guides/rails-render-literal.md
31
+ Include:
32
+ - 'app/controllers/**/*.rb'
33
+
34
+ GitHub/RailsControllerRenderPathsExist:
35
+ Enabled: true
36
+ ViewPath:
37
+ - 'app/views'
38
+ Include:
39
+ - 'app/controllers/**/*.rb'
40
+
41
+ GitHub/RailsControllerRenderShorthand:
42
+ Enabled: true
43
+ StyleGuide: https://github.com/github/rubocop-github/blob/master/guides/rails-controller-render-shorthand.md
44
+ Include:
45
+ - 'app/controllers/**/*.rb'
46
+
47
+ GitHub/RailsRenderInline:
48
+ Enabled: true
49
+ StyleGuide: https://github.com/github/rubocop-github/blob/master/guides/rails-controller-render-inline.md
50
+ Include:
51
+ - 'app/controllers/**/*.rb'
52
+ - 'app/helpers/**/*.rb'
53
+ - 'app/view_models/**/*.rb'
54
+ - 'app/views/**/*.erb'
55
+
56
+ GitHub/RailsRenderObjectCollection:
57
+ Enabled: false
58
+
59
+ GitHub/RailsViewRenderLiteral:
60
+ Enabled: true
61
+ StyleGuide: https://github.com/github/rubocop-github/blob/master/guides/rails-render-literal.md
62
+ Include:
63
+ - 'app/helpers/**/*.rb'
64
+ - 'app/view_models/**/*.rb'
65
+ - 'app/views/**/*.erb'
66
+
67
+ GitHub/RailsViewRenderPathsExist:
68
+ Enabled: true
69
+ ViewPath:
70
+ - 'app/views'
71
+ Include:
72
+ - 'app/helpers/**/*.rb'
73
+ - 'app/view_models/**/*.rb'
74
+ - 'app/views/**/*.erb'
75
+
76
+ GitHub/RailsViewRenderShorthand:
77
+ Enabled: true
78
+ Include:
79
+ - 'app/helpers/**/*.rb'
80
+ - 'app/view_models/**/*.rb'
81
+ - 'app/views/**/*.erb'
82
+
83
+ # Exclude Rails ERB files from incompatible cops
84
+
85
+ Layout/BlockAlignment:
86
+ Exclude:
87
+ - 'app/views/**/*.erb'
88
+
89
+ Style/For:
90
+ Exclude:
91
+ - 'app/views/**/*.erb'
92
+
93
+ Style/OneLineConditional:
94
+ Exclude:
95
+ - 'app/views/**/*.erb'
96
+
97
+ Style/Semicolon:
98
+ Exclude:
99
+ - 'app/views/**/*.erb'
100
+
101
+ Layout/SpaceInsideParens:
102
+ Exclude:
103
+ - 'app/views/**/*.erb'
104
+
105
+ Style/StringLiterals:
106
+ Exclude:
107
+ - 'app/views/**/*.erb'
108
+
109
+ Layout/TrailingEmptyLines:
110
+ Exclude:
111
+ - 'app/views/**/*.erb'
112
+
113
+ Layout/TrailingWhitespace:
114
+ Exclude:
115
+ - 'app/views/**/*.erb'
116
+
117
+ Layout/IndentationWidth:
118
+ Exclude:
119
+ - 'app/views/**/*.erb'
120
+
121
+ Layout/InitialIndentation:
122
+ Exclude:
123
+ - 'app/views/**/*.erb'
124
+
125
+ Lint/UselessAccessModifier:
126
+ ContextCreatingMethods:
127
+ - concerning
@@ -5,7 +5,7 @@ require "rubocop"
5
5
  module RuboCop
6
6
  module Cop
7
7
  module GitHub
8
- class InsecureHashAlgorithm < Cop
8
+ class InsecureHashAlgorithm < Base
9
9
  MSG = "This hash function is not allowed"
10
10
  UUID_V3_MSG = "uuid_v3 uses MD5, which is not allowed"
11
11
  UUID_V5_MSG = "uuid_v5 uses SHA1, which is not allowed"
@@ -5,7 +5,7 @@ require "rubocop"
5
5
  module RuboCop
6
6
  module Cop
7
7
  module GitHub
8
- class RailsApplicationRecord < Cop
8
+ class RailsApplicationRecord < Base
9
9
  MSG = "Models should subclass from ApplicationRecord"
10
10
 
11
11
  def_node_matcher :active_record_base_const?, <<-PATTERN
@@ -20,7 +20,7 @@ module RuboCop
20
20
  klass, superclass, _ = *node
21
21
 
22
22
  if active_record_base_const?(superclass) && !(application_record_const?(klass))
23
- add_offense(superclass, location: :expression)
23
+ add_offense(superclass)
24
24
  end
25
25
  end
26
26
  end
@@ -5,7 +5,9 @@ require "rubocop"
5
5
  module RuboCop
6
6
  module Cop
7
7
  module GitHub
8
- class RailsControllerRenderActionSymbol < Cop
8
+ class RailsControllerRenderActionSymbol < Base
9
+ extend AutoCorrector
10
+
9
11
  MSG = "Prefer `render` with string instead of symbol"
10
12
 
11
13
  def_node_matcher :render_sym?, <<-PATTERN
@@ -22,18 +24,22 @@ module RuboCop
22
24
 
23
25
  def on_send(node)
24
26
  if sym_node = render_sym?(node)
25
- add_offense(sym_node, location: :expression)
27
+ add_offense(sym_node) do |corrector|
28
+ register_offense(sym_node, node)
29
+ end
26
30
  elsif option_pairs = render_with_options?(node)
27
31
  option_pairs.each do |pair|
28
32
  if sym_node = action_key?(pair)
29
- add_offense(sym_node, location: :expression)
33
+ register_offense(sym_node, node)
30
34
  end
31
35
  end
32
36
  end
33
37
  end
34
38
 
35
- def autocorrect(node)
36
- lambda do |corrector|
39
+ private
40
+
41
+ def register_offense(sym_node, node)
42
+ add_offense(sym_node) do |corrector|
37
43
  corrector.replace(node.source_range, "\"#{node.children[0]}\"")
38
44
  end
39
45
  end
@@ -6,7 +6,7 @@ require "rubocop/cop/github/render_literal_helpers"
6
6
  module RuboCop
7
7
  module Cop
8
8
  module GitHub
9
- class RailsControllerRenderLiteral < Cop
9
+ class RailsControllerRenderLiteral < Base
10
10
  include RenderLiteralHelpers
11
11
 
12
12
  MSG = "render must be used with a string literal or an instance of a Class"
@@ -66,29 +66,29 @@ module RuboCop
66
66
 
67
67
  if template_node = option_pairs.map { |pair| template_key?(pair) }.compact.first
68
68
  if !literal?(template_node)
69
- add_offense(node, location: :expression)
69
+ add_offense(node)
70
70
  return
71
71
  end
72
72
  else
73
- add_offense(node, location: :expression)
73
+ add_offense(node)
74
74
  return
75
75
  end
76
76
 
77
77
  if layout_node = option_pairs.map { |pair| layout_key?(pair) }.compact.first
78
78
  if !literal?(layout_node)
79
- add_offense(node, location: :expression)
79
+ add_offense(node)
80
80
  return
81
81
  end
82
82
  end
83
83
  else
84
- add_offense(node, location: :expression)
84
+ add_offense(node)
85
85
  return
86
86
  end
87
87
 
88
88
  if render_literal?(node)
89
89
  option_hash = node.arguments[1]
90
90
  if option_hash && !option_hash.hash_type?
91
- add_offense(node, location: :expression)
91
+ add_offense(node)
92
92
  return
93
93
  end
94
94
  option_pairs = option_hash && option_hash.pairs
@@ -99,7 +99,7 @@ module RuboCop
99
99
  if option_pairs
100
100
  locals = option_pairs.map { |pair| locals_key?(pair) }.compact.first
101
101
  if locals && (!locals.hash_type? || !hash_with_literal_keys?(locals))
102
- add_offense(node, location: :expression)
102
+ add_offense(node)
103
103
  end
104
104
  end
105
105
  end
@@ -5,7 +5,7 @@ require "rubocop"
5
5
  module RuboCop
6
6
  module Cop
7
7
  module GitHub
8
- class RailsControllerRenderPathsExist < Cop
8
+ class RailsControllerRenderPathsExist < Base
9
9
  def_node_matcher :render?, <<-PATTERN
10
10
  (send nil? {:render :render_to_string} $...)
11
11
  PATTERN
@@ -28,7 +28,7 @@ module RuboCop
28
28
  if args = render_str?(node)
29
29
  node, path = args
30
30
  unless resolve_template(path.to_s)
31
- add_offense(node, location: :expression, message: "Template could not be found")
31
+ add_offense(node, message: "Template could not be found")
32
32
  end
33
33
  elsif pairs = render_options?(node)
34
34
  if pair = pairs.detect { |p| render_key?(p) }
@@ -37,11 +37,11 @@ module RuboCop
37
37
  case key
38
38
  when :action, :template
39
39
  unless resolve_template(path.to_s)
40
- add_offense(node, location: :expression, message: "Template could not be found")
40
+ add_offense(node, message: "Template could not be found")
41
41
  end
42
42
  when :partial
43
43
  unless resolve_partial(path.to_s)
44
- add_offense(node, location: :expression, message: "Partial template could not be found")
44
+ add_offense(node, message: "Partial template could not be found")
45
45
  end
46
46
  end
47
47
  end