rubocop 0.71.0 → 0.72.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -8
  3. data/config/default.yml +42 -484
  4. data/lib/rubocop.rb +5 -53
  5. data/lib/rubocop/ast/builder.rb +2 -0
  6. data/lib/rubocop/ast/node.rb +1 -1
  7. data/lib/rubocop/ast/node/float_node.rb +12 -0
  8. data/lib/rubocop/ast/node/int_node.rb +12 -0
  9. data/lib/rubocop/ast/node/mixin/numeric_node.rb +21 -0
  10. data/lib/rubocop/ast/node/resbody_node.rb +1 -6
  11. data/lib/rubocop/cached_data.rb +1 -1
  12. data/lib/rubocop/config.rb +34 -5
  13. data/lib/rubocop/config_loader.rb +2 -6
  14. data/lib/rubocop/config_loader_resolver.rb +0 -14
  15. data/lib/rubocop/cop/cop.rb +0 -4
  16. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +55 -0
  17. data/lib/rubocop/cop/layout/class_structure.rb +1 -1
  18. data/lib/rubocop/cop/layout/indent_first_argument.rb +6 -2
  19. data/lib/rubocop/cop/layout/indent_first_parameter.rb +7 -3
  20. data/lib/rubocop/cop/layout/indent_heredoc.rb +0 -1
  21. data/lib/rubocop/cop/layout/indentation_consistency.rb +13 -12
  22. data/lib/rubocop/cop/layout/indentation_width.rb +8 -4
  23. data/lib/rubocop/cop/lint/number_conversion.rb +1 -1
  24. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +21 -20
  25. data/lib/rubocop/cop/style/commented_keyword.rb +1 -1
  26. data/lib/rubocop/cop/style/conditional_assignment.rb +2 -1
  27. data/lib/rubocop/cop/style/float_division.rb +94 -0
  28. data/lib/rubocop/cop/style/format_string.rb +7 -3
  29. data/lib/rubocop/cop/style/if_inside_else.rb +42 -0
  30. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -1
  31. data/lib/rubocop/cop/style/safe_navigation.rb +1 -1
  32. data/lib/rubocop/cop/style/ternary_parentheses.rb +12 -2
  33. data/lib/rubocop/cop/style/word_array.rb +2 -2
  34. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
  35. data/lib/rubocop/options.rb +0 -2
  36. data/lib/rubocop/processed_source.rb +2 -1
  37. data/lib/rubocop/rspec/cop_helper.rb +0 -1
  38. data/lib/rubocop/rspec/shared_contexts.rb +0 -17
  39. data/lib/rubocop/rspec/support.rb +0 -1
  40. data/lib/rubocop/runner.rb +0 -17
  41. data/lib/rubocop/version.rb +1 -1
  42. data/lib/rubocop/yaml_duplication_checker.rb +8 -2
  43. metadata +8 -91
  44. data/lib/rubocop/cop/mixin/target_rails_version.rb +0 -16
  45. data/lib/rubocop/cop/rails/action_filter.rb +0 -117
  46. data/lib/rubocop/cop/rails/active_record_aliases.rb +0 -48
  47. data/lib/rubocop/cop/rails/active_record_override.rb +0 -82
  48. data/lib/rubocop/cop/rails/active_support_aliases.rb +0 -69
  49. data/lib/rubocop/cop/rails/application_job.rb +0 -40
  50. data/lib/rubocop/cop/rails/application_record.rb +0 -40
  51. data/lib/rubocop/cop/rails/assert_not.rb +0 -44
  52. data/lib/rubocop/cop/rails/belongs_to.rb +0 -102
  53. data/lib/rubocop/cop/rails/blank.rb +0 -164
  54. data/lib/rubocop/cop/rails/bulk_change_table.rb +0 -289
  55. data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +0 -91
  56. data/lib/rubocop/cop/rails/date.rb +0 -161
  57. data/lib/rubocop/cop/rails/delegate.rb +0 -132
  58. data/lib/rubocop/cop/rails/delegate_allow_blank.rb +0 -37
  59. data/lib/rubocop/cop/rails/dynamic_find_by.rb +0 -91
  60. data/lib/rubocop/cop/rails/enum_uniqueness.rb +0 -45
  61. data/lib/rubocop/cop/rails/environment_comparison.rb +0 -68
  62. data/lib/rubocop/cop/rails/exit.rb +0 -67
  63. data/lib/rubocop/cop/rails/file_path.rb +0 -108
  64. data/lib/rubocop/cop/rails/find_by.rb +0 -55
  65. data/lib/rubocop/cop/rails/find_each.rb +0 -51
  66. data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +0 -25
  67. data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +0 -106
  68. data/lib/rubocop/cop/rails/http_positional_arguments.rb +0 -117
  69. data/lib/rubocop/cop/rails/http_status.rb +0 -179
  70. data/lib/rubocop/cop/rails/ignored_skip_action_filter_option.rb +0 -94
  71. data/lib/rubocop/cop/rails/inverse_of.rb +0 -246
  72. data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +0 -175
  73. data/lib/rubocop/cop/rails/link_to_blank.rb +0 -98
  74. data/lib/rubocop/cop/rails/not_null_column.rb +0 -67
  75. data/lib/rubocop/cop/rails/output.rb +0 -49
  76. data/lib/rubocop/cop/rails/output_safety.rb +0 -99
  77. data/lib/rubocop/cop/rails/pluralization_grammar.rb +0 -107
  78. data/lib/rubocop/cop/rails/presence.rb +0 -124
  79. data/lib/rubocop/cop/rails/present.rb +0 -153
  80. data/lib/rubocop/cop/rails/read_write_attribute.rb +0 -74
  81. data/lib/rubocop/cop/rails/redundant_allow_nil.rb +0 -111
  82. data/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +0 -136
  83. data/lib/rubocop/cop/rails/reflection_class_name.rb +0 -37
  84. data/lib/rubocop/cop/rails/refute_methods.rb +0 -76
  85. data/lib/rubocop/cop/rails/relative_date_constant.rb +0 -93
  86. data/lib/rubocop/cop/rails/request_referer.rb +0 -56
  87. data/lib/rubocop/cop/rails/reversible_migration.rb +0 -286
  88. data/lib/rubocop/cop/rails/safe_navigation.rb +0 -87
  89. data/lib/rubocop/cop/rails/save_bang.rb +0 -316
  90. data/lib/rubocop/cop/rails/scope_args.rb +0 -29
  91. data/lib/rubocop/cop/rails/skips_model_validations.rb +0 -87
  92. data/lib/rubocop/cop/rails/time_zone.rb +0 -238
  93. data/lib/rubocop/cop/rails/uniq_before_pluck.rb +0 -105
  94. data/lib/rubocop/cop/rails/unknown_env.rb +0 -63
  95. data/lib/rubocop/cop/rails/validation.rb +0 -109
  96. data/lib/rubocop/rspec/shared_examples.rb +0 -59
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cbaa6a7da185f890ae7fbe520da9e4a7c701526c6b59128434a7a4a305706aa5
4
- data.tar.gz: 3f040c8c4f0e0325f79327767e254b4367488740ceeb42e7ed11a837f12b7dee
3
+ metadata.gz: eba7ed97b0ff87530eaaac338ed31f332f89dd4c86ca8afc3046d8141d3f1c03
4
+ data.tar.gz: 23a2c2e2c59efb26294495c94b33e1849feef60b8afe26e98064ff01e98cbccf
5
5
  SHA512:
