问题
当只发现警告时,是否可以告诉Rubocop返回0
作为退出代码?
先决条件
-
我使用以下命令在Travis CI上运行Rubocop:
bundle exec rubocop
-
我有一个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