I am using the following command to run Rubocop on Travis CI, is there anyway I can enforce to exit with 0 only when finding errors
bundle exec rubocop
- I have a cop which is configured as a warning in
rubocop.yml
:
Style/Documentation:
Severity: warning
Travis CI treats a command as a successful one only if its exit code is equal to 0
.
Rubocop returns 0
as exit code when it finds no warnings
but when it finds at least one offence,
it returns 1
as exit code, no matter whether this offence is an error or a warning.
As a result, Travis CI builds are failed when only warnings are found by Rubocop.
Thanks in advance…
-SU
Try using the --fail-level
flag with the appropriate severity
level:
rubocop --fail-level error
You can read more about this flag in the Rubocop Docs for command line flags and the severity
level in the Rubocop Docs for Generic configuration parameters. If you’re not familar with them already.
Given enforce.rb
:
# enforce.rb
class Enforce; end
And .rubocop.yml
:
Style/FrozenStringLiteralComment:
Severity: warning
Run Rubocop with the appropriate flags:
rubocop --fail-level error
And get the following output:
Inspecting 1 file
W
Offenses:
foo.rb:1:1: W: Style/FrozenStringLiteralComment: Missing frozen string literal comment.
class Enforce
^
And then get the exit code:
echo $?
0
Verify this is working as expected by modifying your .rubocop.yml
to use error
rather than warning
just as a cursory test:
Style/FrozenStringLiteralComment:
Severity: error
Run this again, and get this:
rubocop --fail-level error
Inspecting 1 file
E
Offenses:
enforce.rb:1:1: E: Style/FrozenStringLiteralComment: Missing frozen string literal comment.
class Enforce
^
1 file inspected, 1 offense detected
And get the exit code:
echo $?
1
Hope this helps. Please let me know, and I’ll get back to you.
1 Like