Rubocop:当只发现警告时,是否可以告诉Rubocop返回零作为退出代码



问题

当只发现警告时,是否可以告诉Rubocop返回0作为退出代码?


先决条件

  1. 我使用以下命令在Travis CI上运行Rubocop:

    bundle exec rubocop
    
  2. 我有一个cop,它在rubocop.yml:中被配置为警告

    Style/Documentation:
    Severity: warning
    

问题

Travis CI仅当命令的退出代码等于0时才将其视为成功命令。

Rubocop在未发现违规行为时返回0作为退出代码,

但当它发现至少有一项违法行为时,

它返回1作为退出代码,无论该违规行为是错误还是警告。

因此,当Rubocop只发现警告时,Travis CI构建将失败。

因此,当只发现警告时,是否可以告诉Rubocop返回0作为退出代码?

提前谢谢。


票据

  • 请不要建议禁用警察。

  • 我使用以下方法来检查退出代码:

    $ bundle exec rubocop
    // ...
    14 files inspected, 8 offenses detected
    $ echo "$?"
    1
    

使用具有适当severity级别的--fail-level标志:

rubocop --fail-level error

您可以在命令行标志的Rubocop文档中阅读更多关于该标志的信息,在常规配置参数的RubocopDocs中阅读severity级别的信息。

给定foo.rb:

# foo.rb
class Foo; end

.rubocop.yml:

Style/FrozenStringLiteralComment:
Severity: warning

使用适当的标志运行Rubocop:

rubocop --fail-level error

并得到以下输出:

Inspecting 1 file
W
Offenses:
foo.rb:1:1: W: Style/FrozenStringLiteralComment: Missing frozen string literal comment.
class Foo
^

然后获取退出代码:

echo $?
0

通过将.rubocop.yml修改为使用error而不是warning:来验证它是否按预期工作

Style/FrozenStringLiteralComment:
Severity: error

再次运行并获得输出:

rubocop --fail-level error
Inspecting 1 file
E
Offenses:
foo.rb:1:1: E: Style/FrozenStringLiteralComment: Missing frozen string literal comment.
class Foo
^
1 file inspected, 1 offense detected

获取退出代码:

echo $?
1

最新更新