ffi-geos 2.2.0 → 2.4.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.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +49 -0
- data/.rubocop-minitest.yml +240 -0
- data/.rubocop.yml +497 -111
- data/.rubocop_todo.yml +100 -0
- data/Gemfile +3 -6
- data/MIT-LICENSE +1 -1
- data/README.rdoc +2 -0
- data/ffi-geos.gemspec +5 -0
- data/lib/ffi-geos/buffer_params.rb +1 -1
- data/lib/ffi-geos/coordinate_sequence.rb +32 -32
- data/lib/ffi-geos/geojson_reader.rb +35 -0
- data/lib/ffi-geos/geojson_writer.rb +49 -0
- data/lib/ffi-geos/geometry.rb +11 -5
- data/lib/ffi-geos/geometry_collection.rb +5 -5
- data/lib/ffi-geos/line_string.rb +11 -11
- data/lib/ffi-geos/multi_line_string.rb +1 -1
- data/lib/ffi-geos/point.rb +4 -4
- data/lib/ffi-geos/polygon.rb +5 -5
- data/lib/ffi-geos/prepared_geometry.rb +21 -1
- data/lib/ffi-geos/strtree.rb +1 -1
- data/lib/ffi-geos/version.rb +1 -1
- data/lib/ffi-geos/wkb_reader.rb +1 -1
- data/lib/ffi-geos/wkb_writer.rb +14 -2
- data/lib/ffi-geos/wkt_reader.rb +1 -1
- data/lib/ffi-geos/wkt_writer.rb +2 -2
- data/lib/ffi-geos.rb +92 -4
- data/sonar-project.properties +4 -4
- data/test/coordinate_sequence_tests.rb +6 -6
- data/test/geojson_reader_tests.rb +170 -0
- data/test/geojson_writer_tests.rb +103 -0
- data/test/geometry_collection_tests.rb +4 -4
- data/test/geometry_tests.rb +75 -32
- data/test/line_string_tests.rb +13 -5
- data/test/point_tests.rb +3 -3
- data/test/polygon_tests.rb +3 -3
- data/test/prepared_geometry_tests.rb +30 -0
- data/test/strtree_tests.rb +8 -8
- data/test/test_helper.rb +43 -12
- data/test/wkb_writer_tests.rb +20 -0
- metadata +15 -6
- data/.travis.yml +0 -32
data/.rubocop.yml
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
|
2
|
+
inherit_from:
|
3
|
+
- .rubocop-minitest.yml
|
4
|
+
- .rubocop_todo.yml
|
5
|
+
|
6
|
+
inherit_mode:
|
7
|
+
merge:
|
8
|
+
- Exclude
|
9
|
+
|
10
|
+
require:
|
11
|
+
- rubocop-minitest
|
12
|
+
|
1
13
|
# Common configuration.
|
2
14
|
|
3
15
|
AllCops:
|
@@ -80,6 +92,8 @@ AllCops:
|
|
80
92
|
# When specifying style guide URLs, any paths and/or fragments will be
|
81
93
|
# evaluated relative to the base URL.
|
82
94
|
StyleGuideBaseURL: https://rubystyle.guide
|
95
|
+
# Documentation URLs will be constructed using the base URL.
|
96
|
+
DocumentationBaseURL: https://docs.rubocop.org/rubocop
|
83
97
|
# Extra details are not displayed in offense messages by default. Change
|
84
98
|
# behavior by overriding ExtraDetails, or by giving the
|
85
99
|
# `-E/--extra-details` option.
|
@@ -132,7 +146,7 @@ AllCops:
|
|
132
146
|
# What MRI version of the Ruby interpreter is the inspected code intended to
|
133
147
|
# run on? (If there is more than one, set this to the lowest version.)
|
134
148
|
# If a value is specified for TargetRubyVersion then it is used. Acceptable
|
135
|
-
# values are
|
149
|
+
# values are specified as a float (i.e. 3.0); the teeny version of Ruby
|
136
150
|
# should not be included. If the project specifies a Ruby version in the
|
137
151
|
# .tool-versions or .ruby-version files, Gemfile or gems.rb file, RuboCop will
|
138
152
|
# try to determine the desired version of Ruby by inspecting the
|
@@ -140,18 +154,13 @@ AllCops:
|
|
140
154
|
# or gems.locked file. (Although the Ruby version is specified in the Gemfile
|
141
155
|
# or gems.rb file, RuboCop reads the final value from the lock file.) If the
|
142
156
|
# Ruby version is still unresolved, RuboCop will use the oldest officially
|
143
|
-
# supported Ruby version (currently Ruby 2.
|
157
|
+
# supported Ruby version (currently Ruby 2.5).
|
144
158
|
TargetRubyVersion: ~
|
145
159
|
# Determines if a notification for extension libraries should be shown when
|
146
160
|
# rubocop is run. Keys are the name of the extension, and values are an array
|
147
161
|
# of gems in the Gemfile that the extension is suggested for, if not already
|
148
162
|
# included.
|
149
|
-
SuggestExtensions:
|
150
|
-
rubocop-rails: [rails]
|
151
|
-
rubocop-rspec: [rspec, rspec-rails]
|
152
|
-
rubocop-minitest: [minitest]
|
153
|
-
rubocop-sequel: [sequel]
|
154
|
-
rubocop-rake: [rake]
|
163
|
+
SuggestExtensions: false
|
155
164
|
|
156
165
|
#################### Bundler ###############################
|
157
166
|
|
@@ -176,6 +185,34 @@ Bundler/GemComment:
|
|
176
185
|
IgnoredGems: []
|
177
186
|
OnlyFor: []
|
178
187
|
|
188
|
+
Bundler/GemFilename:
|
189
|
+
Description: 'Enforces the filename for managing gems.'
|
190
|
+
Enabled: true
|
191
|
+
VersionAdded: '1.20'
|
192
|
+
EnforcedStyle: 'Gemfile'
|
193
|
+
SupportedStyles:
|
194
|
+
- 'Gemfile'
|
195
|
+
- 'gems.rb'
|
196
|
+
Include:
|
197
|
+
- '**/Gemfile'
|
198
|
+
- '**/gems.rb'
|
199
|
+
- '**/Gemfile.lock'
|
200
|
+
- '**/gems.locked'
|
201
|
+
|
202
|
+
Bundler/GemVersion:
|
203
|
+
Description: 'Requires or forbids specifying gem versions.'
|
204
|
+
Enabled: false
|
205
|
+
VersionAdded: '1.14'
|
206
|
+
EnforcedStyle: 'required'
|
207
|
+
SupportedStyles:
|
208
|
+
- 'required'
|
209
|
+
- 'forbidden'
|
210
|
+
Include:
|
211
|
+
- '**/*.gemfile'
|
212
|
+
- '**/Gemfile'
|
213
|
+
- '**/gems.rb'
|
214
|
+
AllowedGems: []
|
215
|
+
|
179
216
|
Bundler/InsecureProtocolSource:
|
180
217
|
Description: >-
|
181
218
|
The source `:gemcutter`, `:rubygems` and `:rubyforge` are deprecated
|
@@ -183,6 +220,7 @@ Bundler/InsecureProtocolSource:
|
|
183
220
|
'https://rubygems.org' if possible, or 'http://rubygems.org' if not.
|
184
221
|
Enabled: true
|
185
222
|
VersionAdded: '0.50'
|
223
|
+
AllowHttpProtocol: true
|
186
224
|
Include:
|
187
225
|
- '**/*.gemfile'
|
188
226
|
- '**/Gemfile'
|
@@ -212,6 +250,25 @@ Gemspec/DateAssignment:
|
|
212
250
|
Include:
|
213
251
|
- '**/*.gemspec'
|
214
252
|
|
253
|
+
Gemspec/DependencyVersion:
|
254
|
+
Description: 'Requires or forbids specifying gem dependency versions.'
|
255
|
+
Enabled: false
|
256
|
+
VersionAdded: '1.29'
|
257
|
+
EnforcedStyle: 'required'
|
258
|
+
SupportedStyles:
|
259
|
+
- 'required'
|
260
|
+
- 'forbidden'
|
261
|
+
Include:
|
262
|
+
- '**/*.gemspec'
|
263
|
+
AllowedGems: []
|
264
|
+
|
265
|
+
Gemspec/DeprecatedAttributeAssignment:
|
266
|
+
Description: Checks that deprecated attribute assignments are not set in a gemspec file.
|
267
|
+
Enabled: false
|
268
|
+
VersionAdded: '1.30'
|
269
|
+
Include:
|
270
|
+
- '**/*.gemspec'
|
271
|
+
|
215
272
|
Gemspec/DuplicatedAssignment:
|
216
273
|
Description: 'An attribute assignment method calls should be listed only once in a gemspec.'
|
217
274
|
Enabled: true
|
@@ -231,11 +288,20 @@ Gemspec/OrderedDependencies:
|
|
231
288
|
Include:
|
232
289
|
- '**/*.gemspec'
|
233
290
|
|
291
|
+
Gemspec/RequireMFA:
|
292
|
+
Description: 'Checks that the gemspec has metadata to require Multi-Factor Authentication from RubyGems.'
|
293
|
+
Enabled: true
|
294
|
+
VersionAdded: '1.23'
|
295
|
+
Reference:
|
296
|
+
- https://guides.rubygems.org/mfa-requirement-opt-in/
|
297
|
+
Include:
|
298
|
+
- '**/*.gemspec'
|
299
|
+
|
234
300
|
Gemspec/RequiredRubyVersion:
|
235
301
|
Description: 'Checks that `required_ruby_version` of gemspec is specified and equal to `TargetRubyVersion` of .rubocop.yml.'
|
236
302
|
Enabled: true
|
237
303
|
VersionAdded: '0.52'
|
238
|
-
VersionChanged: '
|
304
|
+
VersionChanged: '1.22'
|
239
305
|
Include:
|
240
306
|
- '**/*.gemspec'
|
241
307
|
|
@@ -258,8 +324,8 @@ Layout/AccessModifierIndentation:
|
|
258
324
|
SupportedStyles:
|
259
325
|
- outdent
|
260
326
|
- indent
|
261
|
-
# By default
|
262
|
-
#
|
327
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
328
|
+
# but it can be overridden by setting this parameter.
|
263
329
|
IndentationWidth: ~
|
264
330
|
|
265
331
|
Layout/ArgumentAlignment:
|
@@ -287,8 +353,8 @@ Layout/ArgumentAlignment:
|
|
287
353
|
SupportedStyles:
|
288
354
|
- with_first_argument
|
289
355
|
- with_fixed_indentation
|
290
|
-
# By default
|
291
|
-
#
|
356
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
357
|
+
# but it can be overridden by setting this parameter.
|
292
358
|
IndentationWidth: ~
|
293
359
|
|
294
360
|
Layout/ArrayAlignment:
|
@@ -316,8 +382,8 @@ Layout/ArrayAlignment:
|
|
316
382
|
SupportedStyles:
|
317
383
|
- with_first_element
|
318
384
|
- with_fixed_indentation
|
319
|
-
# By default
|
320
|
-
#
|
385
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
386
|
+
# but it can be overridden by setting this parameter.
|
321
387
|
IndentationWidth: ~
|
322
388
|
|
323
389
|
Layout/AssignmentIndentation:
|
@@ -327,8 +393,8 @@ Layout/AssignmentIndentation:
|
|
327
393
|
Enabled: true
|
328
394
|
VersionAdded: '0.49'
|
329
395
|
VersionChanged: '0.77'
|
330
|
-
# By default
|
331
|
-
#
|
396
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
397
|
+
# but it can be overridden by setting this parameter.
|
332
398
|
IndentationWidth: ~
|
333
399
|
|
334
400
|
Layout/BeginEndAlignment:
|
@@ -365,18 +431,19 @@ Layout/BlockEndNewline:
|
|
365
431
|
VersionAdded: '0.49'
|
366
432
|
|
367
433
|
Layout/CaseIndentation:
|
368
|
-
Description: 'Indentation of when in a case/when/[else/]end.'
|
434
|
+
Description: 'Indentation of when in a case/(when|in)/[else/]end.'
|
369
435
|
StyleGuide: '#indent-when-to-case'
|
370
436
|
Enabled: true
|
371
437
|
VersionAdded: '0.49'
|
438
|
+
VersionChanged: '1.16'
|
372
439
|
EnforcedStyle: end
|
373
440
|
SupportedStyles:
|
374
441
|
- case
|
375
442
|
- end
|
376
443
|
IndentOneStep: true
|
377
|
-
# By default
|
378
|
-
#
|
379
|
-
# This only matters if `IndentOneStep` is `true
|
444
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
445
|
+
# but it can be overridden by setting this parameter.
|
446
|
+
# This only matters if `IndentOneStep` is `true`.
|
380
447
|
IndentationWidth: ~
|
381
448
|
|
382
449
|
Layout/ClassStructure:
|
@@ -390,13 +457,13 @@ Layout/ClassStructure:
|
|
390
457
|
- prepend
|
391
458
|
- extend
|
392
459
|
ExpectedOrder:
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
460
|
+
- module_inclusion
|
461
|
+
- constants
|
462
|
+
- public_class_methods
|
463
|
+
- initializer
|
464
|
+
- public_methods
|
465
|
+
- protected_methods
|
466
|
+
- private_methods
|
400
467
|
|
401
468
|
Layout/ClosingHeredocIndentation:
|
402
469
|
Description: 'Checks the indentation of here document closings.'
|
@@ -411,7 +478,11 @@ Layout/ClosingParenthesisIndentation:
|
|
411
478
|
Layout/CommentIndentation:
|
412
479
|
Description: 'Indentation of comments.'
|
413
480
|
Enabled: true
|
481
|
+
# When true, allows comments to have extra indentation if that aligns them
|
482
|
+
# with a comment on the preceding line.
|
483
|
+
AllowForAlignment: false
|
414
484
|
VersionAdded: '0.49'
|
485
|
+
VersionChanged: '1.24'
|
415
486
|
|
416
487
|
Layout/ConditionPosition:
|
417
488
|
Description: >-
|
@@ -483,13 +554,13 @@ Layout/EmptyLineBetweenDefs:
|
|
483
554
|
StyleGuide: '#empty-lines-between-methods'
|
484
555
|
Enabled: true
|
485
556
|
VersionAdded: '0.49'
|
486
|
-
VersionChanged: '1.
|
557
|
+
VersionChanged: '1.23'
|
487
558
|
EmptyLineBetweenMethodDefs: true
|
488
559
|
EmptyLineBetweenClassDefs: true
|
489
560
|
EmptyLineBetweenModuleDefs: true
|
490
|
-
#
|
491
|
-
# need an empty line between them.
|
492
|
-
AllowAdjacentOneLineDefs:
|
561
|
+
# `AllowAdjacentOneLineDefs` means that single line method definitions don't
|
562
|
+
# need an empty line between them. `true` by default.
|
563
|
+
AllowAdjacentOneLineDefs: true
|
493
564
|
# Can be array to specify minimum and maximum number of empty lines, e.g. [1, 2]
|
494
565
|
NumberOfEmptyLines: 1
|
495
566
|
|
@@ -653,8 +724,8 @@ Layout/FirstArgumentIndentation:
|
|
653
724
|
# Same as `special_for_inner_method_call` except that the special rule only
|
654
725
|
# applies if the outer method call encloses its arguments in parentheses.
|
655
726
|
- special_for_inner_method_call_in_parentheses
|
656
|
-
# By default
|
657
|
-
#
|
727
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
728
|
+
# but it can be overridden by setting this parameter.
|
658
729
|
IndentationWidth: ~
|
659
730
|
|
660
731
|
Layout/FirstArrayElementIndentation:
|
@@ -680,8 +751,8 @@ Layout/FirstArrayElementIndentation:
|
|
680
751
|
- special_inside_parentheses
|
681
752
|
- consistent
|
682
753
|
- align_brackets
|
683
|
-
# By default
|
684
|
-
#
|
754
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
755
|
+
# but it can be overridden by setting this parameter.
|
685
756
|
IndentationWidth: ~
|
686
757
|
|
687
758
|
Layout/FirstArrayElementLineBreak:
|
@@ -712,8 +783,8 @@ Layout/FirstHashElementIndentation:
|
|
712
783
|
- special_inside_parentheses
|
713
784
|
- consistent
|
714
785
|
- align_braces
|
715
|
-
# By default
|
716
|
-
#
|
786
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
787
|
+
# but it can be overridden by setting this parameter.
|
717
788
|
IndentationWidth: ~
|
718
789
|
|
719
790
|
Layout/FirstHashElementLineBreak:
|
@@ -748,8 +819,8 @@ Layout/FirstParameterIndentation:
|
|
748
819
|
SupportedStyles:
|
749
820
|
- consistent
|
750
821
|
- align_parentheses
|
751
|
-
# By default
|
752
|
-
#
|
822
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
823
|
+
# but it can be overridden by setting this parameter.
|
753
824
|
IndentationWidth: ~
|
754
825
|
|
755
826
|
Layout/HashAlignment:
|
@@ -759,7 +830,7 @@ Layout/HashAlignment:
|
|
759
830
|
Enabled: true
|
760
831
|
AllowMultipleStyles: true
|
761
832
|
VersionAdded: '0.49'
|
762
|
-
VersionChanged: '
|
833
|
+
VersionChanged: '1.16'
|
763
834
|
# Alignment of entries using hash rocket as separator. Valid values are:
|
764
835
|
#
|
765
836
|
# key - left alignment of keys
|
@@ -839,7 +910,7 @@ Layout/HeredocArgumentClosingParenthesis:
|
|
839
910
|
VersionAdded: '0.68'
|
840
911
|
|
841
912
|
Layout/HeredocIndentation:
|
842
|
-
Description: '
|
913
|
+
Description: 'Checks the indentation of the here document bodies.'
|
843
914
|
StyleGuide: '#squiggly-heredocs'
|
844
915
|
Enabled: true
|
845
916
|
VersionAdded: '0.49'
|
@@ -870,9 +941,9 @@ Layout/IndentationStyle:
|
|
870
941
|
Enabled: true
|
871
942
|
VersionAdded: '0.49'
|
872
943
|
VersionChanged: '0.82'
|
873
|
-
# By default
|
874
|
-
#
|
875
|
-
# It is used during
|
944
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
945
|
+
# but it can be overridden by setting this parameter.
|
946
|
+
# It is used during autocorrection to determine how many spaces should
|
876
947
|
# replace each tab.
|
877
948
|
IndentationWidth: ~
|
878
949
|
EnforcedStyle: spaces
|
@@ -887,7 +958,8 @@ Layout/IndentationWidth:
|
|
887
958
|
VersionAdded: '0.49'
|
888
959
|
# Number of spaces for each indentation level.
|
889
960
|
Width: 2
|
890
|
-
|
961
|
+
AllowedPatterns: []
|
962
|
+
# IgnoredPatterns: [] # deprecated
|
891
963
|
|
892
964
|
Layout/InitialIndentation:
|
893
965
|
Description: >-
|
@@ -910,13 +982,26 @@ Layout/LeadingEmptyLines:
|
|
910
982
|
VersionAdded: '0.57'
|
911
983
|
VersionChanged: '0.77'
|
912
984
|
|
985
|
+
Layout/LineEndStringConcatenationIndentation:
|
986
|
+
Description: >-
|
987
|
+
Checks the indentation of the next line after a line that
|
988
|
+
ends with a string literal and a backslash.
|
989
|
+
Enabled: true
|
990
|
+
VersionAdded: '1.18'
|
991
|
+
EnforcedStyle: aligned
|
992
|
+
SupportedStyles:
|
993
|
+
- aligned
|
994
|
+
- indented
|
995
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
996
|
+
# but it can be overridden by setting this parameter.
|
997
|
+
IndentationWidth: ~
|
998
|
+
|
913
999
|
Layout/LineLength:
|
914
1000
|
Description: 'Checks that line length does not exceed the configured limit.'
|
915
1001
|
StyleGuide: '#max-line-length'
|
916
1002
|
Enabled: true
|
917
1003
|
VersionAdded: '0.25'
|
918
1004
|
VersionChanged: '1.4'
|
919
|
-
AutoCorrect: true
|
920
1005
|
Max: 300
|
921
1006
|
# To make it possible to copy or click on URIs in the code, we allow lines
|
922
1007
|
# containing a URI to be longer than Max.
|
@@ -928,10 +1013,11 @@ Layout/LineLength:
|
|
928
1013
|
# The IgnoreCopDirectives option causes the LineLength rule to ignore cop
|
929
1014
|
# directives like '# rubocop: enable ...' when calculating a line's length.
|
930
1015
|
IgnoreCopDirectives: true
|
931
|
-
# The
|
1016
|
+
# The AllowedPatterns option is a list of !ruby/regexp and/or string
|
932
1017
|
# elements. Strings will be converted to Regexp objects. A line that matches
|
933
1018
|
# any regular expression listed in this option will be ignored by LineLength.
|
934
|
-
|
1019
|
+
AllowedPatterns: []
|
1020
|
+
# IgnoredPatterns: []
|
935
1021
|
|
936
1022
|
Layout/MultilineArrayBraceLayout:
|
937
1023
|
Description: >-
|
@@ -1040,8 +1126,8 @@ Layout/MultilineMethodCallIndentation:
|
|
1040
1126
|
- aligned
|
1041
1127
|
- indented
|
1042
1128
|
- indented_relative_to_receiver
|
1043
|
-
# By default
|
1044
|
-
#
|
1129
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
1130
|
+
# but it can be overridden by setting this parameter.
|
1045
1131
|
IndentationWidth: ~
|
1046
1132
|
|
1047
1133
|
Layout/MultilineMethodDefinitionBraceLayout:
|
@@ -1070,8 +1156,8 @@ Layout/MultilineOperationIndentation:
|
|
1070
1156
|
SupportedStyles:
|
1071
1157
|
- aligned
|
1072
1158
|
- indented
|
1073
|
-
# By default
|
1074
|
-
#
|
1159
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
1160
|
+
# but it can be overridden by setting this parameter.
|
1075
1161
|
IndentationWidth: ~
|
1076
1162
|
|
1077
1163
|
Layout/ParameterAlignment:
|
@@ -1099,15 +1185,28 @@ Layout/ParameterAlignment:
|
|
1099
1185
|
SupportedStyles:
|
1100
1186
|
- with_first_parameter
|
1101
1187
|
- with_fixed_indentation
|
1102
|
-
# By default
|
1103
|
-
#
|
1188
|
+
# By default the indentation width from `Layout/IndentationWidth` is used,
|
1189
|
+
# but it can be overridden by setting this parameter.
|
1104
1190
|
IndentationWidth: ~
|
1105
1191
|
|
1192
|
+
Layout/RedundantLineBreak:
|
1193
|
+
Description: >-
|
1194
|
+
Do not break up an expression into multiple lines when it fits
|
1195
|
+
on a single line.
|
1196
|
+
Enabled: false
|
1197
|
+
InspectBlocks: false
|
1198
|
+
VersionAdded: '1.13'
|
1199
|
+
|
1106
1200
|
Layout/RescueEnsureAlignment:
|
1107
1201
|
Description: 'Align rescues and ensures correctly.'
|
1108
1202
|
Enabled: true
|
1109
1203
|
VersionAdded: '0.49'
|
1110
1204
|
|
1205
|
+
Layout/SingleLineBlockChain:
|
1206
|
+
Description: 'Put method call on a separate line if chained to a single line block.'
|
1207
|
+
Enabled: false
|
1208
|
+
VersionAdded: '1.14'
|
1209
|
+
|
1111
1210
|
Layout/SpaceAfterColon:
|
1112
1211
|
Description: 'Use spaces after colons.'
|
1113
1212
|
StyleGuide: '#spaces-operators'
|
@@ -1286,7 +1385,7 @@ Layout/SpaceInsideBlockBraces:
|
|
1286
1385
|
|
1287
1386
|
Layout/SpaceInsideHashLiteralBraces:
|
1288
1387
|
Description: "Use spaces inside hash literal braces - or don't."
|
1289
|
-
StyleGuide: '#spaces-
|
1388
|
+
StyleGuide: '#spaces-braces'
|
1290
1389
|
Enabled: true
|
1291
1390
|
VersionAdded: '0.49'
|
1292
1391
|
EnforcedStyle: space
|
@@ -1307,10 +1406,11 @@ Layout/SpaceInsideParens:
|
|
1307
1406
|
StyleGuide: '#spaces-braces'
|
1308
1407
|
Enabled: true
|
1309
1408
|
VersionAdded: '0.49'
|
1310
|
-
VersionChanged: '
|
1409
|
+
VersionChanged: '1.22'
|
1311
1410
|
EnforcedStyle: no_space
|
1312
1411
|
SupportedStyles:
|
1313
1412
|
- space
|
1413
|
+
- compact
|
1314
1414
|
- no_space
|
1315
1415
|
|
1316
1416
|
Layout/SpaceInsidePercentLiteralDelimiters:
|
@@ -1382,6 +1482,8 @@ Lint/AmbiguousBlockAssociation:
|
|
1382
1482
|
StyleGuide: '#syntax'
|
1383
1483
|
Enabled: true
|
1384
1484
|
VersionAdded: '0.48'
|
1485
|
+
VersionChanged: '1.13'
|
1486
|
+
IgnoredMethods: []
|
1385
1487
|
|
1386
1488
|
Lint/AmbiguousOperator:
|
1387
1489
|
Description: >-
|
@@ -1392,6 +1494,20 @@ Lint/AmbiguousOperator:
|
|
1392
1494
|
VersionAdded: '0.17'
|
1393
1495
|
VersionChanged: '0.83'
|
1394
1496
|
|
1497
|
+
Lint/AmbiguousOperatorPrecedence:
|
1498
|
+
Description: >-
|
1499
|
+
Checks for expressions containing multiple binary operations with
|
1500
|
+
ambiguous precedence.
|
1501
|
+
Enabled: true
|
1502
|
+
VersionAdded: '1.21'
|
1503
|
+
|
1504
|
+
Lint/AmbiguousRange:
|
1505
|
+
Description: Checks for ranges with ambiguous boundaries.
|
1506
|
+
Enabled: true
|
1507
|
+
VersionAdded: '1.19'
|
1508
|
+
SafeAutoCorrect: false
|
1509
|
+
RequireParenthesesForMethodChains: false
|
1510
|
+
|
1395
1511
|
Lint/AmbiguousRegexpLiteral:
|
1396
1512
|
Description: >-
|
1397
1513
|
Checks for ambiguous regexp literals in the first argument of
|
@@ -1422,9 +1538,9 @@ Lint/BinaryOperatorWithIdenticalOperands:
|
|
1422
1538
|
Lint/BooleanSymbol:
|
1423
1539
|
Description: 'Check for `:true` and `:false` symbols.'
|
1424
1540
|
Enabled: true
|
1425
|
-
|
1541
|
+
SafeAutoCorrect: false
|
1426
1542
|
VersionAdded: '0.50'
|
1427
|
-
VersionChanged: '
|
1543
|
+
VersionChanged: '1.22'
|
1428
1544
|
|
1429
1545
|
Lint/CircularArgumentReference:
|
1430
1546
|
Description: "Default values in optional keyword arguments and optional ordinal arguments should not refer back to the name of the argument."
|
@@ -1456,6 +1572,7 @@ Lint/Debugger:
|
|
1456
1572
|
Enabled: true
|
1457
1573
|
VersionAdded: '0.14'
|
1458
1574
|
VersionChanged: '1.10'
|
1575
|
+
#DebuggerReceivers: [] # deprecated
|
1459
1576
|
DebuggerMethods:
|
1460
1577
|
# Groups are available so that a specific group can be disabled in
|
1461
1578
|
# a user's configuration, but are otherwise not significant.
|
@@ -1469,6 +1586,11 @@ Lint/Debugger:
|
|
1469
1586
|
Capybara:
|
1470
1587
|
- save_and_open_page
|
1471
1588
|
- save_and_open_screenshot
|
1589
|
+
debug.rb:
|
1590
|
+
- binding.b
|
1591
|
+
- binding.break
|
1592
|
+
- Kernel.binding.b
|
1593
|
+
- Kernel.binding.break
|
1472
1594
|
Pry:
|
1473
1595
|
- binding.pry
|
1474
1596
|
- binding.remote_pry
|
@@ -1477,6 +1599,8 @@ Lint/Debugger:
|
|
1477
1599
|
Rails:
|
1478
1600
|
- debugger
|
1479
1601
|
- Kernel.debugger
|
1602
|
+
RubyJard:
|
1603
|
+
- jard
|
1480
1604
|
WebConsole:
|
1481
1605
|
- binding.console
|
1482
1606
|
|
@@ -1489,6 +1613,7 @@ Lint/DeprecatedConstants:
|
|
1489
1613
|
Description: 'Checks for deprecated constants.'
|
1490
1614
|
Enabled: true
|
1491
1615
|
VersionAdded: '1.8'
|
1616
|
+
VersionChanged: '1.22'
|
1492
1617
|
# You can configure deprecated constants.
|
1493
1618
|
# If there is an alternative method, you can set alternative value as `Alternative`.
|
1494
1619
|
# And you can set the deprecated version as `DeprecatedVersion`.
|
@@ -1509,6 +1634,9 @@ Lint/DeprecatedConstants:
|
|
1509
1634
|
'FALSE':
|
1510
1635
|
Alternative: 'false'
|
1511
1636
|
DeprecatedVersion: '2.4'
|
1637
|
+
'Net::HTTPServerException':
|
1638
|
+
Alternative: 'Net::HTTPClientException'
|
1639
|
+
DeprecatedVersion: '2.6'
|
1512
1640
|
'Random::DEFAULT':
|
1513
1641
|
Alternative: 'Random.new'
|
1514
1642
|
DeprecatedVersion: '3.0'
|
@@ -1562,7 +1690,9 @@ Lint/DuplicateRegexpCharacterClassElement:
|
|
1562
1690
|
Lint/DuplicateRequire:
|
1563
1691
|
Description: 'Check for duplicate `require`s and `require_relative`s.'
|
1564
1692
|
Enabled: true
|
1693
|
+
SafeAutoCorrect: false
|
1565
1694
|
VersionAdded: '0.90'
|
1695
|
+
VersionChanged: '1.28'
|
1566
1696
|
|
1567
1697
|
Lint/DuplicateRescueException:
|
1568
1698
|
Description: 'Checks that there are no repeated exceptions used in `rescue` expressions.'
|
@@ -1581,10 +1711,10 @@ Lint/ElseLayout:
|
|
1581
1711
|
VersionChanged: '1.2'
|
1582
1712
|
|
1583
1713
|
Lint/EmptyBlock:
|
1584
|
-
Description: '
|
1714
|
+
Description: 'Checks for blocks without a body.'
|
1585
1715
|
Enabled: true
|
1586
1716
|
VersionAdded: '1.1'
|
1587
|
-
VersionChanged: '1.
|
1717
|
+
VersionChanged: '1.15'
|
1588
1718
|
AllowComments: true
|
1589
1719
|
AllowEmptyLambdas: true
|
1590
1720
|
|
@@ -1595,7 +1725,7 @@ Lint/EmptyClass:
|
|
1595
1725
|
AllowComments: false
|
1596
1726
|
|
1597
1727
|
Lint/EmptyConditionalBody:
|
1598
|
-
Description: '
|
1728
|
+
Description: 'Checks for the presence of `if`, `elsif` and `unless` branches without a body.'
|
1599
1729
|
Enabled: true
|
1600
1730
|
AllowComments: true
|
1601
1731
|
VersionAdded: '0.89'
|
@@ -1617,6 +1747,12 @@ Lint/EmptyFile:
|
|
1617
1747
|
AllowComments: true
|
1618
1748
|
VersionAdded: '0.90'
|
1619
1749
|
|
1750
|
+
Lint/EmptyInPattern:
|
1751
|
+
Description: 'Checks for the presence of `in` pattern branches without a body.'
|
1752
|
+
Enabled: true
|
1753
|
+
AllowComments: true
|
1754
|
+
VersionAdded: '1.16'
|
1755
|
+
|
1620
1756
|
Lint/EmptyInterpolation:
|
1621
1757
|
Description: 'Checks for empty string interpolation.'
|
1622
1758
|
Enabled: true
|
@@ -1694,6 +1830,13 @@ Lint/ImplicitStringConcatenation:
|
|
1694
1830
|
Enabled: true
|
1695
1831
|
VersionAdded: '0.36'
|
1696
1832
|
|
1833
|
+
Lint/IncompatibleIoSelectWithFiberScheduler:
|
1834
|
+
Description: 'Checks for `IO.select` that is incompatible with Fiber Scheduler.'
|
1835
|
+
Enabled: true
|
1836
|
+
SafeAutoCorrect: false
|
1837
|
+
VersionAdded: '1.21'
|
1838
|
+
VersionChanged: '1.24'
|
1839
|
+
|
1697
1840
|
Lint/IneffectiveAccessModifier:
|
1698
1841
|
Description: >-
|
1699
1842
|
Checks for attempts to use `private` or `protected` to set
|
@@ -1704,12 +1847,14 @@ Lint/IneffectiveAccessModifier:
|
|
1704
1847
|
Lint/InheritException:
|
1705
1848
|
Description: 'Avoid inheriting from the `Exception` class.'
|
1706
1849
|
Enabled: true
|
1850
|
+
SafeAutoCorrect: false
|
1707
1851
|
VersionAdded: '0.41'
|
1852
|
+
VersionChanged: '1.26'
|
1708
1853
|
# The default base class in favour of `Exception`.
|
1709
|
-
EnforcedStyle:
|
1854
|
+
EnforcedStyle: standard_error
|
1710
1855
|
SupportedStyles:
|
1711
|
-
- runtime_error
|
1712
1856
|
- standard_error
|
1857
|
+
- runtime_error
|
1713
1858
|
|
1714
1859
|
Lint/InterpolationCheck:
|
1715
1860
|
Description: 'Raise warning for interpolation in single q strs.'
|
@@ -1759,8 +1904,8 @@ Lint/MissingCopEnableDirective:
|
|
1759
1904
|
|
1760
1905
|
Lint/MissingSuper:
|
1761
1906
|
Description: >-
|
1762
|
-
|
1763
|
-
without calls to `super
|
1907
|
+
Checks for the presence of constructors and lifecycle callbacks
|
1908
|
+
without calls to `super`.
|
1764
1909
|
Enabled: true
|
1765
1910
|
VersionAdded: '0.89'
|
1766
1911
|
VersionChanged: '1.4'
|
@@ -1775,7 +1920,6 @@ Lint/MultipleComparison:
|
|
1775
1920
|
Enabled: true
|
1776
1921
|
VersionAdded: '0.47'
|
1777
1922
|
VersionChanged: '1.1'
|
1778
|
-
AllowMethodComparison: true
|
1779
1923
|
|
1780
1924
|
Lint/NestedMethodDefinition:
|
1781
1925
|
Description: 'Do not use nested method definitions.'
|
@@ -1789,7 +1933,7 @@ Lint/NestedPercentLiteral:
|
|
1789
1933
|
VersionAdded: '0.52'
|
1790
1934
|
|
1791
1935
|
Lint/NextWithoutAccumulator:
|
1792
|
-
Description:
|
1936
|
+
Description: >-
|
1793
1937
|
Do not omit the accumulator when calling `next`
|
1794
1938
|
in a `reduce`/`inject` block.
|
1795
1939
|
Enabled: true
|
@@ -1900,6 +2044,8 @@ Lint/RedundantDirGlobSort:
|
|
1900
2044
|
Description: 'Checks for redundant `sort` method to `Dir.glob` and `Dir[]`.'
|
1901
2045
|
Enabled: true
|
1902
2046
|
VersionAdded: '1.8'
|
2047
|
+
VersionChanged: '1.26'
|
2048
|
+
SafeAutoCorrect: false
|
1903
2049
|
|
1904
2050
|
Lint/RedundantRequireStatement:
|
1905
2051
|
Description: 'Checks for unnecessary `require` statement.'
|
@@ -1943,6 +2089,12 @@ Lint/RedundantWithObject:
|
|
1943
2089
|
Enabled: true
|
1944
2090
|
VersionAdded: '0.51'
|
1945
2091
|
|
2092
|
+
Lint/RefinementImportMethods:
|
2093
|
+
Description: 'Use `Refinement#import_methods` when using `include` or `prepend` in `refine` block.'
|
2094
|
+
Enabled: true
|
2095
|
+
SafeAutoCorrect: false
|
2096
|
+
VersionAdded: '1.27'
|
2097
|
+
|
1946
2098
|
Lint/RegexpAsCondition:
|
1947
2099
|
Description: >-
|
1948
2100
|
Do not use regexp literal as a condition.
|
@@ -1958,6 +2110,11 @@ Lint/RequireParentheses:
|
|
1958
2110
|
Enabled: true
|
1959
2111
|
VersionAdded: '0.18'
|
1960
2112
|
|
2113
|
+
Lint/RequireRelativeSelfPath:
|
2114
|
+
Description: 'Checks for uses a file requiring itself with `require_relative`.'
|
2115
|
+
Enabled: true
|
2116
|
+
VersionAdded: '1.22'
|
2117
|
+
|
1961
2118
|
Lint/RescueException:
|
1962
2119
|
Description: 'Avoid rescuing the Exception class.'
|
1963
2120
|
StyleGuide: '#no-blind-rescues'
|
@@ -2064,6 +2221,7 @@ Lint/SymbolConversion:
|
|
2064
2221
|
Description: 'Checks for unnecessary symbol conversions.'
|
2065
2222
|
Enabled: true
|
2066
2223
|
VersionAdded: '1.9'
|
2224
|
+
VersionChanged: '1.16'
|
2067
2225
|
EnforcedStyle: strict
|
2068
2226
|
SupportedStyles:
|
2069
2227
|
- strict
|
@@ -2075,7 +2233,7 @@ Lint/Syntax:
|
|
2075
2233
|
VersionAdded: '0.9'
|
2076
2234
|
|
2077
2235
|
Lint/ToEnumArguments:
|
2078
|
-
Description: '
|
2236
|
+
Description: 'Ensures that `to_enum`/`enum_for`, called for the current method, has correct arguments.'
|
2079
2237
|
Enabled: true
|
2080
2238
|
VersionAdded: '1.1'
|
2081
2239
|
|
@@ -2085,12 +2243,12 @@ Lint/ToJSON:
|
|
2085
2243
|
VersionAdded: '0.66'
|
2086
2244
|
|
2087
2245
|
Lint/TopLevelReturnWithArgument:
|
2088
|
-
Description: '
|
2246
|
+
Description: 'Detects top level return statements with argument.'
|
2089
2247
|
Enabled: true
|
2090
2248
|
VersionAdded: '0.89'
|
2091
2249
|
|
2092
2250
|
Lint/TrailingCommaInAttributeDeclaration:
|
2093
|
-
Description: '
|
2251
|
+
Description: 'Checks for trailing commas in attribute declarations.'
|
2094
2252
|
Enabled: true
|
2095
2253
|
VersionAdded: '0.90'
|
2096
2254
|
|
@@ -2139,14 +2297,15 @@ Lint/UnreachableCode:
|
|
2139
2297
|
VersionAdded: '0.9'
|
2140
2298
|
|
2141
2299
|
Lint/UnreachableLoop:
|
2142
|
-
Description: '
|
2300
|
+
Description: 'Checks for loops that will have at most one iteration.'
|
2143
2301
|
Enabled: true
|
2144
2302
|
VersionAdded: '0.89'
|
2145
2303
|
VersionChanged: '1.7'
|
2146
|
-
|
2304
|
+
AllowedPatterns:
|
2147
2305
|
# RSpec uses `times` in its message expectations
|
2148
2306
|
# eg. `exactly(2).times`
|
2149
2307
|
- !ruby/regexp /(exactly|at_least|at_most)\(\d+\)\.times/
|
2308
|
+
# IgnoredPatterns: [] # deprecated
|
2150
2309
|
|
2151
2310
|
Lint/UnusedBlockArgument:
|
2152
2311
|
Description: 'Checks for unused block arguments.'
|
@@ -2197,17 +2356,17 @@ Lint/UselessAssignment:
|
|
2197
2356
|
Enabled: true
|
2198
2357
|
VersionAdded: '0.11'
|
2199
2358
|
|
2200
|
-
Lint/UselessElseWithoutRescue:
|
2201
|
-
Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
|
2202
|
-
Enabled: true
|
2203
|
-
VersionAdded: '0.17'
|
2204
|
-
|
2205
2359
|
Lint/UselessMethodDefinition:
|
2206
2360
|
Description: 'Checks for useless method definitions.'
|
2207
2361
|
Enabled: true
|
2208
2362
|
VersionAdded: '0.90'
|
2363
|
+
VersionChanged: '0.91'
|
2209
2364
|
Safe: false
|
2210
|
-
|
2365
|
+
|
2366
|
+
Lint/UselessRuby2Keywords:
|
2367
|
+
Description: 'Finds unnecessary uses of `ruby2_keywords`.'
|
2368
|
+
Enabled: true
|
2369
|
+
VersionAdded: '1.23'
|
2211
2370
|
|
2212
2371
|
Lint/UselessSetterCall:
|
2213
2372
|
Description: 'Checks for useless setter call to a local variable.'
|
@@ -2255,6 +2414,7 @@ Metrics/BlockLength:
|
|
2255
2414
|
CountComments: false # count full line comments?
|
2256
2415
|
Max: 50
|
2257
2416
|
CountAsOne: []
|
2417
|
+
#ExcludedMethods: [] # deprecated, retained for backwards compatibility
|
2258
2418
|
IgnoredMethods:
|
2259
2419
|
# By default, exclude the `#refine` method, as it tends to have larger
|
2260
2420
|
# associated blocks.
|
@@ -2300,6 +2460,7 @@ Metrics/MethodLength:
|
|
2300
2460
|
CountComments: false # count full line comments?
|
2301
2461
|
Max: 50
|
2302
2462
|
CountAsOne: []
|
2463
|
+
#ExcludedMethods: [] # deprecated, retained for backwards compatibility
|
2303
2464
|
IgnoredMethods: []
|
2304
2465
|
|
2305
2466
|
Metrics/ModuleLength:
|
@@ -2363,6 +2524,17 @@ Naming/BinaryOperatorParameterName:
|
|
2363
2524
|
VersionAdded: '0.50'
|
2364
2525
|
VersionChanged: '1.2'
|
2365
2526
|
|
2527
|
+
Naming/BlockForwarding:
|
2528
|
+
Description: 'Use anonymous block forwarding.'
|
2529
|
+
StyleGuide: '#block-forwarding'
|
2530
|
+
Enabled: true
|
2531
|
+
VersionAdded: '1.24'
|
2532
|
+
EnforcedStyle: anonymous
|
2533
|
+
SupportedStyles:
|
2534
|
+
- anonymous
|
2535
|
+
- explicit
|
2536
|
+
BlockForwardingName: block
|
2537
|
+
|
2366
2538
|
Naming/BlockParameterName:
|
2367
2539
|
Description: >-
|
2368
2540
|
Checks for block parameter names that contain capital letters,
|
@@ -2400,6 +2572,7 @@ Naming/FileName:
|
|
2400
2572
|
StyleGuide: '#snake-case-files'
|
2401
2573
|
Enabled: true
|
2402
2574
|
VersionAdded: '0.50'
|
2575
|
+
VersionChanged: '1.23'
|
2403
2576
|
# Camel case file names listed in `AllCops:Include` and all file names listed
|
2404
2577
|
# in `AllCops:Exclude` are excluded by default. Add extra excludes here.
|
2405
2578
|
Exclude: []
|
@@ -2412,6 +2585,13 @@ Naming/FileName:
|
|
2412
2585
|
# whether each source file's class or module name matches the file name --
|
2413
2586
|
# not whether the nested module hierarchy matches the subdirectory path.
|
2414
2587
|
CheckDefinitionPathHierarchy: true
|
2588
|
+
# paths that are considered root directories, for example "lib" in most ruby projects
|
2589
|
+
# or "app/models" in rails projects
|
2590
|
+
CheckDefinitionPathHierarchyRoots:
|
2591
|
+
- lib
|
2592
|
+
- spec
|
2593
|
+
- test
|
2594
|
+
- src
|
2415
2595
|
# If non-`nil`, expect all source file names to match the following regex.
|
2416
2596
|
# Only the file name itself is matched, not the entire file path.
|
2417
2597
|
# Use anchors as necessary if you want to match the entire name rather than
|
@@ -2482,6 +2662,33 @@ Naming/HeredocDelimiterNaming:
|
|
2482
2662
|
ForbiddenDelimiters:
|
2483
2663
|
- !ruby/regexp '/(^|\s)(EO[A-Z]{1}|END)(\s|$)/'
|
2484
2664
|
|
2665
|
+
Naming/InclusiveLanguage:
|
2666
|
+
Description: 'Recommend the use of inclusive language instead of problematic terms.'
|
2667
|
+
Enabled: false
|
2668
|
+
VersionAdded: '1.18'
|
2669
|
+
VersionChanged: '1.21'
|
2670
|
+
CheckIdentifiers: true
|
2671
|
+
CheckConstants: true
|
2672
|
+
CheckVariables: true
|
2673
|
+
CheckStrings: false
|
2674
|
+
CheckSymbols: true
|
2675
|
+
CheckComments: true
|
2676
|
+
CheckFilepaths: true
|
2677
|
+
FlaggedTerms:
|
2678
|
+
whitelist:
|
2679
|
+
Regex: !ruby/regexp '/white[-_\s]?list/'
|
2680
|
+
Suggestions:
|
2681
|
+
- allowlist
|
2682
|
+
- permit
|
2683
|
+
blacklist:
|
2684
|
+
Regex: !ruby/regexp '/black[-_\s]?list/'
|
2685
|
+
Suggestions:
|
2686
|
+
- denylist
|
2687
|
+
- block
|
2688
|
+
slave:
|
2689
|
+
WholeWord: true
|
2690
|
+
Suggestions: ['replica', 'secondary', 'follower']
|
2691
|
+
|
2485
2692
|
Naming/MemoizedInstanceVariableName:
|
2486
2693
|
Description: >-
|
2487
2694
|
Memoized method name should match memo instance variable name.
|
@@ -2506,11 +2713,12 @@ Naming/MethodName:
|
|
2506
2713
|
- camelCase
|
2507
2714
|
# Method names matching patterns are always allowed.
|
2508
2715
|
#
|
2509
|
-
#
|
2716
|
+
# AllowedPatterns:
|
2510
2717
|
# - '\A\s*onSelectionBulkChange\s*'
|
2511
2718
|
# - '\A\s*onSelectionCleared\s*'
|
2512
2719
|
#
|
2513
|
-
|
2720
|
+
AllowedPatterns: []
|
2721
|
+
# IgnoredPatterns: [] # deprecated
|
2514
2722
|
|
2515
2723
|
Naming/MethodParameterName:
|
2516
2724
|
Description: >-
|
@@ -2586,6 +2794,7 @@ Naming/VariableName:
|
|
2586
2794
|
- snake_case
|
2587
2795
|
- camelCase
|
2588
2796
|
AllowedIdentifiers: []
|
2797
|
+
AllowedPatterns: []
|
2589
2798
|
|
2590
2799
|
Naming/VariableNumber:
|
2591
2800
|
Description: 'Use the configured style when numbering symbols, methods and variables.'
|
@@ -2607,14 +2816,28 @@ Naming/VariableNumber:
|
|
2607
2816
|
- rfc822 # Time#rfc822
|
2608
2817
|
- rfc2822 # Time#rfc2822
|
2609
2818
|
- rfc3339 # DateTime.rfc3339
|
2819
|
+
AllowedPatterns: []
|
2610
2820
|
|
2611
2821
|
#################### Security ##############################
|
2612
2822
|
|
2823
|
+
Security/CompoundHash:
|
2824
|
+
Description: 'When overwriting Object#hash to combine values, prefer delegating to Array#hash over writing a custom implementation.'
|
2825
|
+
Enabled: true
|
2826
|
+
VersionAdded: '1.28'
|
2827
|
+
|
2613
2828
|
Security/Eval:
|
2614
2829
|
Description: 'The use of eval represents a serious security risk.'
|
2615
2830
|
Enabled: true
|
2616
2831
|
VersionAdded: '0.47'
|
2617
2832
|
|
2833
|
+
Security/IoMethods:
|
2834
|
+
Description: >-
|
2835
|
+
Checks for the first argument to `IO.read`, `IO.binread`, `IO.write`, `IO.binwrite`,
|
2836
|
+
`IO.foreach`, and `IO.readlines`.
|
2837
|
+
Enabled: true
|
2838
|
+
Safe: false
|
2839
|
+
VersionAdded: '1.22'
|
2840
|
+
|
2618
2841
|
Security/JSONLoad:
|
2619
2842
|
Description: >-
|
2620
2843
|
Prefer usage of `JSON.parse` over `JSON.load` due to potential
|
@@ -2622,10 +2845,9 @@ Security/JSONLoad:
|
|
2622
2845
|
Reference: 'https://ruby-doc.org/stdlib-2.7.0/libdoc/json/rdoc/JSON.html#method-i-load'
|
2623
2846
|
Enabled: true
|
2624
2847
|
VersionAdded: '0.43'
|
2625
|
-
VersionChanged: '
|
2848
|
+
VersionChanged: '1.22'
|
2626
2849
|
# Autocorrect here will change to a method that may cause crashes depending
|
2627
2850
|
# on the value of the argument.
|
2628
|
-
AutoCorrect: false
|
2629
2851
|
SafeAutoCorrect: false
|
2630
2852
|
|
2631
2853
|
Security/MarshalLoad:
|
@@ -2691,8 +2913,9 @@ Style/AndOr:
|
|
2691
2913
|
Description: 'Use &&/|| instead of and/or.'
|
2692
2914
|
StyleGuide: '#no-and-or-or'
|
2693
2915
|
Enabled: true
|
2916
|
+
SafeAutoCorrect: false
|
2694
2917
|
VersionAdded: '0.9'
|
2695
|
-
VersionChanged: '
|
2918
|
+
VersionChanged: '1.21'
|
2696
2919
|
# Whether `and` and `or` are banned only in conditionals (conditionals)
|
2697
2920
|
# or completely (always).
|
2698
2921
|
EnforcedStyle: conditionals
|
@@ -2728,7 +2951,7 @@ Style/AsciiComments:
|
|
2728
2951
|
StyleGuide: '#english-comments'
|
2729
2952
|
Enabled: true
|
2730
2953
|
VersionAdded: '0.9'
|
2731
|
-
VersionChanged: '
|
2954
|
+
VersionChanged: '1.21'
|
2732
2955
|
AllowedChars:
|
2733
2956
|
- ©
|
2734
2957
|
|
@@ -2890,7 +3113,7 @@ Style/CaseEquality:
|
|
2890
3113
|
Enabled: true
|
2891
3114
|
VersionAdded: '0.9'
|
2892
3115
|
VersionChanged: '0.89'
|
2893
|
-
# If AllowOnConstant is enabled, the cop will ignore violations when the receiver of
|
3116
|
+
# If `AllowOnConstant` option is enabled, the cop will ignore violations when the receiver of
|
2894
3117
|
# the case equality operator is a constant.
|
2895
3118
|
#
|
2896
3119
|
# # bad
|
@@ -2901,7 +3124,7 @@ Style/CaseEquality:
|
|
2901
3124
|
AllowOnConstant: false
|
2902
3125
|
|
2903
3126
|
Style/CaseLikeIf:
|
2904
|
-
Description: '
|
3127
|
+
Description: 'Identifies places where `if-elsif` constructions can be replaced with `case-when`.'
|
2905
3128
|
StyleGuide: '#case-vs-if-else'
|
2906
3129
|
Enabled: true
|
2907
3130
|
Safe: false
|
@@ -2975,7 +3198,7 @@ Style/ClassMethodsDefinitions:
|
|
2975
3198
|
StyleGuide: '#def-self-class-methods'
|
2976
3199
|
Enabled: false
|
2977
3200
|
VersionAdded: '0.89'
|
2978
|
-
EnforcedStyle:
|
3201
|
+
EnforcedStyle: def_self
|
2979
3202
|
SupportedStyles:
|
2980
3203
|
- def_self
|
2981
3204
|
- self_class
|
@@ -3065,7 +3288,7 @@ Style/CommentAnnotation:
|
|
3065
3288
|
StyleGuide: '#annotate-keywords'
|
3066
3289
|
Enabled: true
|
3067
3290
|
VersionAdded: '0.10'
|
3068
|
-
VersionChanged: '1.
|
3291
|
+
VersionChanged: '1.20'
|
3069
3292
|
Keywords:
|
3070
3293
|
- TODO
|
3071
3294
|
- FIXME
|
@@ -3073,12 +3296,14 @@ Style/CommentAnnotation:
|
|
3073
3296
|
- HACK
|
3074
3297
|
- REVIEW
|
3075
3298
|
- NOTE
|
3299
|
+
RequireColon: true
|
3076
3300
|
|
3077
3301
|
Style/CommentedKeyword:
|
3078
3302
|
Description: 'Do not place comments on the same line as certain keywords.'
|
3079
3303
|
Enabled: true
|
3304
|
+
SafeAutoCorrect: false
|
3080
3305
|
VersionAdded: '0.51'
|
3081
|
-
VersionChanged: '1.
|
3306
|
+
VersionChanged: '1.19'
|
3082
3307
|
|
3083
3308
|
Style/ConditionalAssignment:
|
3084
3309
|
Description: >-
|
@@ -3294,6 +3519,12 @@ Style/EndlessMethod:
|
|
3294
3519
|
- allow_always
|
3295
3520
|
- disallow
|
3296
3521
|
|
3522
|
+
Style/EnvHome:
|
3523
|
+
Description: "Checks for consistent usage of `ENV['HOME']`."
|
3524
|
+
Enabled: true
|
3525
|
+
Safe: false
|
3526
|
+
VersionAdded: '1.29'
|
3527
|
+
|
3297
3528
|
Style/EvalWithLocation:
|
3298
3529
|
Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
|
3299
3530
|
Enabled: true
|
@@ -3331,6 +3562,28 @@ Style/ExponentialNotation:
|
|
3331
3562
|
- engineering
|
3332
3563
|
- integral
|
3333
3564
|
|
3565
|
+
Style/FetchEnvVar:
|
3566
|
+
Description: >-
|
3567
|
+
Suggests `ENV.fetch` for the replacement of `ENV[]`.
|
3568
|
+
Reference:
|
3569
|
+
- https://rubystyle.guide/#hash-fetch-defaults
|
3570
|
+
Enabled: true
|
3571
|
+
VersionAdded: '1.28'
|
3572
|
+
# Environment variables to be excluded from the inspection.
|
3573
|
+
AllowedVars: []
|
3574
|
+
|
3575
|
+
Style/FileRead:
|
3576
|
+
Description: 'Favor `File.(bin)read` convenience methods.'
|
3577
|
+
StyleGuide: '#file-read'
|
3578
|
+
Enabled: true
|
3579
|
+
VersionAdded: '1.24'
|
3580
|
+
|
3581
|
+
Style/FileWrite:
|
3582
|
+
Description: 'Favor `File.(bin)write` convenience methods.'
|
3583
|
+
StyleGuide: '#file-write'
|
3584
|
+
Enabled: true
|
3585
|
+
VersionAdded: '1.24'
|
3586
|
+
|
3334
3587
|
Style/FloatDivision:
|
3335
3588
|
Description: 'For performing float division, coerce one side only.'
|
3336
3589
|
StyleGuide: '#float-division'
|
@@ -3350,8 +3603,9 @@ Style/For:
|
|
3350
3603
|
Description: 'Checks use of for or each in multiline loops.'
|
3351
3604
|
StyleGuide: '#no-for-loops'
|
3352
3605
|
Enabled: true
|
3606
|
+
SafeAutoCorrect: false
|
3353
3607
|
VersionAdded: '0.13'
|
3354
|
-
VersionChanged: '
|
3608
|
+
VersionChanged: '1.26'
|
3355
3609
|
EnforcedStyle: each
|
3356
3610
|
SupportedStyles:
|
3357
3611
|
- each
|
@@ -3431,10 +3685,11 @@ Style/GuardClause:
|
|
3431
3685
|
StyleGuide: '#no-nested-conditionals'
|
3432
3686
|
Enabled: true
|
3433
3687
|
VersionAdded: '0.20'
|
3434
|
-
VersionChanged: '
|
3688
|
+
VersionChanged: '1.28'
|
3435
3689
|
# `MinBodyLength` defines the number of lines of the a body of an `if` or `unless`
|
3436
3690
|
# needs to have to trigger this cop
|
3437
3691
|
MinBodyLength: 1
|
3692
|
+
AllowConsecutiveConditionals: false
|
3438
3693
|
|
3439
3694
|
Style/HashAsLastArrayItem:
|
3440
3695
|
Description: >-
|
@@ -3450,6 +3705,7 @@ Style/HashAsLastArrayItem:
|
|
3450
3705
|
|
3451
3706
|
Style/HashConversion:
|
3452
3707
|
Description: 'Avoid Hash[] in favor of ary.to_h or literal hashes.'
|
3708
|
+
StyleGuide: '#avoid-hash-constructor'
|
3453
3709
|
Enabled: true
|
3454
3710
|
VersionAdded: '1.10'
|
3455
3711
|
VersionChanged: '1.11'
|
@@ -3459,8 +3715,10 @@ Style/HashEachMethods:
|
|
3459
3715
|
Description: 'Use Hash#each_key and Hash#each_value.'
|
3460
3716
|
StyleGuide: '#hash-each'
|
3461
3717
|
Enabled: true
|
3462
|
-
VersionAdded: '0.80'
|
3463
3718
|
Safe: false
|
3719
|
+
VersionAdded: '0.80'
|
3720
|
+
VersionChanged: '1.16'
|
3721
|
+
AllowedReceivers: []
|
3464
3722
|
|
3465
3723
|
Style/HashExcept:
|
3466
3724
|
Description: >-
|
@@ -3486,7 +3744,7 @@ Style/HashSyntax:
|
|
3486
3744
|
StyleGuide: '#hash-literals'
|
3487
3745
|
Enabled: true
|
3488
3746
|
VersionAdded: '0.9'
|
3489
|
-
VersionChanged: '
|
3747
|
+
VersionChanged: '1.24'
|
3490
3748
|
EnforcedStyle: ruby19
|
3491
3749
|
SupportedStyles:
|
3492
3750
|
# checks for 1.9 syntax (e.g. {a: 1}) for all symbol keys
|
@@ -3497,6 +3755,15 @@ Style/HashSyntax:
|
|
3497
3755
|
- no_mixed_keys
|
3498
3756
|
# enforces both ruby19 and no_mixed_keys styles
|
3499
3757
|
- ruby19_no_mixed_keys
|
3758
|
+
# Force hashes that have a hash value omission
|
3759
|
+
EnforcedShorthandSyntax: always
|
3760
|
+
SupportedShorthandSyntax:
|
3761
|
+
# forces use of the 3.1 syntax (e.g. {foo:}) when the hash key and value are the same.
|
3762
|
+
- always
|
3763
|
+
# forces use of explicit hash literal value.
|
3764
|
+
- never
|
3765
|
+
# accepts both shorthand and explicit use of hash literal value.
|
3766
|
+
- either
|
3500
3767
|
# Force hashes that have a symbol value to use hash rockets
|
3501
3768
|
UseHashRocketsWithSymbolValues: false
|
3502
3769
|
# Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
|
@@ -3522,7 +3789,9 @@ Style/IdenticalConditionalBranches:
|
|
3522
3789
|
line at the end of each branch, which can validly be moved
|
3523
3790
|
out of the conditional.
|
3524
3791
|
Enabled: true
|
3792
|
+
SafeAutoCorrect: false
|
3525
3793
|
VersionAdded: '0.36'
|
3794
|
+
VersionChanged: '1.19'
|
3526
3795
|
|
3527
3796
|
Style/IfInsideElse:
|
3528
3797
|
Description: 'Finds if nodes inside else, which can be converted to elsif.'
|
@@ -3569,10 +3838,16 @@ Style/ImplicitRuntimeError:
|
|
3569
3838
|
Enabled: false
|
3570
3839
|
VersionAdded: '0.41'
|
3571
3840
|
|
3841
|
+
Style/InPatternThen:
|
3842
|
+
Description: 'Checks for `in;` uses in `case` expressions.'
|
3843
|
+
StyleGuide: '#no-in-pattern-semicolons'
|
3844
|
+
Enabled: true
|
3845
|
+
VersionAdded: '1.16'
|
3846
|
+
|
3572
3847
|
Style/InfiniteLoop:
|
3573
3848
|
Description: >-
|
3574
3849
|
Use Kernel#loop for infinite loops.
|
3575
|
-
This cop is unsafe
|
3850
|
+
This cop is unsafe if the body may raise a `StopIteration` exception.
|
3576
3851
|
Safe: false
|
3577
3852
|
StyleGuide: '#infinite-loop'
|
3578
3853
|
Enabled: true
|
@@ -3603,8 +3878,8 @@ Style/InverseMethods:
|
|
3603
3878
|
:>: :<=
|
3604
3879
|
# `ActiveSupport` defines some common inverse methods. They are listed below,
|
3605
3880
|
# and not enabled by default.
|
3606
|
-
|
3607
|
-
|
3881
|
+
# :present?: :blank?,
|
3882
|
+
# :include?: :exclude?
|
3608
3883
|
# `InverseBlocks` are methods that are inverted by inverting the return
|
3609
3884
|
# of the block that is passed to the method
|
3610
3885
|
InverseBlocks:
|
@@ -3665,6 +3940,17 @@ Style/LineEndConcatenation:
|
|
3665
3940
|
VersionAdded: '0.18'
|
3666
3941
|
VersionChanged: '0.64'
|
3667
3942
|
|
3943
|
+
Style/MapCompactWithConditionalBlock:
|
3944
|
+
Description: 'Prefer `select` or `reject` over `map { ... }.compact`.'
|
3945
|
+
Enabled: true
|
3946
|
+
VersionAdded: '1.30'
|
3947
|
+
|
3948
|
+
Style/MapToHash:
|
3949
|
+
Description: 'Prefer `to_h` with a block over `map.to_h`.'
|
3950
|
+
Enabled: true
|
3951
|
+
VersionAdded: '1.24'
|
3952
|
+
Safe: false
|
3953
|
+
|
3668
3954
|
Style/MethodCallWithArgsParentheses:
|
3669
3955
|
Description: 'Use parentheses for method calls with arguments.'
|
3670
3956
|
StyleGuide: '#method-invocation-parens'
|
@@ -3673,7 +3959,8 @@ Style/MethodCallWithArgsParentheses:
|
|
3673
3959
|
VersionChanged: '1.7'
|
3674
3960
|
IgnoreMacros: true
|
3675
3961
|
IgnoredMethods: []
|
3676
|
-
|
3962
|
+
AllowedPatterns: []
|
3963
|
+
# IgnoredPatterns: [] # deprecated
|
3677
3964
|
IncludedMacros: []
|
3678
3965
|
AllowParenthesesInMultilineCall: false
|
3679
3966
|
AllowParenthesesInChaining: false
|
@@ -3797,6 +4084,12 @@ Style/MultilineIfThen:
|
|
3797
4084
|
VersionAdded: '0.9'
|
3798
4085
|
VersionChanged: '0.26'
|
3799
4086
|
|
4087
|
+
Style/MultilineInPatternThen:
|
4088
|
+
Description: 'Do not use `then` for multi-line `in` statement.'
|
4089
|
+
StyleGuide: '#no-then'
|
4090
|
+
Enabled: true
|
4091
|
+
VersionAdded: '1.16'
|
4092
|
+
|
3800
4093
|
Style/MultilineMemoization:
|
3801
4094
|
Description: 'Wrap multiline memoizations in a `begin` and `end` block.'
|
3802
4095
|
Enabled: true
|
@@ -3835,6 +4128,7 @@ Style/MultipleComparison:
|
|
3835
4128
|
Enabled: true
|
3836
4129
|
VersionAdded: '0.49'
|
3837
4130
|
VersionChanged: '1.1'
|
4131
|
+
AllowMethodComparison: true
|
3838
4132
|
|
3839
4133
|
Style/MutableConstant:
|
3840
4134
|
Description: 'Do not assign mutable objects to constants.'
|
@@ -3872,7 +4166,7 @@ Style/NegatedIf:
|
|
3872
4166
|
|
3873
4167
|
Style/NegatedIfElseCondition:
|
3874
4168
|
Description: >-
|
3875
|
-
|
4169
|
+
Checks for uses of `if-else` and ternary operators with a negated condition
|
3876
4170
|
which can be simplified by inverting condition and swapping branches.
|
3877
4171
|
Enabled: true
|
3878
4172
|
VersionAdded: '1.2'
|
@@ -3897,6 +4191,11 @@ Style/NegatedWhile:
|
|
3897
4191
|
Enabled: true
|
3898
4192
|
VersionAdded: '0.20'
|
3899
4193
|
|
4194
|
+
Style/NestedFileDirname:
|
4195
|
+
Description: 'Checks for nested `File.dirname`.'
|
4196
|
+
Enabled: true
|
4197
|
+
VersionAdded: '1.26'
|
4198
|
+
|
3900
4199
|
Style/NestedModifier:
|
3901
4200
|
Description: 'Avoid using nested modifiers.'
|
3902
4201
|
StyleGuide: '#no-nested-modifiers'
|
@@ -3968,6 +4267,7 @@ Style/NilLambda:
|
|
3968
4267
|
Description: 'Prefer `-> {}` to `-> { nil }`.'
|
3969
4268
|
Enabled: true
|
3970
4269
|
VersionAdded: '1.3'
|
4270
|
+
VersionChanged: '1.15'
|
3971
4271
|
|
3972
4272
|
Style/NonNilCheck:
|
3973
4273
|
Description: 'Checks for redundant nil checks.'
|
@@ -3990,6 +4290,21 @@ Style/Not:
|
|
3990
4290
|
VersionAdded: '0.9'
|
3991
4291
|
VersionChanged: '0.20'
|
3992
4292
|
|
4293
|
+
Style/NumberedParameters:
|
4294
|
+
Description: 'Restrict the usage of numbered parameters.'
|
4295
|
+
Enabled: true
|
4296
|
+
VersionAdded: '1.22'
|
4297
|
+
EnforcedStyle: allow_single_line
|
4298
|
+
SupportedStyles:
|
4299
|
+
- allow_single_line
|
4300
|
+
- disallow
|
4301
|
+
|
4302
|
+
Style/NumberedParametersLimit:
|
4303
|
+
Description: 'Avoid excessive numbered params in a single block.'
|
4304
|
+
Enabled: true
|
4305
|
+
VersionAdded: '1.22'
|
4306
|
+
Max: 1
|
4307
|
+
|
3993
4308
|
Style/NumericLiteralPrefix:
|
3994
4309
|
Description: 'Use smallcase prefixes for numeric literals.'
|
3995
4310
|
StyleGuide: '#numeric-literal-prefixes'
|
@@ -4000,7 +4315,6 @@ Style/NumericLiteralPrefix:
|
|
4000
4315
|
- zero_with_o
|
4001
4316
|
- zero_only
|
4002
4317
|
|
4003
|
-
|
4004
4318
|
Style/NumericLiterals:
|
4005
4319
|
Description: >-
|
4006
4320
|
Add underscores to large numeric literals to improve their
|
@@ -4011,6 +4325,8 @@ Style/NumericLiterals:
|
|
4011
4325
|
VersionChanged: '0.48'
|
4012
4326
|
MinDigits: 5
|
4013
4327
|
Strict: false
|
4328
|
+
# You can specify allowed numbers. (e.g. port number 3000, 8080, and etc)
|
4329
|
+
AllowedNumbers: []
|
4014
4330
|
|
4015
4331
|
Style/NumericPredicate:
|
4016
4332
|
Description: >-
|
@@ -4035,6 +4351,19 @@ Style/NumericPredicate:
|
|
4035
4351
|
Exclude:
|
4036
4352
|
- 'spec/**/*'
|
4037
4353
|
|
4354
|
+
Style/ObjectThen:
|
4355
|
+
Description: 'Enforces the use of consistent method names `Object#yield_self` or `Object#then`.'
|
4356
|
+
StyleGuide: '#object-yield-self-vs-object-then'
|
4357
|
+
Enabled: true
|
4358
|
+
VersionAdded: '1.28'
|
4359
|
+
# Use `Object#yield_self` or `Object#then`?
|
4360
|
+
# Prefer `Object#yield_self` to `Object#then` (yield_self)
|
4361
|
+
# Prefer `Object#then` to `Object#yield_self` (then)
|
4362
|
+
EnforcedStyle: 'then'
|
4363
|
+
SupportedStyles:
|
4364
|
+
- then
|
4365
|
+
- yield_self
|
4366
|
+
|
4038
4367
|
Style/OneLineConditional:
|
4039
4368
|
Description: >-
|
4040
4369
|
Favor the ternary operator (?:) or multi-line constructs over
|
@@ -4045,6 +4374,16 @@ Style/OneLineConditional:
|
|
4045
4374
|
VersionAdded: '0.9'
|
4046
4375
|
VersionChanged: '0.90'
|
4047
4376
|
|
4377
|
+
Style/OpenStructUse:
|
4378
|
+
Description: >-
|
4379
|
+
Avoid using OpenStruct. As of Ruby 3.0, use is officially discouraged due to performance,
|
4380
|
+
version compatibility, and potential security issues.
|
4381
|
+
Reference:
|
4382
|
+
- https://docs.ruby-lang.org/en/3.0.0/OpenStruct.html#class-OpenStruct-label-Caveats
|
4383
|
+
|
4384
|
+
Enabled: true
|
4385
|
+
VersionAdded: '1.23'
|
4386
|
+
|
4048
4387
|
Style/OptionHash:
|
4049
4388
|
Description: "Don't use option hashes when you can use keyword arguments."
|
4050
4389
|
Enabled: false
|
@@ -4057,6 +4396,7 @@ Style/OptionHash:
|
|
4057
4396
|
- args
|
4058
4397
|
- params
|
4059
4398
|
- parameters
|
4399
|
+
Allowlist: []
|
4060
4400
|
|
4061
4401
|
Style/OptionalArguments:
|
4062
4402
|
Description: >-
|
@@ -4158,6 +4498,16 @@ Style/Proc:
|
|
4158
4498
|
VersionAdded: '0.9'
|
4159
4499
|
VersionChanged: '0.18'
|
4160
4500
|
|
4501
|
+
Style/QuotedSymbols:
|
4502
|
+
Description: 'Use a consistent style for quoted symbols.'
|
4503
|
+
Enabled: true
|
4504
|
+
VersionAdded: '1.16'
|
4505
|
+
EnforcedStyle: same_as_string_literals
|
4506
|
+
SupportedStyles:
|
4507
|
+
- same_as_string_literals
|
4508
|
+
- single_quotes
|
4509
|
+
- double_quotes
|
4510
|
+
|
4161
4511
|
Style/RaiseArgs:
|
4162
4512
|
Description: 'Checks the arguments passed to raise/fail.'
|
4163
4513
|
StyleGuide: '#exception-class-messages'
|
@@ -4255,10 +4605,20 @@ Style/RedundantFreeze:
|
|
4255
4605
|
VersionAdded: '0.34'
|
4256
4606
|
VersionChanged: '0.66'
|
4257
4607
|
|
4608
|
+
Style/RedundantInitialize:
|
4609
|
+
Description: 'Checks for redundant `initialize` methods.'
|
4610
|
+
Enabled: true
|
4611
|
+
Safe: false
|
4612
|
+
AllowComments: true
|
4613
|
+
VersionAdded: '1.27'
|
4614
|
+
VersionChanged: '1.28'
|
4615
|
+
|
4258
4616
|
Style/RedundantInterpolation:
|
4259
4617
|
Description: 'Checks for strings that are just an interpolated expression.'
|
4260
4618
|
Enabled: true
|
4619
|
+
SafeAutoCorrect: false
|
4261
4620
|
VersionAdded: '0.76'
|
4621
|
+
VersionChanged: '1.30'
|
4262
4622
|
|
4263
4623
|
Style/RedundantParentheses:
|
4264
4624
|
Description: "Checks for parentheses that seem not to serve any purpose."
|
@@ -4303,12 +4663,19 @@ Style/RedundantSelfAssignment:
|
|
4303
4663
|
Safe: false
|
4304
4664
|
VersionAdded: '0.90'
|
4305
4665
|
|
4666
|
+
Style/RedundantSelfAssignmentBranch:
|
4667
|
+
Description: 'Checks for places where conditional branch makes redundant self-assignment.'
|
4668
|
+
Enabled: true
|
4669
|
+
VersionAdded: '1.19'
|
4670
|
+
|
4306
4671
|
Style/RedundantSort:
|
4307
4672
|
Description: >-
|
4308
4673
|
Use `min` instead of `sort.first`,
|
4309
4674
|
`max_by` instead of `sort_by...last`, etc.
|
4310
4675
|
Enabled: true
|
4311
4676
|
VersionAdded: '0.76'
|
4677
|
+
VersionChanged: '1.22'
|
4678
|
+
Safe: false
|
4312
4679
|
|
4313
4680
|
Style/RedundantSortBy:
|
4314
4681
|
Description: 'Use `sort` instead of `sort_by { |x| x }`.'
|
@@ -4362,14 +4729,14 @@ Style/ReturnNil:
|
|
4362
4729
|
|
4363
4730
|
Style/SafeNavigation:
|
4364
4731
|
Description: >-
|
4365
|
-
|
4732
|
+
Transforms usages of a method call safeguarded by
|
4366
4733
|
a check for the existence of the object to
|
4367
4734
|
safe navigation (`&.`).
|
4368
|
-
|
4735
|
+
Autocorrection is unsafe as it assumes the object will
|
4369
4736
|
be `nil` or truthy, but never `false`.
|
4370
4737
|
Enabled: true
|
4371
4738
|
VersionAdded: '0.43'
|
4372
|
-
VersionChanged: '
|
4739
|
+
VersionChanged: '1.27'
|
4373
4740
|
# Safe navigation may cause a statement to start returning `nil` in addition
|
4374
4741
|
# to whatever it used to return.
|
4375
4742
|
ConvertCodeThatCanStartToReturnNil: false
|
@@ -4380,6 +4747,8 @@ Style/SafeNavigation:
|
|
4380
4747
|
- try
|
4381
4748
|
- try!
|
4382
4749
|
SafeAutoCorrect: false
|
4750
|
+
# Maximum length of method chains for register an offense.
|
4751
|
+
MaxChainLength: 2
|
4383
4752
|
|
4384
4753
|
Style/Sample:
|
4385
4754
|
Description: >-
|
@@ -4389,6 +4758,12 @@ Style/Sample:
|
|
4389
4758
|
Enabled: true
|
4390
4759
|
VersionAdded: '0.30'
|
4391
4760
|
|
4761
|
+
Style/SelectByRegexp:
|
4762
|
+
Description: 'Prefer grep/grep_v to select/reject with a regexp match.'
|
4763
|
+
Enabled: true
|
4764
|
+
SafeAutoCorrect: false
|
4765
|
+
VersionAdded: '1.22'
|
4766
|
+
|
4392
4767
|
Style/SelfAssignment:
|
4393
4768
|
Description: >-
|
4394
4769
|
Checks for places where self-assignment shorthand should have
|
@@ -4474,10 +4849,12 @@ Style/SpecialGlobalVars:
|
|
4474
4849
|
VersionAdded: '0.13'
|
4475
4850
|
VersionChanged: '0.36'
|
4476
4851
|
SafeAutoCorrect: false
|
4852
|
+
RequireEnglish: true
|
4477
4853
|
EnforcedStyle: use_english_names
|
4478
4854
|
SupportedStyles:
|
4479
4855
|
- use_perl_names
|
4480
4856
|
- use_english_names
|
4857
|
+
- use_builtin_english_names
|
4481
4858
|
|
4482
4859
|
Style/StabbyLambdaParentheses:
|
4483
4860
|
Description: 'Check for the usage of parentheses around stabby lambda arguments.'
|
@@ -4515,7 +4892,8 @@ Style/StringConcatenation:
|
|
4515
4892
|
Enabled: true
|
4516
4893
|
Safe: false
|
4517
4894
|
VersionAdded: '0.89'
|
4518
|
-
VersionChanged: '1.
|
4895
|
+
VersionChanged: '1.18'
|
4896
|
+
Mode: aggressive
|
4519
4897
|
|
4520
4898
|
Style/StringHashKeys:
|
4521
4899
|
Description: 'Prefer symbols instead of strings as hash keys.'
|
@@ -4573,11 +4951,12 @@ Style/StructInheritance:
|
|
4573
4951
|
Description: 'Checks for inheritance from Struct.new.'
|
4574
4952
|
StyleGuide: '#no-extend-struct-new'
|
4575
4953
|
Enabled: true
|
4954
|
+
SafeAutoCorrect: false
|
4576
4955
|
VersionAdded: '0.29'
|
4577
|
-
VersionChanged: '
|
4956
|
+
VersionChanged: '1.20'
|
4578
4957
|
|
4579
4958
|
Style/SwapValues:
|
4580
|
-
Description: '
|
4959
|
+
Description: 'Enforces the use of shorthand-style swapping of 2 variables.'
|
4581
4960
|
StyleGuide: '#values-swapping'
|
4582
4961
|
Enabled: true
|
4583
4962
|
VersionAdded: '1.1'
|
@@ -4605,13 +4984,14 @@ Style/SymbolProc:
|
|
4605
4984
|
Enabled: true
|
4606
4985
|
Safe: false
|
4607
4986
|
VersionAdded: '0.26'
|
4608
|
-
VersionChanged: '1.
|
4987
|
+
VersionChanged: '1.28'
|
4609
4988
|
AllowMethodsWithArguments: false
|
4610
4989
|
# A list of method names to be ignored by the check.
|
4611
4990
|
# The names should be fairly unique, otherwise you'll end up ignoring lots of code.
|
4612
4991
|
IgnoredMethods:
|
4613
4992
|
- respond_to
|
4614
4993
|
- define_method
|
4994
|
+
AllowComments: false
|
4615
4995
|
|
4616
4996
|
Style/TernaryParentheses:
|
4617
4997
|
Description: 'Checks for use of parentheses around ternary conditions.'
|
@@ -4625,6 +5005,12 @@ Style/TernaryParentheses:
|
|
4625
5005
|
- require_parentheses_when_complex
|
4626
5006
|
AllowSafeAssignment: true
|
4627
5007
|
|
5008
|
+
Style/TopLevelMethodDefinition:
|
5009
|
+
Description: 'Looks for top-level method definitions.'
|
5010
|
+
StyleGuide: '#top-level-methods'
|
5011
|
+
Enabled: false
|
5012
|
+
VersionAdded: '1.15'
|
5013
|
+
|
4628
5014
|
Style/TrailingBodyOnClass:
|
4629
5015
|
Description: 'Class body goes below class statement.'
|
4630
5016
|
Enabled: true
|
@@ -4711,7 +5097,7 @@ Style/TrivialAccessors:
|
|
4711
5097
|
StyleGuide: '#attr_family'
|
4712
5098
|
Enabled: true
|
4713
5099
|
VersionAdded: '0.9'
|
4714
|
-
VersionChanged: '
|
5100
|
+
VersionChanged: '1.15'
|
4715
5101
|
# When set to `false` the cop will suggest the use of accessor methods
|
4716
5102
|
# in situations like:
|
4717
5103
|
#
|
@@ -4730,7 +5116,7 @@ Style/TrivialAccessors:
|
|
4730
5116
|
# on_exception :restart
|
4731
5117
|
#
|
4732
5118
|
# Commonly used in DSLs
|
4733
|
-
AllowDSLWriters:
|
5119
|
+
AllowDSLWriters: true
|
4734
5120
|
IgnoreClassMethods: false
|
4735
5121
|
AllowedMethods:
|
4736
5122
|
- to_ary
|
@@ -4787,7 +5173,7 @@ Style/VariableInterpolation:
|
|
4787
5173
|
|
4788
5174
|
Style/WhenThen:
|
4789
5175
|
Description: 'Use when x then ... for one-line cases.'
|
4790
|
-
StyleGuide: '#
|
5176
|
+
StyleGuide: '#no-when-semicolons'
|
4791
5177
|
Enabled: true
|
4792
5178
|
VersionAdded: '0.9'
|
4793
5179
|
|
@@ -4811,7 +5197,7 @@ Style/WordArray:
|
|
4811
5197
|
StyleGuide: '#percent-w'
|
4812
5198
|
Enabled: false
|
4813
5199
|
VersionAdded: '0.9'
|
4814
|
-
VersionChanged: '
|
5200
|
+
VersionChanged: '1.19'
|
4815
5201
|
EnforcedStyle: percent
|
4816
5202
|
SupportedStyles:
|
4817
5203
|
# percent style: %w(word1 word2)
|