Rubocop Linelength:如何忽略带注释的行?


109

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

Answers:


197

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

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

运行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在我需要规则名称而不是在文档中查找时运行。” 更新:这是不带标志的默认行为。


1
好吧,这些评论可以解释团队所接受的风格的偏离,所以这不是一件坏事,对吧?否则,将其放置在rubocop.yml文件中,则它不是可接受的样式异常,并且不需要注释。评论说“我打算那样做!”。完全不是一件坏事。
vgoff

1
注释不是代码,因此检查它们在语义上是不同的,IMO rubocop应该以这种方式对待。
2014年

2
注释是代码的一部分,在电子邮件或终端上处理代码时也是如此。我认为,不让您的注释遵循“团队”作为代码所采用的相同行长是一种不好的味道。他们不应仅仅因为是评论而中断了流程。我确信rubocop不会在语义上(有意义地)检查指令以外的任何注释。它会检查行长和注释样式。因此,不,它不是在寻找意义,只是在检查样式。不要否认“注释不是代码”不是必须的。
vgoff

实际上,即使#!/bin/env ruby注释行也是注释,但仍是代码,并且在语义上很重要。评论并不总是唯一的“评论”。
vgoff 2014年

1
@Twiek您正在寻找此答案中缺少的内容吗?
vgoff

35

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

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

可以对此进行改进,以便“缩进”注释行(即空格后跟一个#字符)也可以忽略,如果您要这样做的话。

请注意,尽管如此,这并不说明以注释结尾的代码行:

some_code(that_does_something) # This line would NOT be ignored by Rubocop.

9
您可以通过包含可以有空格的行来扩展该正则表达式:IgnorePatterns: ['(\A|\s)#']
poustovitss

1
谢谢 @poustovitss。有一个错字:应该IgnoredPatterns改错了IgnorePatterns(它缺少字母“ d”)。
Horacio

9

您可以在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

6

我认为这里的基本思想是,无论n个字符之后是什么,您都希望强制行长。默认值为80个字符,是一些旧终端窗口的货运崇拜,只能容纳该数量的字符。我在代码中看到的唯一选项是允许URL可能超出字符数限制的选项。

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


8
如今,80个字符背后的想法已不再是终端的“货运崇拜”了,这仍然是合乎逻辑的原因:任何人都可以根据需要拆分其编辑器或IDE窗口,并且只要它们更宽少于80个字符,则无需更改宽度或换行。
杰森·安特曼

2
IMO如果您没有支持软包装的IDE,则您的工具不是最新的。
phoet '16

8
80个字符也很可读,而40个或200个字符则不太可读,所以这也是一个可用性问题
Toni Leigh

#1“只要它们的宽度大于80个字符” 800x600的宽度大于80个字符,并且并排查看2个80个字符的文件也存在相同的问题。这是胡扯,仅适用于1366 res。随着1920年以上的接管,下一个参数将是“我可以分割3、4个文件”
Andre Figueiredo

1
我们将其设置为80,然后将其更改为120。在Github上以13“笔记本电脑的分屏视图查看代码时,查看PR是一个问题。我们切换回
80。– AndreiMotinga
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.