【发布时间】:2020-05-03 20:30:08
【问题描述】:
我有一个非常大的代码库,它混合使用嵌套和紧凑样式进行类定义。
RuboCop: ClassAndModuleChildren
# Nested
class Foo
class Bar
end
end
# Compact
class Foo::Bar
end
我正在构建一个自动化工具,它使用正则表达式来重新组织大量类的命名空间。当类定义为紧凑格式时,这很容易做到,但当它们采用嵌套格式时,这要困难得多。
因此,我需要一种将嵌套样式的所有实例转换为紧凑样式的方法。
我希望 RuboCop 可以为我做到这一点,虽然 docs 似乎暗示它支持自动更正,但我无法让它工作。 RuboCop 报告违规行为,但没有解决问题。
bundle exec rubocop --auto-correct app/controllers/announcements_controller.rb
Inspecting 1 file
C
Offenses:
app/controllers/announcements_controller.rb:1:8: C: Style/ClassAndModuleChildren: Use compact module/class definition instead of nested style.
module Vapid
^^^^^
app/controllers/announcements_controller.rb:2:10: C: Style/ClassAndModuleChildren: Use compact module/class definition instead of nested style.
module V2
^^
1 file inspected, 2 offenses detected
如果有人可以完成这项工作,或者知道自动采用紧凑样式的更好方法,我将不胜感激。
【问题讨论】:
-
您使用的是哪个版本的 RuboCop?
-
@AndyWaite
0.71.0 -
只是想指出这两个样式不是完全一样的东西,如果父类还没有定义,'compact'样式会出错
-
您是否尝试过通过代码来执行此操作,例如
ObjectSpace.each_object遍历?
标签: ruby-on-rails ruby rubocop