137

使用 Rails 4 应用程序时,我希望 Rubocop 在检查行是否过长时忽略带有注释的行(只是注释或带有行尾注释的某些代码)。有没有办法做到这一点?

4

4 回答 4

243

有一种方法可以逐行忽略警察。

还有一种方法可以通过配置文件来实现。

运行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是默认设置,所以我们现在可以“免费”获得它。

于 2014-10-14T00:19:56.617 回答
46

可以定义正则表达式模式以自动忽略 中的某些行,因此您可以选择忽略以字符rubocop.yml开头的所有行:#

Layout/LineLength:
  Max: 80
  IgnoredPatterns: ['\A#']

这可以改进,以便“缩进”注释行(即空格后跟一个#字符)也被忽略,如果这是你想要的。

请注意,这不包括以注释结尾的代码行,但是:

some_code(that_does_something) # This line would NOT be ignored by Rubocop.
于 2017-03-16T11:37:56.900 回答
21

您可以将以下注释与 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
于 2019-03-04T16:54:47.023 回答
6

我认为这里的基本思想是你想强制行长,不管 n 个字符之后是什么。默认为 80 个字符是旧终端窗口的一些货物崇拜,只能容纳该数量的字符。我在代码中看到的唯一选项是允许 url 可能超过字符限制的选项。

你可以忽略整个文件,我想这不是你要找的。

于 2014-10-13T17:49:34.260 回答