我希望Rubocop在检查一行代码是否过长时,能够忽略带有注释的行(仅包含注释或是带有行尾注释的代码)。是否有方法可以实现这一点?
有一种方法可以逐行忽略警察。
还有一种方法是通过配置文件来实现。
运行rubocop --auto-gen-config
命令,它会生成一个文件,您可以使用该文件来禁用违规行为。
该命令还提示如何加载这些选项。
您也可以逐行启用和禁用警察。
# rubocop:disable RuleByName
This is a long line
# rubocop:enable RuleByName
你可以在代码中同时执行多个规则。
# rubocop:disable BlockComments, AsciiComments
通过使用内联指令,该指令仅对该行有效,它的样子会是这样:
# Thanks to @jnt30 for the comment!
method(argument) # rubocop:disable SomeRule, SomeOtherRule
您可以在其官方手册中了解有关RuboCop的更多信息。
要查找所有规则名称,值得在rubocop配置文件中查看
cyberwiz表示 - “需要规则名称时运行rubocop -D
而不是在文档中查找。” 更新:这现在是默认行为,无需标志。
-D
现在是默认设置,因此我们现在可以“免费”获取它。
可以在rubocop.yml
中定义正则表达式模式,自动忽略某些行,因此您可以选择忽略所有以#
字符开头的行:
Layout/LineLength:
Max: 80
AllowedPatterns: ['\A#']
或者:
Layout/LineLength:
Max: 80
AllowedPatterns:
- !ruby/regexp /\A#/
#
字符),如果您需要的话。例如:Layout/LineLength:
Max: 80
AllowedPatterns:
- !ruby/regexp /\A *# /
some_code(that_does_something) # This line would NOT be ignored by Rubocop.
IgnorePatterns: ['(\A|\s)#']
- poustovitssIgnoredPatterns
而不是IgnorePatterns
(缺少字母“d”)。 - HoracioIgnoredPatterns: ['^ *# ']
这允许任何缩进的全行注释。它不会忽略带有尾随注释的代码,这是我的首选。 - David HempyIgnoredPatterns
(用于 Layout/LineLength
)。IgnoredPatterns
已更名为 AllowedPatterns
。<- 适用于最新版本 - dcangulo# rubocop:disable Layout/LineLength
def this_could_be_a_very_long_line_that_extends_forever_into_infinity
end
# rubocop:enable Layout/LineLength
您还可以通过将文件添加到.rubocop.yml
来忽略整个文件:
AllCops:
Exclude:
- path/to/file.rb
# rubocop:disable Layout/LineLength
。 - Yathi以下配置对我有效:
Layout/LineLength:
AllowedPatterns: ['^(\s*#)']
这个正则表达式只有在整行被注释掉的情况下才能工作。在同一行上跟随长注释的代码仍然会触发 Rubocop 的 lint 错误,这是设计上的问题。