Mar*_*n13 3 ruby continuous-integration travis-ci rubocop
题
0当只发现警告时,是否可以告诉 Rubocop作为退出代码返回?
先决条件
我正在使用以下命令在 Travis CI 上运行 Rubocop:
bundle exec rubocop
Run Code Online (Sandbox Code Playgroud)
我有一个配置为警告的警察rubocop.yml:
Style/Documentation:
Severity: warning
Run Code Online (Sandbox Code Playgroud)
问题
Travis CI 仅当其退出代码等于 时才将命令视为成功的命令0。
当 Rubocop0没有发现任何违规行为时,它会作为退出代码返回,
但当它发现至少一项罪行时,
1无论此攻击是错误还是警告,它都会作为退出代码返回。
因此,当 Rubocop 仅发现警告时,Travis CI 构建失败。
因此,是否可以0在仅发现警告时告诉 Rubocop作为退出代码返回?
提前致谢。
笔记
请不要建议禁用警察。
我正在使用以下方法检查退出代码:
$ bundle exec rubocop
// ...
14 files inspected, 8 offenses detected
$ echo "$?"
1
Run Code Online (Sandbox Code Playgroud)
使用--fail-level具有适当severity级别的标志:
rubocop --fail-level error
Run Code Online (Sandbox Code Playgroud)
您可以在Rubocop Docs 中阅读有关命令行标志的更多信息severity,以及Rubocop Docs 中通用配置参数的级别。
鉴于foo.rb:
# foo.rb
class Foo; end
Run Code Online (Sandbox Code Playgroud)
并且.rubocop.yml:
Style/FrozenStringLiteralComment:
Severity: warning
Run Code Online (Sandbox Code Playgroud)
使用适当的标志运行 Rubocop:
rubocop --fail-level error
Run Code Online (Sandbox Code Playgroud)
并得到以下输出:
Inspecting 1 file
W
Offenses:
foo.rb:1:1: W: Style/FrozenStringLiteralComment: Missing frozen string literal comment.
class Foo
^
Run Code Online (Sandbox Code Playgroud)
然后获取退出代码:
echo $?
0
Run Code Online (Sandbox Code Playgroud)
通过修改您.rubocop.yml使用error而不是验证它是否按预期工作warning:
Style/FrozenStringLiteralComment:
Severity: error
Run Code Online (Sandbox Code Playgroud)
再次运行并得到输出:
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
Run Code Online (Sandbox Code Playgroud)
并获取退出代码:
echo $?
1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
489 次 |
| 最近记录: |