使用 Rails 4 应用程序时,我希望 Rubocop 在检查行是否过长时忽略带有注释的行(只是注释或带有行尾注释的某些代码)。有没有办法做到这一点?
问问题
106653 次
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 回答