使用Rails 4应用程序我希望Rubocop在检查行是否为long时忽略带注释的行(只是注释或带有行尾注释的代码)。有没有办法做到这一点?
答案 0 :(得分:143)
有一种方法可以忽略每行的警察。
还有一种方法可以通过配置文件来完成。
运行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
。” 更新:现在这是没有标志的默认行为。
答案 1 :(得分:26)
可以定义正则表达式模式以自动忽略rubocop.yml
中的某些行,因此您可以选择忽略以#
字符开头的所有行:
Metrics/LineLength:
Max: 80
IgnoredPatterns: ['\A#']
这可以改进,以便"缩进"注释行(即空格后跟#
个字符)也会被忽略,如果这是你想要的。
请注意,这并不代表结束带注释的代码行:
some_code(that_does_something) # This line would NOT be ignored by Rubocop.
答案 2 :(得分:6)
我认为这里的基本思想是你要强制行长度,无论n个字符后面是什么。默认为80个字符是旧终端窗口的一些货物崇拜,只能容纳那些数量的字符。我看到in the code的唯一选项是允许可能超出字符数限制的网址。
你可以ignore whole files,我猜这不是你想要的。
答案 3 :(得分:2)
您可以在rubocop中使用以下注释来忽略特定规则:
# rubocop:disable Metrics/LineLength
def this_could_be_a_very_long_line_that_extends_forever_into_infinity
end
# rubocop:enable Metrics/LineLength
您还可以通过将整个文件添加到.rubocop.yml
来忽略整个文件:
AllCops:
Exclude:
- path/to/file.rb