6
- metadata.gz: 604bb0adb5459672c490398a4599274f02ec7fa5669ab2caadee7f6178c53b3d3622114fb9faffd767ddf4ec2c8e62023069657f1acd42c587aa1e1d5cd8431e
7
- data.tar.gz: 6a9413fd59a1e9d2ce3f016c54a481ef758fb441bb16af29e6d86b43a18e7daa39f1306618bdd7168552af91064c065e70c381813c8489670d1137151944eaef
6
+ metadata.gz: 72a13a6ca2580bc1613ee8cb5a2432f564fb6f53f68558bd716046d4f5c28b73a57535d9eb4c96542f9cbaa5f29ee1226ec71e1b66a342ac4810106b69f3ef5d
7
+ data.tar.gz: aa480f20807bf7d31c878eeade72cf09a4963174b7490738f77cc8a8cf5a59b2a40b2f20dbc969719863aed1c672136ef32b7173f5d231c3f387dc25a62f77ac
data/README.md CHANGED
@@ -20,7 +20,7 @@
20
20
  **RuboCop** is a Ruby static code analyzer and code formatter. Out of
21
21
  the box it will enforce many of the guidelines outlined in the
22
22
  community [Ruby Style
23
- Guide](https://github.com/rubocop-hq/ruby-style-guide).
23
+ Guide](https://rubystyle.guide).
24
24
 
25
25
  RuboCop is extremely flexible and most aspects of its behavior can be tweaked via various
26
26
  [configuration options](https://github.com/rubocop-hq/rubocop/blob/master/config/default.yml).
@@ -52,7 +52,7 @@ haven't reached version 1.0 yet). To prevent an unwanted RuboCop update you
52
52
  might want to use a conservative version lock in your `Gemfile`:
53
53
 
54
54
  ```rb
55
- gem 'rubocop', '~> 0.71.0', require: false
55
+ gem 'rubocop', '~> 0.72.0', require: false
56
56
  ```
57
57
 
58
58
  ## Quickstart
@@ -64,9 +64,9 @@ $ cd my/cool/ruby/project
64
64
  $ rubocop
65
65
  ```
66
66
 
67
- ## Official manual
67
+ ## Documentation
68
68
 
69
- You can read a ton more about RuboCop in its [official manual](https://docs.rubocop.org).
69
+ You can read a lot more about RuboCop in its [official docs](https://docs.rubocop.org).
70
70
 
71
71
  ## Compatibility
72
72
 
@@ -75,10 +75,6 @@ RuboCop supports the following Ruby implementations:
75
75
  * MRI 2.3+
76
76
  * JRuby 9.1+
77
77
 
78
- The Rails cops support the following versions:
79
-
80
- * Rails 4.0+
81
-
82
78
  ## Team
83
79
 
84
80
  Here's a list of RuboCop's core developers:
@@ -73,7 +73,7 @@ AllCops:
73
73
  DisplayStyleGuide: false
74
74
  # When specifying style guide URLs, any paths and/or fragments will be
75
75
  # evaluated relative to the base URL.
76
- StyleGuideBaseURL: https://github.com/rubocop-hq/ruby-style-guide
76
+ StyleGuideBaseURL: https://rubystyle.guide
77
77
  # Extra details are not displayed in offense messages by default. Change
78
78
  # behavior by overriding ExtraDetails, or by giving the
79
79
  # `-E/--extra-details` option.
@@ -125,14 +125,6 @@ AllCops:
125
125
  # from the lock file.) If the Ruby version is still unresolved, RuboCop will
126
126
  # use the oldest officially supported Ruby version (currently Ruby 2.3).
127
127
  TargetRubyVersion: ~
128
- # What version of Rails is the inspected code using? If a value is specified
129
- # for TargetRailsVersion then it is used. Acceptable values are specificed
130
- # as a float (i.e. 5.1); the patch version of Rails should not be included.
131
- # If TargetRailsVersion is not set, RuboCop will parse the Gemfile.lock or
132
- # gems.locked file to find the version of Rails that has been bound to the
133
- # application. If neither of those files exist, RuboCop will use Rails 5.0
134
- # as the default.
135
- TargetRailsVersion: ~
136
128
 
137
129
  #################### Bundler ###############################
138
130
 
@@ -203,6 +195,13 @@ Gemspec/RequiredRubyVersion:
203
195
  VersionAdded: '0.52'
204
196
  Include:
205
197
  - '**/*.gemspec'
198
+ -
199
+ Gemspec/RubyVersionGlobalsUsage:
200
+ Description: Checks usage of RUBY_VERSION in gemspec.
201
+ Enabled: true
202
+ VersionAdded: '0.72'
203
+ Include:
204
+ - '**/*.gemspec'
206
205
 
207
206
  #################### Layout ###########################
208
207
 
@@ -778,8 +777,8 @@ Layout/IndentationConsistency:
778
777
  StyleGuide: '#spaces-indentation'
779
778
  Enabled: true
780
779
  VersionAdded: '0.49'
781
- # The difference between `rails` and `normal` is that the `rails` style
782
- # prescribes that in classes and modules the `protected` and `private`
780
+ # The difference between `indented` and `normal` is that the `indented_internal_methods`
781
+ # style prescribes that in classes and modules the `protected` and `private`
783
782
  # modifier keywords shall be indented the same as public methods and that
784
783
  # protected and private members shall be indented one step more than the
785
784
  # modifiers. Other than that, both styles mean that entities on the same
@@ -787,9 +786,9 @@ Layout/IndentationConsistency:
787
786
  EnforcedStyle: normal
788
787
  SupportedStyles:
789
788
  - normal
790
- - rails
789
+ - indented_internal_methods
791
790
  Reference:
792
- # A reference to `EnforcedStyle: rails`.
791
+ # A reference to `EnforcedStyle: indented_internal_methods`.
793
792
  - https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#follow-the-coding-conventions
794
793
 
795
794
  Layout/IndentationWidth:
@@ -1349,7 +1348,7 @@ Lint/ErbNewArguments:
1349
1348
  VersionAdded: '0.56'
1350
1349
 
1351
1350
  Lint/FlipFlop:
1352
- Description: 'Checks for flip-flops'
1351
+ Description: 'Checks for flip-flops.'
1353
1352
  StyleGuide: '#no-flip-flops'
1354
1353
  Enabled: true
1355
1354
  VersionAdded: '0.16'
@@ -1407,7 +1406,7 @@ Lint/InheritException:
1407
1406
  - standard_error
1408
1407
 
1409
1408
  Lint/InterpolationCheck:
1410
- Description: 'Raise warning for interpolation in single q strs'
1409
+ Description: 'Raise warning for interpolation in single q strs.'
1411
1410
  Enabled: true
1412
1411
  VersionAdded: '0.50'
1413
1412
 
@@ -1431,7 +1430,7 @@ Lint/Loop:
1431
1430
  VersionAdded: '0.9'
1432
1431
 
1433
1432
  Lint/MissingCopEnableDirective:
1434
- Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`'
1433
+ Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`.'
1435
1434
  Enabled: true
1436
1435
  VersionAdded: '0.52'
1437
1436
  # Maximum number of consecutive lines the cop can be disabled for.
@@ -1619,7 +1618,7 @@ Lint/StringConversionInInterpolation:
1619
1618
  VersionChanged: '0.20'
1620
1619
 
1621
1620
  Lint/Syntax:
1622
- Description: 'Checks syntax error'
1621
+ Description: 'Checks syntax error.'
1623
1622
  Enabled: true
1624
1623
  VersionAdded: '0.9'
1625
1624
 
@@ -1635,7 +1634,7 @@ Lint/UnderscorePrefixedVariableName:
1635
1634
  AllowKeywordBlockArguments: false
1636
1635
 
1637
1636
  Lint/UnifiedInteger:
1638
- Description: 'Use Integer instead of Fixnum or Bignum'
1637
+ Description: 'Use Integer instead of Fixnum or Bignum.'
1639
1638
  Enabled: true
1640
1639
  VersionAdded: '0.43'
1641
1640
 
@@ -1658,7 +1657,7 @@ Lint/UnneededRequireStatement:
1658
1657
  VersionAdded: '0.51'
1659
1658
 
1660
1659
  Lint/UnneededSplatExpansion:
1661
- Description: 'Checks for splat unnecessarily being called on literals'
1660
+ Description: 'Checks for splat unnecessarily being called on literals.'
1662
1661
  Enabled: true
1663
1662
  VersionAdded: '0.43'
1664
1663
 
@@ -1767,7 +1766,7 @@ Metrics/BlockLength:
1767
1766
  - '**/*.gemspec'
1768
1767
 
1769
1768
  Metrics/BlockNesting:
1770
- Description: 'Avoid excessive block nesting'
1769
+ Description: 'Avoid excessive block nesting.'
1771
1770
  StyleGuide: '#three-is-the-number-thou-shalt-count'
1772
1771
  Enabled: true
1773
1772
  VersionAdded: '0.25'
@@ -2078,461 +2077,6 @@ Naming/VariableNumber:
2078
2077
  - normalcase
2079
2078
  - non_integer
2080
2079
 
2081
- #################### Rails #################################
2082
-
2083
- # By default, the rails cops are not run. Override in project or home
2084
- # directory .rubocop.yml files, or by giving the -R/--rails option.
2085
- Rails:
2086
- Enabled: false
2087
-
2088
- Rails/ActionFilter:
2089
- Description: 'Enforces consistent use of action filter methods.'
2090
- Enabled: true
2091
- VersionAdded: '0.19'
2092
- EnforcedStyle: action
2093
- SupportedStyles:
2094
- - action
2095
- - filter
2096
- Include:
2097
- - app/controllers/**/*.rb
2098
-
2099
- Rails/ActiveRecordAliases:
2100
- Description: >-
2101
- Avoid Active Record aliases:
2102
- Use `update` instead of `update_attributes`.
2103
- Use `update!` instead of `update_attributes!`.
2104
- Enabled: true
2105
- VersionAdded: '0.53'
2106
-
2107
- Rails/ActiveRecordOverride:
2108
- Description: >-
2109
- Check for overriding Active Record methods instead of using
2110
- callbacks.
2111
- Enabled: true
2112
- VersionAdded: '0.67'
2113
- Include:
2114
- - app/models/**/*.rb
2115
-
2116
- Rails/ActiveSupportAliases:
2117
- Description: >-
2118
- Avoid ActiveSupport aliases of standard ruby methods:
2119
- `String#starts_with?`, `String#ends_with?`,
2120
- `Array#append`, `Array#prepend`.
2121
- Enabled: true
2122
- VersionAdded: '0.48'
2123
-
2124
- Rails/ApplicationJob:
2125
- Description: 'Check that jobs subclass ApplicationJob.'
2126
- Enabled: true
2127
- VersionAdded: '0.49'
2128
-
2129
- Rails/ApplicationRecord:
2130
- Description: 'Check that models subclass ApplicationRecord.'
2131
- Enabled: true
2132
- VersionAdded: '0.49'
2133
-
2134
- Rails/AssertNot:
2135
- Description: 'Use `assert_not` instead of `assert !`.'
2136
- Enabled: true
2137
- VersionAdded: '0.56'
2138
- Include:
2139
- - '**/test/**/*'
2140
-
2141
- Rails/BelongsTo:
2142
- Description: >-
2143
- Use `optional: true` instead of `required: false` for
2144
- `belongs_to` relations'
2145
- Enabled: true
2146
- VersionAdded: '0.62'
2147
-
2148
- Rails/Blank:
2149
- Description: 'Enforces use of `blank?`.'
2150
- Enabled: true
2151
- VersionAdded: '0.48'
2152
- VersionChanged: '0.67'
2153
- # Convert usages of `nil? || empty?` to `blank?`
2154
- NilOrEmpty: true
2155
- # Convert usages of `!present?` to `blank?`
2156
- NotPresent: true
2157
- # Convert usages of `unless present?` to `if blank?`
2158
- UnlessPresent: true
2159
-
2160
- Rails/BulkChangeTable:
2161
- Description: 'Check whether alter queries are combinable.'
2162
- Enabled: true
2163
- VersionAdded: '0.57'
2164
- Database: null
2165
- SupportedDatabases:
2166
- - mysql
2167
- - postgresql
2168
- Include:
2169
- - db/migrate/*.rb
2170
-
2171
- Rails/CreateTableWithTimestamps:
2172
- Description: >-
2173
- Checks the migration for which timestamps are not included
2174
- when creating a new table.
2175
- Enabled: true
2176
- VersionAdded: '0.52'
2177
- Include:
2178
- - db/migrate/*.rb
2179
-
2180
- Rails/Date:
2181
- Description: >-
2182
- Checks the correct usage of date aware methods,
2183
- such as Date.today, Date.current etc.
2184
- Enabled: true
2185
- VersionAdded: '0.30'
2186
- VersionChanged: '0.33'
2187
- # The value `strict` disallows usage of `Date.today`, `Date.current`,
2188
- # `Date#to_time` etc.
2189
- # The value `flexible` allows usage of `Date.current`, `Date.yesterday`, etc
2190
- # (but not `Date.today`) which are overridden by ActiveSupport to handle current
2191
- # time zone.
2192
- EnforcedStyle: flexible
2193
- SupportedStyles:
2194
- - strict
2195
- - flexible
2196
-
2197
- Rails/Delegate:
2198
- Description: 'Prefer delegate method for delegations.'
2199
- Enabled: true
2200
- VersionAdded: '0.21'
2201
- VersionChanged: '0.50'
2202
- # When set to true, using the target object as a prefix of the
2203
- # method name without using the `delegate` method will be a
2204
- # violation. When set to false, this case is legal.
2205
- EnforceForPrefixed: true
2206
-
2207
- Rails/DelegateAllowBlank:
2208
- Description: 'Do not use allow_blank as an option to delegate.'
2209
- Enabled: true
2210
- VersionAdded: '0.44'
2211
-
2212
- Rails/DynamicFindBy:
2213
- Description: 'Use `find_by` instead of dynamic `find_by_*`.'
2214
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#find_by'
2215
- Enabled: true
2216
- VersionAdded: '0.44'
2217
- Whitelist:
2218
- - find_by_sql
2219
-
2220
- Rails/EnumUniqueness:
2221
- Description: 'Avoid duplicate integers in hash-syntax `enum` declaration.'
2222
- Enabled: true
2223
- VersionAdded: '0.46'
2224
- Include:
2225
- - app/models/**/*.rb
2226
-
2227
- Rails/EnvironmentComparison:
2228
- Description: "Favor `Rails.env.production?` over `Rails.env == 'production'`"
2229
- Enabled: true
2230
- VersionAdded: '0.52'
2231
-
2232
- Rails/Exit:
2233
- Description: >-
2234
- Favor `fail`, `break`, `return`, etc. over `exit` in
2235
- application or library code outside of Rake files to avoid
2236
- exits during unit testing or running in production.
2237
- Enabled: true
2238
- VersionAdded: '0.41'
2239
- Include:
2240
- - app/**/*.rb
2241
- - config/**/*.rb
2242
- - lib/**/*.rb
2243
- Exclude:
2244
- - lib/**/*.rake
2245
-
2246
- Rails/FilePath:
2247
- Description: 'Use `Rails.root.join` for file path joining.'
2248
- Enabled: true
2249
- VersionAdded: '0.47'
2250
- VersionChanged: '0.57'
2251
- EnforcedStyle: arguments
2252
- SupportedStyles:
2253
- - slashes
2254
- - arguments
2255
-
2256
- Rails/FindBy:
2257
- Description: 'Prefer find_by over where.first.'
2258
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#find_by'
2259
- Enabled: true
2260
- VersionAdded: '0.30'
2261
- Include:
2262
- - app/models/**/*.rb
2263
-
2264
- Rails/FindEach:
2265
- Description: 'Prefer all.find_each over all.find.'
2266
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#find-each'
2267
- Enabled: true
2268
- VersionAdded: '0.30'
2269
- Include:
2270
- - app/models/**/*.rb
2271
-
2272
- Rails/HasAndBelongsToMany:
2273
- Description: 'Prefer has_many :through to has_and_belongs_to_many.'
2274
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#has-many-through'
2275
- Enabled: true
2276
- VersionAdded: '0.12'
2277
- Include:
2278
- - app/models/**/*.rb
2279
-
2280
- Rails/HasManyOrHasOneDependent:
2281
- Description: 'Define the dependent option to the has_many and has_one associations.'
2282
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#has_many-has_one-dependent-option'
2283
- Enabled: true
2284
- VersionAdded: '0.50'
2285
- Include:
2286
- - app/models/**/*.rb
2287
-
2288
- Rails/HttpPositionalArguments:
2289
- Description: 'Use keyword arguments instead of positional arguments in http method calls.'
2290
- Enabled: true
2291
- VersionAdded: '0.44'
2292
- Include:
2293
- - 'spec/**/*'
2294
- - 'test/**/*'
2295
-
2296
- Rails/HttpStatus:
2297
- Description: 'Enforces use of symbolic or numeric value to define HTTP status.'
2298
- Enabled: true
2299
- VersionAdded: '0.54'
2300
- EnforcedStyle: symbolic
2301
- SupportedStyles:
2302
- - numeric
2303
- - symbolic
2304
-
2305
- Rails/IgnoredSkipActionFilterOption:
2306
- Description: 'Checks that `if` and `only` (or `except`) are not used together as options of `skip_*` action filter.'
2307
- Reference: 'https://api.rubyonrails.org/classes/AbstractController/Callbacks/ClassMethods.html#method-i-_normalize_callback_options'
2308
- Enabled: true
2309
- VersionAdded: '0.63'
2310
- Include:
2311
- - app/controllers/**/*.rb
2312
-
2313
- Rails/InverseOf:
2314
- Description: 'Checks for associations where the inverse cannot be determined automatically.'
2315
- Enabled: true
2316
- VersionAdded: '0.52'
2317
- Include:
2318
- - app/models/**/*.rb
2319
-
2320
- Rails/LexicallyScopedActionFilter:
2321
- Description: "Checks that methods specified in the filter's `only` or `except` options are explicitly defined in the controller."
2322
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#lexically-scoped-action-filter'
2323
- Enabled: true
2324
- Safe: false
2325
- VersionAdded: '0.52'
2326
- Include:
2327
- - app/controllers/**/*.rb
2328
-
2329
- Rails/LinkToBlank:
2330
- Description: 'Checks that `link_to` with a `target: "_blank"` have a `rel: "noopener"` option passed to them.'
2331
- Reference:
2332
- - https://mathiasbynens.github.io/rel-noopener/
2333
- - https://html.spec.whatwg.org/multipage/links.html#link-type-noopener
2334
- - https://html.spec.whatwg.org/multipage/links.html#link-type-noreferrer
2335
- Enabled: true
2336
- VersionAdded: '0.62'
2337
-
2338
- Rails/NotNullColumn:
2339
- Description: 'Do not add a NOT NULL column without a default value'
2340
- Enabled: true
2341
- VersionAdded: '0.43'
2342
- Include:
2343
- - db/migrate/*.rb
2344
-
2345
- Rails/Output:
2346
- Description: 'Checks for calls to puts, print, etc.'
2347
- Enabled: true
2348
- VersionAdded: '0.15'
2349
- VersionChanged: '0.19'
2350
- Include:
2351
- - app/**/*.rb
2352
- - config/**/*.rb
2353
- - db/**/*.rb
2354
- - lib/**/*.rb
2355
-
2356
- Rails/OutputSafety:
2357
- Description: 'The use of `html_safe` or `raw` may be a security risk.'
2358
- Enabled: true
2359
- VersionAdded: '0.41'
2360
-
2361
- Rails/PluralizationGrammar:
2362
- Description: 'Checks for incorrect grammar when using methods like `3.day.ago`.'
2363
- Enabled: true
2364
- VersionAdded: '0.35'
2365
-
2366
- Rails/Presence:
2367
- Description: 'Checks code that can be written more easily using `Object#presence` defined by Active Support.'
2368
- Enabled: true
2369
- VersionAdded: '0.52'
2370
-
2371
- Rails/Present:
2372
- Description: 'Enforces use of `present?`.'
2373
- Enabled: true
2374
- VersionAdded: '0.48'
2375
- VersionChanged: '0.67'
2376
- # Convert usages of `!nil? && !empty?` to `present?`
2377
- NotNilAndNotEmpty: true
2378
- # Convert usages of `!blank?` to `present?`
2379
- NotBlank: true
2380
- # Convert usages of `unless blank?` to `if present?`
2381
- UnlessBlank: true
2382
-
2383
- Rails/ReadWriteAttribute:
2384
- Description: >-
2385
- Checks for read_attribute(:attr) and
2386
- write_attribute(:attr, val).
2387
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#read-attribute'
2388
- Enabled: true
2389
- VersionAdded: '0.20'
2390
- VersionChanged: '0.29'
2391
- Include:
2392
- - app/models/**/*.rb
2393
-
2394
- Rails/RedundantAllowNil:
2395
- Description: >-
2396
- Finds redundant use of `allow_nil` when `allow_blank` is set to
2397
- certain values in model validations.
2398
- Enabled: true
2399
- VersionAdded: '0.67'
2400
- Include:
2401
- - app/models/**/*.rb
2402
-
2403
- Rails/RedundantReceiverInWithOptions:
2404
- Description: 'Checks for redundant receiver in `with_options`.'
2405
- Enabled: true
2406
- VersionAdded: '0.52'
2407
-
2408
- Rails/ReflectionClassName:
2409
- Description: 'Use a string for `class_name` option value in the definition of a reflection.'
2410
- Enabled: true
2411
- VersionAdded: '0.64'
2412
-
2413
- Rails/RefuteMethods:
2414
- Description: 'Use `assert_not` methods instead of `refute` methods.'
2415
- Enabled: true
2416
- VersionAdded: '0.56'
2417
- Include:
2418
- - '**/test/**/*'
2419
-
2420
- Rails/RelativeDateConstant:
2421
- Description: 'Do not assign relative date to constants.'
2422
- Enabled: true
2423
- VersionAdded: '0.48'
2424
- VersionChanged: '0.59'
2425
- AutoCorrect: false
2426
-
2427
- Rails/RequestReferer:
2428
- Description: 'Use consistent syntax for request.referer.'
2429
- Enabled: true
2430
- VersionAdded: '0.41'
2431
- EnforcedStyle: referer
2432
- SupportedStyles:
2433
- - referer
2434
- - referrer
2435
-
2436
- Rails/ReversibleMigration:
2437
- Description: 'Checks whether the change method of the migration file is reversible.'
2438
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#reversible-migration'
2439
- Reference: 'https://api.rubyonrails.org/classes/ActiveRecord/Migration/CommandRecorder.html'
2440
- Enabled: true
2441
- VersionAdded: '0.47'
2442
- Include:
2443
- - db/migrate/*.rb
2444
-
2445
- Rails/SafeNavigation:
2446
- Description: "Use Ruby's safe navigation operator (`&.`) instead of `try!`"
2447
- Enabled: true
2448
- VersionAdded: '0.43'
2449
- # This will convert usages of `try` to use safe navigation as well as `try!`.
2450
- # `try` and `try!` work slightly differently. `try!` and safe navigation will
2451
- # both raise a `NoMethodError` if the receiver of the method call does not
2452
- # implement the intended method. `try` will not raise an exception for this.
2453
- ConvertTry: false
2454
-
2455
- Rails/SaveBang:
2456
- Description: 'Identifies possible cases where Active Record save! or related should be used.'
2457
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#save-bang'
2458
- Enabled: false
2459
- VersionAdded: '0.42'
2460
- VersionChanged: '0.59'
2461
- AllowImplicitReturn: true
2462
- AllowedReceivers: []
2463
-
2464
- Rails/ScopeArgs:
2465
- Description: 'Checks the arguments of ActiveRecord scopes.'
2466
- Enabled: true
2467
- VersionAdded: '0.19'
2468
- Include:
2469
- - app/models/**/*.rb
2470
-
2471
- Rails/SkipsModelValidations:
2472
- Description: >-
2473
- Use methods that skips model validations with caution.
2474
- See reference for more information.
2475
- Reference: 'https://guides.rubyonrails.org/active_record_validations.html#skipping-validations'
2476
- Enabled: true
2477
- VersionAdded: '0.47'
2478
- VersionChanged: '0.60'
2479
- Blacklist:
2480
- - decrement!
2481
- - decrement_counter
2482
- - increment!
2483
- - increment_counter
2484
- - toggle!
2485
- - touch
2486
- - update_all
2487
- - update_attribute
2488
- - update_column
2489
- - update_columns
2490
- - update_counters
2491
- Whitelist: []
2492
-
2493
- Rails/TimeZone:
2494
- Description: 'Checks the correct usage of time zone aware methods.'
2495
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#time'
2496
- Reference: 'http://danilenko.org/2012/7/6/rails_timezones'
2497
- Enabled: true
2498
- Safe: false
2499
- VersionAdded: '0.30'
2500
- VersionChanged: '0.68'
2501
- # The value `strict` means that `Time` should be used with `zone`.
2502
- # The value `flexible` allows usage of `in_time_zone` instead of `zone`.
2503
- EnforcedStyle: flexible
2504
- SupportedStyles:
2505
- - strict
2506
- - flexible
2507
-
2508
- Rails/UniqBeforePluck:
2509
- Description: 'Prefer the use of uniq or distinct before pluck.'
2510
- Enabled: true
2511
- VersionAdded: '0.40'
2512
- VersionChanged: '0.47'
2513
- EnforcedStyle: conservative
2514
- SupportedStyles:
2515
- - conservative
2516
- - aggressive
2517
- AutoCorrect: false
2518
-
2519
- Rails/UnknownEnv:
2520
- Description: 'Use correct environment name.'
2521
- Enabled: true
2522
- VersionAdded: '0.51'
2523
- Environments:
2524
- - development
2525
- - test
2526
- - production
2527
-
2528
- Rails/Validation:
2529
- Description: 'Use validates :attribute, hash of validations.'
2530
- Enabled: true
2531
- VersionAdded: '0.9'
2532
- VersionChanged: '0.41'
2533
- Include:
2534
- - app/models/**/*.rb
2535
-
2536
2080
  #################### Security ##############################
2537
2081
 
2538
2082
  Security/Eval:
@@ -2589,7 +2133,7 @@ Style/AccessModifierDeclarations:
2589
2133
 
2590
2134
  Style/Alias:
2591
2135
  Description: 'Use alias instead of alias_method.'
2592
- StyleGuide: '#alias-method'
2136
+ StyleGuide: '#alias-method-lexically'
2593
2137
  Enabled: true
2594
2138
  VersionAdded: '0.9'
2595
2139
  VersionChanged: '0.36'
@@ -3095,7 +2639,7 @@ Style/EvalWithLocation:
3095
2639
  VersionAdded: '0.52'
3096
2640
 
3097
2641
  Style/EvenOdd:
3098
- Description: 'Favor the use of Integer#even? && Integer#odd?'
2642
+ Description: 'Favor the use of `Integer#even?` && `Integer#odd?`.'
3099
2643
  StyleGuide: '#predicate-methods'
3100
2644
  Enabled: true
3101
2645
  VersionAdded: '0.12'
@@ -3106,6 +2650,19 @@ Style/ExpandPathArguments:
3106
2650
  Enabled: true
3107
2651
  VersionAdded: '0.53'
3108
2652
 
2653
+ Style/FloatDivision:
2654
+ Description: 'For performing float division, coerce one side only.'
2655
+ StyleGuide: '#float-division'
2656
+ Reference: 'https://github.com/rubocop-hq/ruby-style-guide/issues/628'
2657
+ Enabled: true
2658
+ VersionAdded: '0.72'
2659
+ EnforcedStyle: single_coerce
2660
+ SupportedStyles:
2661
+ - left_coerce
2662
+ - right_coerce
2663
+ - single_coerce
2664
+ - fdiv
2665
+
3109
2666
  Style/For:
3110
2667
  Description: 'Checks use of for or each in multiline loops.'
3111
2668
  StyleGuide: '#no-for-loops'
@@ -3171,7 +2728,7 @@ Style/GlobalVars:
3171
2728
  AllowedVariables: []
3172
2729
 
3173
2730
  Style/GuardClause:
3174
- Description: 'Check for conditionals that can be replaced with guard clauses'
2731
+ Description: 'Check for conditionals that can be replaced with guard clauses.'
3175
2732
  StyleGuide: '#no-nested-conditionals'
3176
2733
  Enabled: true
3177
2734
  VersionAdded: '0.20'
@@ -3214,6 +2771,7 @@ Style/IdenticalConditionalBranches:
3214
2771
  Style/IfInsideElse:
3215
2772
  Description: 'Finds if nodes inside else, which can be converted to elsif.'
3216
2773
  Enabled: true
2774
+ AllowIfModifier: false
3217
2775
  VersionAdded: '0.36'
3218
2776
 
3219
2777
  Style/IfUnlessModifier:
@@ -3379,7 +2937,7 @@ Style/MethodMissingSuper:
3379
2937
  Style/MinMax:
3380
2938
  Description: >-
3381
2939
  Use `Enumerable#minmax` instead of `Enumerable#min`
3382
- and `Enumerable#max` in conjunction.'
2940
+ and `Enumerable#max` in conjunction.
3383
2941
  Enabled: true
3384
2942
  VersionAdded: '0.50'
3385
2943
 
@@ -3389,7 +2947,7 @@ Style/MissingElse:
3389
2947
  If enabled, it is recommended that
3390
2948
  Style/UnlessElse and Style/EmptyElse be enabled.
3391
2949
  This will conflict with Style/EmptyElse if
3392
- Style/EmptyElse is configured to style "both"
2950
+ Style/EmptyElse is configured to style "both".
3393
2951
  Enabled: false
3394
2952
  VersionAdded: '0.30'
3395
2953
  VersionChanged: '0.38'
@@ -3701,7 +3259,7 @@ Style/OptionHash:
3701
3259
  Style/OptionalArguments:
3702
3260
  Description: >-
3703
3261
  Checks for optional arguments that do not appear at the end
3704
- of the argument list
3262
+ of the argument list.
3705
3263
  StyleGuide: '#optional-arguments'
3706
3264
  Enabled: true
3707
3265
  VersionAdded: '0.33'
@@ -3733,7 +3291,7 @@ Style/ParenthesesAroundCondition:
3733
3291
  AllowInMultilineConditions: false
3734
3292
 
3735
3293
  Style/PercentLiteralDelimiters:
3736
- Description: 'Use `%`-literal delimiters consistently'
3294
+ Description: 'Use `%`-literal delimiters consistently.'
3737
3295
  StyleGuide: '#percent-literal-braces'
3738
3296
  Enabled: true
3739
3297
  VersionAdded: '0.19'
@@ -4265,7 +3823,7 @@ Style/UnneededSort:
4265
3823
  Style/UnpackFirst:
4266
3824
  Description: >-
4267
3825
  Checks for accessing the first element of `String#unpack`
4268
- instead of using `unpack1`
3826
+ instead of using `unpack1`.
4269
3827
  Enabled: true
4270
3828
  VersionAdded: '0.54'
4271
3829
 
@@ -4316,7 +3874,7 @@ Style/WordArray:
4316
3874
  # whose element count is greater than or equal to `MinSize`.
4317
3875
  MinSize: 2
4318
3876
  # The regular expression `WordRegex` decides what is considered a word.
4319
- WordRegex: !ruby/regexp '/\A[\p{Word}\n\t]+\z/'
3877
+ WordRegex: !ruby/regexp '/\A(?:\p{Word}|\p{Word}-\p{Word}|\n|\t)+\z/'
4320
3878
 
4321
3879
  Style/YodaCondition:
4322
3880
  Description: 'Forbid or enforce yoda conditions.'