当检查一行是否太长时,我希望 Rubopolice 忽略带有注释的行(只是一个注释或一些带有行尾注释的代码)。有办法吗?
我认为这里的基本思想是,不管 n 个字符后面是什么,都要强制执行行长。默认为80个字符的是一些旧的终端窗口的货物邪教,只能容纳这个数目的字符。我看到的唯一选项 在密码里是一个允许 URL 可能超过字符限制的选项。
你可以 忽略整个文件,我想这不是你想要的。
有一种方法可以忽略警察每行的基础上。
还有一种方法可以通过配置文件实现。
运行 rubocop --auto-gen-config,它将生成一个文件,您可以使用该文件禁用违规行为。
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 的信息。
要查找所有规则名称,值得查看 配置文件中
Cyberwiz 说-“当我需要规则名称而不是查看文档时,运行 rubocop -D。”更新: 现在这是没有标志的默认行为。
rubocop -D
-D现在是默认的,所以我们现在可以“免费”得到它。
-D
可以定义 regex 模式来自动忽略 rubocop.yml中的某些行,所以您可以选择忽略以 #字符开头的所有行:
rubocop.yml
#
Layout/LineLength: Max: 80 IgnoredPatterns: ['\A#']
这可以改进,以便“缩进的”注释行(即空格后跟一个 #字符)也被忽略,如果这是您想要的。
注意,这并没有考虑到带注释的 结束代码行:
some_code(that_does_something) # This line would NOT be ignored by 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:
.rubocop.yml
AllCops: Exclude: - path/to/file.rb
以下配置适合我:
Layout/LineLength: AllowedPatterns: ['^(\s*#)']
这个正则表达式只有在整行被注释掉时才有效。代码后面跟着同一行的长注释仍然会触发一个 Rubocopint 错误,这是设计好的。