pusher-rubocop 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 58b44dbb99064914aee64d2b60c345e424063855
4
+ data.tar.gz: b07567d451beb38602a312b64de470b6f5f47851
5
+ SHA512:
6
+ metadata.gz: aa9023d8e7994d4f83eeb70550424339c4bd7728609bb57955bd2c68124ff0cb069b51143211d6e5413fdb1b076227874cba32137621092f5cd9d951584a1806
7
+ data.tar.gz: 0304e12222b3059ef7295c02c5cc9e4249578ef3c3ebee4e359cbfd706cc8de5b280c6bb91049a3dd16971da83b4b5603d9e78da2f98b0cab602792ed5ed4950
@@ -0,0 +1 @@
1
+ Gemfile.lock
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.0
4
+ script: bin/pusher-rubocop
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "https://rubygems.org"
2
+ gemspec
@@ -0,0 +1,5 @@
1
+
2
+ 0.1.0 / 2015-02-22
3
+ ==================
4
+
5
+ * Initial release
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2015 Pusher
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,22 @@
1
+ Pusher RuboCop - Enforcing our internal ruby styleguide
2
+ =======================================================
3
+
4
+ Use with discretion. This is a hack on top of the wonderful
5
+ [rubocop](https://rubygems.org/gems/rubocop) gem to
6
+ enforce our ruby style internally.
7
+
8
+ Usage
9
+ -----
10
+
11
+ The `pusher-rubocop` executable should behave exactly as the `rubocop`
12
+ executable but with our own styleguide applied.
13
+
14
+ Upgrade rubocop
15
+ ---------------
16
+
17
+ pusher-rubocop is pinning a specific rubocop gem version to avoid ambiguity.
18
+
19
+ To update the rubocop version:
20
+ * change the version specified in the `pusher-rubocop.gemspec` file
21
+ * copy the `config/{default,disabled,enabled}.yml` from the rubocop project
22
+
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ $LOAD_PATH.unshift(File.dirname(File.realpath(__FILE__)) + "/../lib")
5
+
6
+ require "pusher_rubocop"
7
+ require "benchmark"
8
+
9
+ cli = PusherRubocop::CLI.new
10
+ result = 0
11
+
12
+ time = Benchmark.realtime do
13
+ result = cli.run
14
+ end
15
+
16
+ puts "Finished in #{time} seconds" if cli.options[:debug]
17
+ exit result
@@ -0,0 +1,671 @@
1
+ # This is the default configuration file. Enabling and disabling is configured
2
+ # in separate files. This file adds all other parameters apart from Enabled.
3
+
4
+ inherit_from:
5
+ - enabled.yml
6
+ - disabled.yml
7
+
8
+ # Common configuration.
9
+ AllCops:
10
+ # Include gemspec and Rakefile
11
+ Include:
12
+ - '**/*.gemspec'
13
+ - '**/*.podspec'
14
+ - '**/*.jbuilder'
15
+ - '**/*.rake'
16
+ - '**/*.opal'
17
+ - '**/Gemfile'
18
+ - '**/Rakefile'
19
+ - '**/Capfile'
20
+ - '**/Guardfile'
21
+ - '**/Podfile'
22
+ - '**/Thorfile'
23
+ - '**/Vagrantfile'
24
+ - '**/Berksfile'
25
+ - '**/Cheffile'
26
+ - '**/Vagabondfile'
27
+ Exclude:
28
+ - 'vendor/**/*'
29
+ # By default, the rails cops are not run. Override in project or home
30
+ # directory .rubocop.yml files, or by giving the -R/--rails option.
31
+ RunRailsCops: false
32
+ # Cop names are not displayed in offense messages by default. Change behavior
33
+ # by overriding DisplayCopNames, or by giving the -D/--display-cop-names
34
+ # option.
35
+ DisplayCopNames: false
36
+ # Additional cops that do not reference a style guide rule may be enabled by
37
+ # default. Change behavior by overriding StyleGuideCopsOnly, or by giving
38
+ # the --only-guide-cops option.
39
+ StyleGuideCopsOnly: false
40
+
41
+ # Indent private/protected/public as deep as method definitions
42
+ Style/AccessModifierIndentation:
43
+ EnforcedStyle: indent
44
+ SupportedStyles:
45
+ - outdent
46
+ - indent
47
+
48
+ # Align the elements of a hash literal if they span more than one line.
49
+ Style/AlignHash:
50
+ # Alignment of entries using hash rocket as separator. Valid values are:
51
+ #
52
+ # key - left alignment of keys
53
+ # 'a' => 2
54
+ # 'bb' => 3
55
+ # separator - alignment of hash rockets, keys are right aligned
56
+ # 'a' => 2
57
+ # 'bb' => 3
58
+ # table - left alignment of keys, hash rockets, and values
59
+ # 'a' => 2
60
+ # 'bb' => 3
61
+ EnforcedHashRocketStyle: key
62
+ # Alignment of entries using colon as separator. Valid values are:
63
+ #
64
+ # key - left alignment of keys
65
+ # a: 0
66
+ # bb: 1
67
+ # separator - alignment of colons, keys are right aligned
68
+ # a: 0
69
+ # bb: 1
70
+ # table - left alignment of keys and values
71
+ # a: 0
72
+ # bb: 1
73
+ EnforcedColonStyle: key
74
+ # Select whether hashes that are the last argument in a method call should be
75
+ # inspected? Valid values are:
76
+ #
77
+ # always_inspect - Inspect both implicit and explicit hashes.
78
+ # Registers an offense for:
79
+ # function(a: 1,
80
+ # b: 2)
81
+ # Registers an offense for:
82
+ # function({a: 1,
83
+ # b: 2})
84
+ # always_ignore - Ignore both implicit and explicit hashes.
85
+ # Accepts:
86
+ # function(a: 1,
87
+ # b: 2)
88
+ # Accepts:
89
+ # function({a: 1,
90
+ # b: 2})
91
+ # ignore_implicit - Ignore only implicit hashes.
92
+ # Accepts:
93
+ # function(a: 1,
94
+ # b: 2)
95
+ # Registers an offense for:
96
+ # function({a: 1,
97
+ # b: 2})
98
+ # ignore_explicit - Ignore only explicit hashes.
99
+ # Accepts:
100
+ # function({a: 1,
101
+ # b: 2})
102
+ # Registers an offense for:
103
+ # function(a: 1,
104
+ # b: 2)
105
+ EnforcedLastArgumentHashStyle: always_inspect
106
+ SupportedLastArgumentHashStyles:
107
+ - always_inspect
108
+ - always_ignore
109
+ - ignore_implicit
110
+ - ignore_explicit
111
+
112
+ Style/AlignParameters:
113
+ # Alignment of parameters in multi-line method calls.
114
+ #
115
+ # The `with_first_parameter` style aligns the following lines along the same
116
+ # column as the first parameter.
117
+ #
118
+ # method_call(a,
119
+ # b)
120
+ #
121
+ # The `with_fixed_indentation` style aligns the following lines with one
122
+ # level of indentation relative to the start of the line with the method call.
123
+ #
124
+ # method_call(a,
125
+ # b)
126
+ EnforcedStyle: with_first_parameter
127
+ SupportedStyles:
128
+ - with_first_parameter
129
+ - with_fixed_indentation
130
+
131
+ Style/AndOr:
132
+ # Whether `and` and `or` are banned only in conditionals (conditionals)
133
+ # or completely (always).
134
+ EnforcedStyle: always
135
+ SupportedStyles:
136
+ - always
137
+ - conditionals
138
+
139
+
140
+ # Checks if usage of %() or %Q() matches configuration.
141
+ Style/BarePercentLiterals:
142
+ EnforcedStyle: bare_percent
143
+ SupportedStyles:
144
+ - percent_q
145
+ - bare_percent
146
+
147
+ Style/BracesAroundHashParameters:
148
+ EnforcedStyle: no_braces
149
+ SupportedStyles:
150
+ # The `braces` style enforces braces around all method parameters that are
151
+ # hashes.
152
+ - braces
153
+ # The `no_braces` style checks that the last parameter doesn't have braces
154
+ # around it.
155
+ - no_braces
156
+ # The `context_dependent` style checks that the last parameter doesn't have
157
+ # braces around it, but requires braces if the second to last parameter is
158
+ # also a hash literal.
159
+ - context_dependent
160
+
161
+ # Indentation of `when`.
162
+ Style/CaseIndentation:
163
+ IndentWhenRelativeTo: case
164
+ SupportedStyles:
165
+ - case
166
+ - end
167
+ IndentOneStep: false
168
+
169
+ Style/ClassAndModuleChildren:
170
+ # Checks the style of children definitions at classes and modules.
171
+ #
172
+ # Basically there are two different styles:
173
+ #
174
+ # `nested` - have each child on a separate line
175
+ # class Foo
176
+ # class Bar
177
+ # end
178
+ # end
179
+ #
180
+ # `compact` - combine definitions as much as possible
181
+ # class Foo::Bar
182
+ # end
183
+ #
184
+ # The compact style is only forced, for classes / modules with one child.
185
+ EnforcedStyle: nested
186
+ SupportedStyles:
187
+ - nested
188
+ - compact
189
+
190
+ Style/ClassCheck:
191
+ EnforcedStyle: is_a?
192
+ SupportedStyles:
193
+ - is_a?
194
+ - kind_of?
195
+
196
+ # Align with the style guide.
197
+ Style/CollectionMethods:
198
+ # Mapping from undesired method to desired_method
199
+ # e.g. to use `detect` over `find`:
200
+ #
201
+ # CollectionMethods:
202
+ # PreferredMethods:
203
+ # find: detect
204
+ PreferredMethods:
205
+ collect: 'map'
206
+ collect!: 'map!'
207
+ inject: 'reduce'
208
+ detect: 'find'
209
+ find_all: 'select'
210
+
211
+ # Checks formatting of special comments
212
+ Style/CommentAnnotation:
213
+ Keywords:
214
+ - TODO
215
+ - FIXME
216
+ - OPTIMIZE
217
+ - HACK
218
+ - REVIEW
219
+
220
+ # Multi-line method chaining should be done with leading dots.
221
+ Style/DotPosition:
222
+ EnforcedStyle: leading
223
+ SupportedStyles:
224
+ - leading
225
+ - trailing
226
+
227
+ # Use empty lines between defs.
228
+ Style/EmptyLineBetweenDefs:
229
+ # If true, this parameter means that single line method definitions don't
230
+ # need an empty line between them.
231
+ AllowAdjacentOneLineDefs: false
232
+
233
+ Style/EmptyLinesAroundBlockBody:
234
+ EnforcedStyle: no_empty_lines
235
+ SupportedStyles:
236
+ - empty_lines
237
+ - no_empty_lines
238
+
239
+ Style/EmptyLinesAroundClassBody:
240
+ EnforcedStyle: no_empty_lines
241
+ SupportedStyles:
242
+ - empty_lines
243
+ - no_empty_lines
244
+
245
+ Style/EmptyLinesAroundModuleBody:
246
+ EnforcedStyle: no_empty_lines
247
+ SupportedStyles:
248
+ - empty_lines
249
+ - no_empty_lines
250
+
251
+ # Checks whether the source file has a utf-8 encoding comment or not
252
+ Style/Encoding:
253
+ EnforcedStyle: always
254
+ SupportedStyles:
255
+ - when_needed
256
+ - always
257
+
258
+ Style/FileName:
259
+ # File names listed in AllCops:Include are excluded by default. Add extra
260
+ # excludes here.
261
+ Exclude: []
262
+
263
+ Style/FirstParameterIndentation:
264
+ EnforcedStyle: special_for_inner_method_call_in_parentheses
265
+ SupportedStyles:
266
+ # The first parameter should always be indented one step more than the
267
+ # preceding line.
268
+ - consistent
269
+ # The first parameter should normally be indented one step more than the
270
+ # preceding line, but if it's a parameter for a method call that is itself
271
+ # a parameter in a method call, then the inner parameter should be indented
272
+ # relative to the inner method.
273
+ - special_for_inner_method_call
274
+ # Same as special_for_inner_method_call except that the special rule only
275
+ # applies if the outer method call encloses its arguments in parentheses.
276
+ - special_for_inner_method_call_in_parentheses
277
+
278
+ # Checks use of for or each in multiline loops.
279
+ Style/For:
280
+ EnforcedStyle: each
281
+ SupportedStyles:
282
+ - for
283
+ - each
284
+
285
+ # Enforce the method used for string formatting.
286
+ Style/FormatString:
287
+ EnforcedStyle: format
288
+ SupportedStyles:
289
+ - format
290
+ - sprintf
291
+ - percent
292
+
293
+ # Built-in global variables are allowed by default.
294
+ Style/GlobalVars:
295
+ AllowedVariables: []
296
+
297
+ # `MinBodyLength` defines the number of lines of the a body of an if / unless
298
+ # needs to have to trigger this cop
299
+ Style/GuardClause:
300
+ MinBodyLength: 1
301
+
302
+ Style/HashSyntax:
303
+ EnforcedStyle: ruby19
304
+ SupportedStyles:
305
+ - ruby19
306
+ - ruby19_no_mixed_keys
307
+ - hash_rockets
308
+
309
+ Style/IfUnlessModifier:
310
+ MaxLineLength: 80
311
+
312
+ Style/IndentationWidth:
313
+ # Number of spaces for each indentation level.
314
+ Width: 2
315
+
316
+ # Checks the indentation of the first key in a hash literal.
317
+ Style/IndentHash:
318
+ # The value `special_inside_parentheses` means that hash literals with braces
319
+ # that have their opening brace on the same line as a surrounding opening
320
+ # round parenthesis, shall have their first key indented relative to the
321
+ # first position inside the parenthesis.
322
+ # The value `consistent` means that the indentation of the first key shall
323
+ # always be relative to the first position of the line where the opening
324
+ # brace is.
325
+ EnforcedStyle: special_inside_parentheses
326
+ SupportedStyles:
327
+ - special_inside_parentheses
328
+ - consistent
329
+
330
+ Style/LambdaCall:
331
+ EnforcedStyle: call
332
+ SupportedStyles:
333
+ - call
334
+ - braces
335
+
336
+ Style/Next:
337
+ # With `always` all conditions at the end of an iteration needs to be
338
+ # replaced by next - with `skip_modifier_ifs` the modifier if like this one
339
+ # are ignored: [1, 2].each { |a| return 'yes' if a == 1 }
340
+ EnforcedStyle: skip_modifier_ifs
341
+ # `MinBodyLength` defines the number of lines of the a body of an if / unless
342
+ # needs to have to trigger this cop
343
+ MinBodyLength: 3
344
+ SupportedStyles:
345
+ - skip_modifier_ifs
346
+ - always
347
+
348
+ Style/NonNilCheck:
349
+ # With `IncludeSemanticChanges` set to `true`, this cop reports offenses for
350
+ # `!x.nil?` and autocorrects that and `x != nil` to solely `x`, which is
351
+ # **usually** OK, but might change behavior.
352
+ #
353
+ # With `IncludeSemanticChanges` set to `false`, this cop does not report
354
+ # offenses for `!x.nil?` and does no changes that might change behavior.
355
+ IncludeSemanticChanges: false
356
+
357
+ Style/MethodDefParentheses:
358
+ EnforcedStyle: require_parentheses
359
+ SupportedStyles:
360
+ - require_parentheses
361
+ - require_no_parentheses
362
+
363
+ Style/MethodName:
364
+ EnforcedStyle: snake_case
365
+ SupportedStyles:
366
+ - snake_case
367
+ - camelCase
368
+
369
+ Style/MultilineOperationIndentation:
370
+ EnforcedStyle: aligned
371
+ SupportedStyles:
372
+ - aligned
373
+ - indented
374
+
375
+ Style/NumericLiterals:
376
+ MinDigits: 5
377
+
378
+ # Allow safe assignment in conditions.
379
+ Style/ParenthesesAroundCondition:
380
+ AllowSafeAssignment: true
381
+
382
+ Style/PercentLiteralDelimiters:
383
+ PreferredDelimiters:
384
+ '%': ()
385
+ '%i': ()
386
+ '%q': ()
387
+ '%Q': ()
388
+ '%r': '{}'
389
+ '%s': ()
390
+ '%w': ()
391
+ '%W': ()
392
+ '%x': ()
393
+
394
+ Style/PercentQLiterals:
395
+ EnforcedStyle: lower_case_q
396
+ SupportedStyles:
397
+ - lower_case_q # Use %q when possible, %Q when necessary
398
+ - upper_case_q # Always use %Q
399
+
400
+ Style/PredicateName:
401
+ # Predicate name prefices.
402
+ NamePrefix:
403
+ - is_
404
+ - has_
405
+ - have_
406
+ # Predicate name prefices that should be removed.
407
+ NamePrefixBlacklist:
408
+ - is_
409
+ - has_
410
+ - have_
411
+
412
+ Style/RaiseArgs:
413
+ EnforcedStyle: exploded
414
+ SupportedStyles:
415
+ - compact # raise Exception.new(msg)
416
+ - exploded # raise Exception, msg
417
+
418
+ Style/RedundantReturn:
419
+ # When true allows code like `return x, y`.
420
+ AllowMultipleReturnValues: false
421
+
422
+ Style/RegexpLiteral:
423
+ # The maximum number of (escaped) slashes that a slash-delimited regexp is
424
+ # allowed to have. If there are more slashes, a %r regexp shall be used.
425
+ MaxSlashes: 1
426
+
427
+ Style/Semicolon:
428
+ # Allow ; to separate several expressions on the same line.
429
+ AllowAsExpressionSeparator: false
430
+
431
+ Style/SignalException:
432
+ EnforcedStyle: semantic
433
+ SupportedStyles:
434
+ - only_raise
435
+ - only_fail
436
+ - semantic
437
+
438
+ Style/SingleLineBlockParams:
439
+ Methods:
440
+ - reduce:
441
+ - a
442
+ - e
443
+ - inject:
444
+ - a
445
+ - e
446
+
447
+ Style/SingleLineMethods:
448
+ AllowIfMethodIsEmpty: true
449
+
450
+ Style/StringLiterals:
451
+ EnforcedStyle: single_quotes
452
+ SupportedStyles:
453
+ - single_quotes
454
+ - double_quotes
455
+
456
+ Style/StringLiteralsInInterpolation:
457
+ EnforcedStyle: single_quotes
458
+ SupportedStyles:
459
+ - single_quotes
460
+ - double_quotes
461
+
462
+ Style/SpaceAroundBlockParameters:
463
+ EnforcedStyleInsidePipes: no_space
464
+ SupportedStyles:
465
+ - space
466
+ - no_space
467
+
468
+ Style/SpaceAroundEqualsInParameterDefault:
469
+ EnforcedStyle: space
470
+ SupportedStyles:
471
+ - space
472
+ - no_space
473
+
474
+ Style/SpaceAroundOperators:
475
+ MultiSpaceAllowedForOperators:
476
+ - '='
477
+ - '=>'
478
+
479
+ Style/SpaceBeforeBlockBraces:
480
+ EnforcedStyle: space
481
+ SupportedStyles:
482
+ - space
483
+ - no_space
484
+
485
+ Style/SpaceInsideBlockBraces:
486
+ EnforcedStyle: space
487
+ SupportedStyles:
488
+ - space
489
+ - no_space
490
+ # Valid values are: space, no_space
491
+ EnforcedStyleForEmptyBraces: no_space
492
+ # Space between { and |. Overrides EnforcedStyle if there is a conflict.
493
+ SpaceBeforeBlockParameters: true
494
+
495
+ Style/SpaceInsideHashLiteralBraces:
496
+ EnforcedStyle: space
497
+ EnforcedStyleForEmptyBraces: no_space
498
+ SupportedStyles:
499
+ - space
500
+ - no_space
501
+
502
+ Style/SymbolProc:
503
+ # A list of method names to be ignored by the check.
504
+ # The names should be fairly unique, otherwise you'll end up ignoring lots of code.
505
+ IgnoredMethods:
506
+ - respond_to
507
+
508
+ Style/TrailingBlankLines:
509
+ EnforcedStyle: final_newline
510
+ SupportedStyles:
511
+ - final_newline
512
+ - final_blank_line
513
+
514
+ Style/TrailingComma:
515
+ # If EnforcedStyleForMultiline is comma, the cop allows a comma after the
516
+ # last item of a list, but only for lists where each item is on its own line.
517
+ EnforcedStyleForMultiline: no_comma
518
+ SupportedStyles:
519
+ - comma
520
+ - no_comma
521
+
522
+ # TrivialAccessors doesn't require exact name matches and doesn't allow
523
+ # predicated methods by default.
524
+ Style/TrivialAccessors:
525
+ ExactNameMatch: false
526
+ AllowPredicates: false
527
+ # Allows trivial writers that don't end in an equal sign. e.g.
528
+ #
529
+ # def on_exception(action)
530
+ # @on_exception=action
531
+ # end
532
+ # on_exception :restart
533
+ #
534
+ # Commonly used in DSLs
535
+ AllowDSLWriters: false
536
+ IgnoreClassMethods: false
537
+ Whitelist:
538
+ - to_ary
539
+ - to_a
540
+ - to_c
541
+ - to_enum
542
+ - to_h
543
+ - to_hash
544
+ - to_i
545
+ - to_int
546
+ - to_io
547
+ - to_open
548
+ - to_path
549
+ - to_proc
550
+ - to_r
551
+ - to_regexp
552
+ - to_str
553
+ - to_s
554
+ - to_sym
555
+
556
+ Style/VariableName:
557
+ EnforcedStyle: snake_case
558
+ SupportedStyles:
559
+ - snake_case
560
+ - camelCase
561
+
562
+ Style/WhileUntilModifier:
563
+ MaxLineLength: 80
564
+
565
+ Style/WordArray:
566
+ MinSize: 0
567
+ # The regular expression WordRegex decides what is considered a word.
568
+ WordRegex: !ruby/regexp '/\A[\p{Word}]+\z/'
569
+
570
+ ##################### Metrics ##################################
571
+
572
+ Metrics/AbcSize:
573
+ # The ABC size is a calculated magnitude, so this number can be a Fixnum or
574
+ # a Float.
575
+ Max: 15
576
+
577
+ Metrics/BlockNesting:
578
+ Max: 3
579
+
580
+ Metrics/ClassLength:
581
+ CountComments: false # count full line comments?
582
+ Max: 100
583
+
584
+ # Avoid complex methods.
585
+ Metrics/CyclomaticComplexity:
586
+ Max: 6
587
+
588
+ Metrics/LineLength:
589
+ Max: 80
590
+ # To make it possible to copy or click on URIs in the code, we allow lines
591
+ # contaning a URI to be longer than Max.
592
+ AllowURI: true
593
+ URISchemes:
594
+ - http
595
+ - https
596
+
597
+ Metrics/MethodLength:
598
+ CountComments: false # count full line comments?
599
+ Max: 10
600
+
601
+ Metrics/ParameterLists:
602
+ Max: 5
603
+ CountKeywordArgs: true
604
+
605
+ Metrics/PerceivedComplexity:
606
+ Max: 7
607
+
608
+ ##################### Lint ##################################
609
+
610
+ # Allow safe assignment in conditions.
611
+ Lint/AssignmentInCondition:
612
+ AllowSafeAssignment: true
613
+
614
+ # Align ends correctly.
615
+ Lint/EndAlignment:
616
+ # The value `keyword` means that `end` should be aligned with the matching
617
+ # keyword (if, while, etc.).
618
+ # The value `variable` means that in assignments, `end` should be aligned
619
+ # with the start of the variable on the left hand side of `=`. In all other
620
+ # situations, `end` should still be aligned with the keyword.
621
+ AlignWith: keyword
622
+ SupportedStyles:
623
+ - keyword
624
+ - variable
625
+
626
+ Lint/DefEndAlignment:
627
+ # The value `def` means that `end` should be aligned with the def keyword.
628
+ # The value `start_of_line` means that `end` should be aligned with method
629
+ # calls like `private`, `public`, etc, if present in front of the `def`
630
+ # keyword on the same line.
631
+ AlignWith: start_of_line
632
+ SupportedStyles:
633
+ - start_of_line
634
+ - def
635
+
636
+ ##################### Rails ##################################
637
+
638
+ Rails/ActionFilter:
639
+ EnforcedStyle: action
640
+ SupportedStyles:
641
+ - action
642
+ - filter
643
+ Include:
644
+ - app/controllers/**/*.rb
645
+
646
+ Rails/DefaultScope:
647
+ Include:
648
+ - app/models/**/*.rb
649
+
650
+ Rails/HasAndBelongsToMany:
651
+ Include:
652
+ - app/models/**/*.rb
653
+
654
+ Rails/Output:
655
+ Include:
656
+ - app/**/*.rb
657
+ - config/**/*.rb
658
+ - db/**/*.rb
659
+ - lib/**/*.rb
660
+
661
+ Rails/ReadWriteAttribute:
662
+ Include:
663
+ - app/models/**/*.rb
664
+
665
+ Rails/ScopeArgs:
666
+ Include:
667
+ - app/models/**/*.rb
668
+
669
+ Rails/Validation:
670
+ Include:
671
+ - app/models/**/*.rb