【发布时间】:2026-02-13 05:35:02
【问题描述】:
使用 Rails 4 应用程序时,我希望 Rubocop 在检查行是否过长时忽略带有 cmets 的行(只是注释或带有行尾注释的一些代码)。有没有办法做到这一点?
【问题讨论】:
使用 Rails 4 应用程序时,我希望 Rubocop 在检查行是否过长时忽略带有 cmets 的行(只是注释或带有行尾注释的一些代码)。有没有办法做到这一点?
【问题讨论】:
有一种方法可以逐行忽略警察。
还有一种方法可以通过配置文件来实现。
运行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
您可以在其official manual 中阅读有关 RuboCop 的更多信息。
要找到所有值得一看的规则名称in the rubocop config files
cyberwiz 说 - “当我需要规则名称而不是查看文档时运行 rubocop -D。” 更新:现在这是没有标志的默认行为。
-D 现在是默认值,所以我们现在可以“免费”获得它。
【讨论】:
#!/bin/env ruby 注释行也是注释,但代码,并且在语义上很重要。评论并不总是只有“cmets”。
可以定义正则表达式模式以自动忽略rubocop.yml 中的某些行,因此您可以选择忽略所有以# 字符开头的行:
Layout/LineLength:
Max: 80
IgnoredPatterns: ['\A#']
这可以改进,以便“缩进”注释行(即空格后跟 # 字符)也被忽略,如果这是你想要的。
请注意,这不包括以注释结束的代码行:
some_code(that_does_something) # This line would NOT be ignored by Rubocop.
【讨论】:
IgnorePatterns: ['(\A|\s)#']
IgnoredPatterns 而不是 IgnorePatterns(它缺少字母 'd')。
IgnoredPatterns: ['^ *# '] 这允许使用任何缩进的全行 cmets。它不会忽略带有尾随 cmets 的代码,这是我的偏好。
您可以在 rubocop 中使用以下注释来忽略特定规则:
# 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
我认为这里的基本思想是你想要强制行长,不管 n 个字符之后是什么。默认为 80 个字符是旧终端窗口的一些货物崇拜,只能容纳该数量的字符。我看到in the code 的唯一选项是允许可能超过字符限制的网址。
你可以ignore whole files,我猜这不是你要找的。p>
【讨论】: