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
[Fix #10258] Recover Ruby 2.4 code analysis using TargetRubyVersion: 2.4
#10632
Conversation
b52c6b7
to
d2325f9
Compare
…ersion: 2.4` Fixes rubocop#10258 and reverts part of rubocop#9648. Only the Ruby version (2.4) to runtime should have been dropped, not code analysis. This PR makes Ruby 2.4 code analysis with `TargetRubyVersion: 2.4`. So, this keeps it compatible with `TargetRubyVersion` up to RuboCop 1.12.1 as semver. It aims to solve essentially the same problem as rubocop#10626.
d2325f9
to
972a4a7
Compare
TargetRubyVersion: 2.4
TargetRubyVersion: 2.4
Thanks! |
I'm thinking we should also update the compatibility docs to mention separately the runtime support and the analysis support for the various releases. |
Yeah. OTOH, I will try to recover as much as possible to analysis the old Ruby versions code. |
RuboCop can analyze Ruby 1.9 or later. But now it turns out that RuboCop hasn't been able to parse older Ruby versions. https://docs.rubocop.org/rubocop/1.29/compatibility.html#support-matrix Analysis Ruby code and runtime Ruby versions are different. So, only runtime version should have been dropped. This PR makes it possible to parse older Ruby versions that were accidentally dropped before RuboCop AST was separated from RuboCop core. With this fix, the following recovery work will be possible. - Recover for Ruby 2.5 analysis: rubocop/rubocop#10626 - Recover for Ruby 2.4 analysis: rubocop/rubocop#10632
RuboCop can analyze Ruby 1.9 or later. But now it turns out that RuboCop hasn't been able to parse older Ruby versions. https://docs.rubocop.org/rubocop/1.29/compatibility.html#support-matrix Analysis Ruby code and runtime Ruby versions are different. So, only runtime version should have been dropped. This PR makes it possible to parse older Ruby versions that were accidentally dropped before RuboCop AST was separated from RuboCop core. With this fix, the following recovery work will be possible. - Recover for Ruby 2.5 analysis: rubocop/rubocop#10626 - Recover for Ruby 2.4 analysis: rubocop/rubocop#10632
Follow up rubocop#10632 (comment). Reverts part of rubocop#7869 and rubocop#8056. Only the Ruby version (2.3) to runtime should have been dropped, not code analysis. This PR makes Ruby 2.3 code analysis with `TargetRubyVersion: 2.3`. It aims to solve essentially the same problem as rubocop#10626 and 10632. And this change requires RuboCop AST 1.18 or later: rubocop/rubocop-ast#233
Follow up rubocop#10632 (comment). Reverts part of rubocop#6766, rubocop#7026, and rubocop#7030. Only the Ruby version (2.2) to runtime should have been dropped, not code analysis. This PR makes Ruby 2.2 code analysis with `TargetRubyVersion: 2.2`. It aims to solve essentially the same problem as rubocop#10626, rubocop#10632, and rubocop#10640. Previously, there was the following default enforced style `when_needed` for `Style/FrozenStringLiteralComment` cop. ```ruby # @example EnforcedStyle: when_needed (default) # # The `when_needed` style will add the frozen string literal # # to files only when the `TargetRubyVersion` is set to 2.3+. # # bad # module Foo # # ... # end # # # good # # frozen_string_literal: true # # module Foo # # ... # end ``` This PR does not restore that option, but sets the `minimum_target_ruby_version 2.3` to make `always (default)` apply by default. It is a simple solution that does not handle frozen literal magic comment added in Ruby 2.3 when `TargetRubyVersion` is Ruby 2.2 or lower.
Follow up rubocop#10632 (comment). Reverts part of rubocop#5990 and rubocop#6101. Only the Ruby version (2.1) to runtime should have been dropped, not code analysis. This PR makes Ruby 2.1 code analysis with `TargetRubyVersion: 2.1`. It aims to solve essentially the same problem as rubocop#10626, rubocop#10632, rubocop#10640, and rubocop#10644.
Follow up rubocop#10632 (comment). Reverts part of rubocop#4787. Only the Ruby version (2.0) to runtime should have been dropped, not code analysis. This PR makes Ruby 2.0 code analysis with `TargetRubyVersion: 2.0`. It aims to solve essentially the same problem as rubocop#10626, rubocop#10632, rubocop#10640, rubocop#10644, and rubocop#10662.
Has runtime analysis always been decoupled from I'm curious because I work against Ruby that is embedded in an desktop application, meaning I have to support a wide range of Ruby versions on the same code-base. I've these RuboCop configs: Having runtime support decoupled from static analysis support is a big double thumbs up from me! 👍👍 |
Follow up rubocop#10632 (comment). RuboCop targets Ruby 2.0+ code analysis since RuboCop 1.30. This PR tweaks docs about target Ruby version. NOTE: Ruby 1.9 code analysis is not restored because its some incompatibilities with Ruby 2.0+ cops. It may not be worth the maintenance cost.
Follow up #10632 (comment). RuboCop targets Ruby 2.0+ code analysis since RuboCop 1.30. This PR tweaks docs about target Ruby version. NOTE: Ruby 1.9 code analysis is not restored because its some incompatibilities with Ruby 2.0+ cops. It may not be worth the maintenance cost.
Follow up rubocop/rubocop#10632. Reverts #232 and rubocop/rubocop-performance@e3c374b.
Follow up rubocop/rubocop#10632. Reverts #232 and rubocop/rubocop-performance@e3c374b.
Follow up rubocop/rubocop#10632. Reverts #232 and rubocop/rubocop-performance@e3c374b.
Follow up rubocop/rubocop#10632. Reverts #232 and rubocop/rubocop-performance@e3c374b.
Fixes #10258 and reverts part of #9648.
Only the Ruby version (2.4) to runtime should have been dropped, not code analysis.
This PR makes Ruby 2.4 code analysis with
TargetRubyVersion: 2.4
.So, this keeps it compatible with
TargetRubyVersion
up to RuboCop 1.12.1 as semver.It aims to solve essentially the same problem as #10626.
Before submitting the PR make sure the following are checked:
[Fix #issue-number]
(if the related issue exists).master
(if not - rebase it).bundle exec rake default
. It executes all tests and runs RuboCop on its own code.{change_type}_{change_description}.md
if the new code introduces user-observable changes. See changelog entry format for details.