兼容性

RuboCop 针对 Ruby 2.0+ 代码分析。1

RuboCop 官方运行时支持 MRI(又名 CRuby)和 JRuby。

  • MRI 2.7+

  • JRuby 9.4+

支持的最旧 JRuby 版本源自最旧的兼容 MRI 版本。

RuboCop 也可能与其他 Ruby 实现一起使用,但它只在 MRI 和 JRuby 上进行了测试。

支持矩阵

RuboCop 通常旨在遵循 MRI 自己的支持策略,这意味着 RuboCop 将支持所有官方支持的 MRI 版本。2 为了让人们有更多时间顺利过渡,我们通常会提供大约一年时间的支持,直到 MRI 版本的 EOL。3

Ruby 2.7 和 Ruby 3.0 之间存在重大版本不兼容性,而最新稳定版本的 Ruby on Rails 7.1 仍然支持 Ruby 2.7。因此,RuboCop 在此阶段放弃对 Ruby 2.7 的支持可能为时过早。只要 Rails 7.1 处于 Ruby on Rails 维护策略 的“错误修复”阶段,RuboCop 将继续支持 Ruby 2.7。

下表是运行时支持矩阵。

支持的运行时 Ruby 版本 最后支持的 RuboCop 版本

1.9

0.41

2.0

0.50

2.1

0.57

2.2

0.68

2.3

0.81

2.4

1.12

2.5

1.28

2.6

1.50

2.7

-

3.0

-

3.1

-

3.2

-

3.3

-

3.4(实验性)

-

自 RuboCop 1.30 起,RuboCop 使用 Parser gem 作为解析器,针对 Ruby 2.0+ 代码进行分析。它恢复了之前因错误而删除的代码分析支持,同时放弃了对不支持的 Ruby 版本的运行时支持。

从 RuboCop 1.62 开始,对 Prism 的 Prism::Translation::parser 的支持将使 Ruby 3.3+ 的分析成为可能。有关更多详细信息,请参阅 设置 ParserEngine

兼容性 设置 TargetRubyVersion 是关于代码分析(RuboCop 可以分析什么),而不是运行时(RuboCop 是否能够在某些 Ruby 上运行)。

向前兼容性

可能会为 Ruby 的开发版本提供功能。这些功能都被视为实验性的,可能会在 Ruby 的稳定版本发布之前发生变化。


1. 由其参考实现 MRI 定义。
2. 通常是最后 3 个版本。
3. 核心团队可自行决定是否放弃此策略,以避免因 MRI 版本导致的重大维护开销。