Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump rubocop from 1.57.1 to 1.59.0 #593

Merged
merged 5 commits into from
Dec 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
14 changes: 6 additions & 8 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,10 @@ GEM
remote: https://rubygems.org/
specs:
ast (2.4.2)
base64 (0.1.1)
byebug (11.1.3)
coderay (1.1.3)
diffy (3.4.2)
json (2.6.3)
json (2.7.1)
language_server-protocol (3.17.0.3)
method_source (1.0.0)
minitest (5.20.0)
Expand All @@ -26,24 +25,23 @@ GEM
pry-byebug (3.10.1)
byebug (~> 11.0)
pry (>= 0.13, < 0.15)
racc (1.7.1)
racc (1.7.3)
rainbow (3.1.1)
rake (13.1.0)
regexp_parser (2.8.2)
regexp_parser (2.8.3)
rexml (3.2.6)
rubocop (1.57.1)
base64 (~> 0.1.1)
rubocop (1.59.0)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.2.2.4)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.28.1, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.29.0)
rubocop-ast (1.30.0)
parser (>= 3.2.1.0)
ruby-progressbar (1.13.0)
unicode-display_width (2.5.0)
Expand Down
24 changes: 22 additions & 2 deletions rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
<% rubocop_version = Gem.loaded_specs.fetch("rubocop").version %>
<%
rubocop_version = Gem.loaded_specs.fetch("rubocop").version
v1_57 = Gem::Version.new("1.57")
v1_58 = Gem::Version.new("1.58")
v1_59 = Gem::Version.new("1.59")
%>

inherit_mode:
merge:
Expand Down Expand Up @@ -185,9 +190,19 @@ Lint/IncompatibleIoSelectWithFiberScheduler:
Lint/InterpolationCheck:
Enabled: false

<% if rubocop_version >= v1_59 %>
Lint/ItWithoutArgumentsInBlock:
Enabled: true
<% end %>
Comment on lines +193 to +196
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This takes the same approach as #582, and conditionally enables the cop based on the RuboCop version, allowing us to keep the minimum version the same.

Since I realized we'd end up repeating Gem::Version.new(...) all over the place, I extracted v1.xx variables.


Lint/LambdaWithoutLiteralBlock:
Enabled: false

<% if rubocop_version >= v1_58 %>
Lint/LiteralAssignmentInCondition:
Enabled: true
<% end %>

Lint/MixedCaseRange:
Enabled: true

Expand Down Expand Up @@ -796,7 +811,7 @@ Style/SelectByRegexp:
Style/SingleArgumentDig:
Enabled: false

<% if rubocop_version >= Gem::Version.new('1.57') %>
<% if rubocop_version >= v1_57 %>
Style/SingleLineDoEndBlock:
Enabled: true
<% end %>
Expand Down Expand Up @@ -825,6 +840,11 @@ Style/StringLiteralsInInterpolation:
Style/StructInheritance:
Enabled: false

<% if rubocop_version >= v1_58 %>
Style/SuperWithArgsParentheses:
Enabled: true
<% end %>

Style/SwapValues:
Enabled: false

Expand Down
41 changes: 39 additions & 2 deletions test/fixtures/full_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -922,6 +922,10 @@ Layout/SpaceAroundOperators:
SupportedStylesForExponentOperator:
- space
- no_space
EnforcedStyleForRationalLiterals: no_space
SupportedStylesForRationalLiterals:
- space
- no_space
Layout/SpaceBeforeBlockBraces:
Description: Checks that the left block brace has or doesn't have space before it.
Enabled: true
Expand Down Expand Up @@ -1418,6 +1422,11 @@ Lint/InterpolationCheck:
SafeAutoCorrect: false
VersionAdded: '0.50'
VersionChanged: '1.40'
Lint/ItWithoutArgumentsInBlock:
Description: Checks uses of `it` calls without arguments in block.
Reference: https://bugs.ruby-lang.org/issues/18980
Enabled: true
VersionAdded: '1.59'
Comment on lines +1425 to +1429
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This emulates an upcoming warning, so best to enable it and start addressing it early.

