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

Twi*_*iek 97 ruby rubocop

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

vgo*_*off 172

有一种方法可以忽略每行的警察.

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

运行rubocop --auto-gen-config并生成一个可用于禁用攻击的文件.

该命令还提示如何加载这些选项.

在每行一行上,您也可以启用和禁用警察.

# rubocop:disable RuleByName
This is a long line 
# rubocop:enable RuleByName
Run Code Online (Sandbox Code Playgroud)

您还可以在代码中一次执行多个规则.

# rubocop:disable BlockComments, AsciiComments
Run Code Online (Sandbox Code Playgroud)

通过使用内联指令,该指令仅对该行有效,它看起来像这样:

# Thanks to @jnt30 for the comment!
method(argument) # rubocop:disable SomeRule, SomeOtherRule
Run Code Online (Sandbox Code Playgroud)

您可以在其官方手册中阅读更多关于RuboCop的内容.

要查找rubocop配置文件中值得查看的所有规则名称

cyberwiz说 - " rubocop -D当我需要规则名称而不是查看文档时运行." 更新:现在这是没有标志的默认行为.

  • 注释不是代码,因此检查它们在语义上是不同的,IMO rubocop 应该这样对待它。 (2认同)
  • 注释是代码的一部分,当您处理电子邮件或终端上的代码时.我认为没有你的评论遵循"团队"作为代码所采用的相同行长是不好的.他们不应仅仅因为他们是评论而扰乱流程.我确信rubocop不会在语义上(有意义地)检查除指令之外的任何内容的注释.它确实检查行长度和注释的样式.所以不,它不是在寻找意义,它只是检查风格.不要打折"评论不是代码"并非必须. (2认同)

GoB*_*sto 29

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

Metrics/LineLength:
  Max: 80
  IgnoredPatterns: ['\A#']
Run Code Online (Sandbox Code Playgroud)

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

请注意,这并不考虑以注释结尾的代码行:

some_code(that_does_something) # This line would NOT be ignored by Rubocop.
Run Code Online (Sandbox Code Playgroud)

  • 您可以通过包含可以包含空格的行来扩展该正则表达式:`IgnorePatterns:['(\ A |\s)#']` (8认同)
  • **谢谢**@poustovitss。有一个拼写错误:应该是“IgnoredPatterns”,而不是“IgnorePatterns”(缺少字母“d”)。 (3认同)
  • 我使用: `IgnoredPatterns: ['^ *# '] ` 这允许带有任何缩进的全行注释。它不会忽略带有尾随注释的代码,这是我的偏好。 (3认同)
  • 警告:.rubocop.yml 中发现的过时参数“IgnoredPatterns”(针对“Layout/LineLength”)“IgnoredPatterns”已重命名为“AllowedPatterns”。<- 最新版本 (2认同)

小智 21

您可以在 rubocop 中使用以下注释来忽略特定规则:

# rubocop:disable Layout/LineLength
def this_could_be_a_very_long_line_that_extends_forever_into_infinity
end
# rubocop:enable Layout/LineLength
Run Code Online (Sandbox Code Playgroud)

您还可以通过将它们添加到以下来忽略整个文件.rubocop.yml

AllCops:
  Exclude:
    - path/to/file.rb
Run Code Online (Sandbox Code Playgroud)

  • 现在是 `# rubocop:disable Layout/LineLength` (2认同)

pho*_*oet 6

我认为这里的基本思想是你要强制行长度,无论n个字符后面是什么.默认为80个字符是旧终端窗口的一些货物崇拜,只能容纳那些数量的字符.我在代码中看到的唯一选项是允许可能超出字符限制的网址的选项.

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

  • 现在,80个字符背后的想法并不是终端的"货物崇拜",它仍然有一个合乎逻辑的理由:任何人都可以分割他们想要的编辑器或IDE窗口,只要它们只是更宽超过80个字符,他们不需要改变宽度或体验包装. (8认同)
  • 80个字符也很可读,而40或200则不那么容易,所以它也是一个可用性的东西 (8认同)
  • IMO如果您没有支持软包装的IDE,则您的工具不是最新的. (2认同)