基本用法
RuboCop 有三个主要用途
-
代码风格检查器(又称 linter)
-
ruby -w
的替代品(其 linting 功能的一个子集) -
代码格式化程序
在接下来的部分中,我们将简要介绍所有这些内容。
代码风格检查器
在没有参数的情况下运行 rubocop
将检查当前目录中的所有 Ruby 源文件
$ rubocop
或者,您可以将 rubocop
传递给一个要检查的文件和目录列表
$ rubocop app spec lib/something.rb
以下是 RuboCop 的实际操作。考虑以下 Ruby 源代码
def badName
if something
test
end
end
在它上面运行 RuboCop(假设它在一个名为 test.rb
的文件中)将产生以下报告
Inspecting 1 file W Offenses: test.rb:1:1: C: Style/FrozenStringLiteralComment: Missing magic comment # frozen_string_literal: true. def badName ^ test.rb:1:5: C: Naming/MethodName: Use snake_case for method names. def badName ^^^^^^^ test.rb:2:3: C: Style/GuardClause: Use a guard clause instead of wrapping the code inside a conditional expression. if something ^^ test.rb:2:3: C: Style/IfUnlessModifier: Favor modifier if usage when having a single-line body. Another good alternative is the usage of control flow &&/||. if something ^^ test.rb:4:5: W: Layout/EndAlignment: end at 4, 4 is not aligned with if at 2, 2. end ^^^ 1 file inspected, 5 offenses detected
自动更正违规
您也可以在自动更正模式下运行 RuboCop,它将尝试自动修复它在您的代码中发现的问题
$ rubocop -a
# or
$ rubocop --autocorrect
有关更多详细信息,请参阅 自动更正。 |
RuboCop 作为 ruby -w
的替代品
RuboCop 本机实现了几乎所有 ruby -w
lint 警告检查,以及其他一些。如果您愿意,您可以简单地将 RuboCop 用作 ruby -w
的替代品
$ rubocop -l
# or
$ rubocop --lint
RuboCop 作为格式化程序
有一个方便的快捷方式,可以仅对代码布局(又称格式)违规运行自动更正
$ rubocop -x
# or
$ rubocop --fix-layout
此选项在 RuboCop 0.57.0 中引入。 |
命令行标志
有关更多详细信息,请查看可用的命令行选项
$ rubocop -h
要为一个标志指定多个 cop,请用逗号分隔 cop,并且不要使用空格
$ rubocop --only Rails/Blank,Layout/HeredocIndentation,Naming/FileName
命令标志 | 描述 |
---|---|
|
自动更正违规(仅在安全时)。请参阅 自动更正。 |
|
|
|
自动更正违规(安全和不安全)。请参阅 自动更正。 |
|
|
|
生成一个用作 TODO 列表的配置文件。 |
|
强制打开或关闭彩色输出。 |
|
使用指定的配置文件运行。 |
|
存储和重用结果以加快操作速度。 |
|
显示一些额外的调试输出。 |
|
在没有待处理 cop 的情况下运行。 |
|
与 --autocorrect 一起使用,以使用 |
|
在违规消息中显示 cop 名称。默认值为 true。 |
|
以秒为单位显示经过的时间。 |
|
仅输出指定 |
|
仅输出可更正的违规消息。 |
|
仅输出安全的可更正的违规消息。 |
|
使用待处理 cop 运行。 |
|
运行配置启用的所有 cop,除了指定的 cop 和/或部门。 |
|
限制 |
|
在违规消息中显示额外详细信息。 |
|
选择一个格式化程序,请参阅 格式化程序。 |
|
按修改时间顺序检查文件,并在第一个包含违规的文件后停止。 |
|
退出错误代码的最小 严重性。可以给出完整的严重性名称或大写首字母。通常,自动更正的违规会被忽略。如果您希望任何可自动更正的违规触发失败,无论严重性如何,请使用 |
|
即使显式传递为参数,也强制排除配置 |
|
仅当命令行中给定的文件在用户配置或默认配置的 |
|
打印使用信息。 |
|
忽略所有父文件夹中所有 .rubocop.yml 文件中的 Exclude: 设置。当您导入子模块时,这很有用,因为您希望在不受父模块的 rubocop 设置影响的情况下测试它们。 |
|
忽略配置中无法识别的 cop 或部门。 |
|
在当前目录中生成 .rubocop.yml 文件。 |
|
仅运行 lint cop。 |
|
列出 RuboCop 将检查的所有文件。 |
|
在运行 |
|
在生成的配置文件中包含运行 |
|
在 |
|
仅运行指定的 cop 和/或指定部门中的 cop。 |
|
将输出写入文件,而不是 STDOUT。 |
|
使用可用的 CPU 并行执行检查。默认值为并行。 |
|
引发与 cop 相关的错误,包括原因和位置。这用于防止 cop 静默失败。默认值为 false。 |
|
需要 Ruby 文件(参见 加载扩展)。 |
|
使用与上次使用 |
|
仅运行安全的 cop。 |
|
|
|
显示可用的 cop 及其配置。 |
|
显示提供的 cop 文档页面的 URL。 |
|
将所有输出写入 stderr,除了自动更正的源代码。这在与 |
|
从 STDIN 管道源代码。这对于编辑器集成很有用。接受一个参数,一个路径,相对于项目的根目录。RuboCop 将使用此路径来确定哪些 cop 已启用(例如通过 Include/Exclude),以及某些 cop(如 Naming/FileName)是否可以被检查。 |
|
优化编辑器中的实时反馈,调整编辑体验的行为。直接运行 RuboCop 的编辑器(例如,通过 shell 命令)会遇到与 |
|
在违规消息中显示样式指南 URL。 |
|
仅自动更正代码布局(格式)违规。 |
|
显示当前版本并退出。 |
|
显示当前版本以及解析器和 Ruby 的版本。 |
默认命令行选项从 .rubocop
和 RUBOCOP_OPTS
加载,并与显式传递给 rubocop
的命令行选项合并。因此,选项具有以下优先级顺序(从最高到最低)
-
显式命令行选项
-
来自
RUBOCOP_OPTS
环境变量的选项 -
来自
.rubocop
文件的选项。