Lint/LambdaWithoutLiteralBlock:
Description: Checks uses of lambda without a literal block.
Enabled: false
Expand All @@ -1426,6 +1435,10 @@ Lint/LiteralAsCondition:
Description: Checks of literals used in conditions.
Enabled: true
VersionAdded: '0.51'
Lint/LiteralAssignmentInCondition:
Description: Checks for literal assignments in the conditions.
Enabled: true
VersionAdded: '1.58'
Comment on lines +1438 to +1441
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks for things like

if x = true

or

if x = 123

which probably meant to use == instead. Technically, there's overlap with the rule we have that enforces surrounding ( ) for assignments in conditions, but it's still possible someone could make the mistake.

Lint/LiteralInInterpolation:
Description: Checks for literals used in interpolation.
Enabled: true
Expand Down Expand Up @@ -2344,7 +2357,19 @@ Style/ArgumentsForwarding:
Enabled: false
AllowOnlyRestArgument: true
UseAnonymousForwarding: true
RedundantRestArgumentNames:
- args
- arguments
RedundantKeywordRestArgumentNames:
- kwargs
- options
- opts
RedundantBlockArgumentNames:
- blk
- block
- proc
VersionAdded: '1.1'
VersionChanged: '1.58'
Style/ArrayCoercion:
Description: Use Array() instead of explicit Array check or [*var], when dealing
with a variable you want to treat as an Array, but you're not certain it's an
Expand All @@ -2353,6 +2378,12 @@ Style/ArrayCoercion:
Safe: false
Enabled: false
VersionAdded: '0.88'
Style/ArrayFirstLast:
Description: Use `arr.first` and `arr.last` instead of `arr[0]` and `arr[-1]`.
Reference: "#first-and-last"
Enabled: false
VersionAdded: '1.58'
Safe: false
Comment on lines +2381 to +2386
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I kept this disabled, as I don't see it being worth it given how many false positives it would have.

Style/ArrayIntersect:
Description: Use `array1.intersect?(array2)` instead of `(array1 & array2).any?`.
Enabled: true
Expand Down Expand Up @@ -3710,7 +3741,7 @@ Style/RedundantFetchBlock:
Description: Use `fetch(key, value)` instead of `fetch(key) { value }` when value
has Numeric, Rational, Complex, Symbol or String type, `false`, `true`, `nil`
or is a constant.
Reference: https://github.com/JuanitoFatas/fast-ruby#hashfetch-with-argument-vs-hashfetch--block-code
Reference: https://github.com/fastruby/fast-ruby#hashfetch-with-argument-vs-hashfetch--block-code
Enabled: false
Safe: false
SafeForConstants: false
Expand Down Expand Up @@ -3885,7 +3916,7 @@ Style/SafeNavigation:
MaxChainLength: 2
Style/Sample:
Description: Use `sample` instead of `shuffle.first`, `shuffle.last`, and `shuffle[Integer]`.
Reference: https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code
Reference: https://github.com/fastruby/fast-ruby#arrayshufflefirst-vs-arraysample-code
Enabled: true
VersionAdded: '0.30'
Style/SelectByRegexp:
Expand Down Expand Up @@ -3943,6 +3974,7 @@ Style/SingleLineBlockParams:
- elem
Style/SingleLineDoEndBlock:
Description: Checks for single-line `do`...`end` blocks.
StyleGuide: "#single-line-do-end-block"
Enabled: true
VersionAdded: '1.57'
Style/SingleLineMethods:
Expand Down Expand Up @@ -4058,6 +4090,11 @@ Style/StructInheritance:
SafeAutoCorrect: false
VersionAdded: '0.29'
VersionChanged: '1.20'
Style/SuperWithArgsParentheses:
Description: Use parentheses for `super` with arguments.
StyleGuide: "#super-with-args"
Enabled: true
VersionAdded: '1.58'
Comment on lines +4093 to +4097
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seemed like a good idea, given super and super() do different things, although it may already be covered by us having parentheses enabled for method calls be default.

Style/SwapValues:
Description: Enforces the use of shorthand-style swapping of 2 variables.
StyleGuide: "#values-swapping"
Expand Down