This action runs rubocop with reviewdog on pull requests to improve code review experience.
By default, with reporter: github-pr-check
an annotation is added to the line:
With reporter: github-pr-review
a comment is added to the Pull Request Conversation:
Optional. If set to none
, always use exit code 0 for reviewdog. Otherwise, exit code 1 for reviewdog if it finds at least 1 issue with severity greater than or equal to the given level.
Possible values: [none
, any
, info
, warning
, error
]
Default is none
.
Deprecated, use fail_level
instead.
Optional. Exit code for reviewdog when errors are found [true
, false
].
Default is false
.
Optional. Filtering mode for the reviewdog command [added
, diff_context
, file
, nofilter
].
Default is added
.
GITHUB_TOKEN
. Default is ${{ github.token }}
.
Optional. Report level for reviewdog [info
, warning
, error
].
It's same as -level
flag of reviewdog.
Optional. Run Rubocop only on changed (and added) files, for speedup [true
, false
].
Default: false
.
Will fetch the tip of the base branch with depth 1 from remote origin if it is not available. If you use different remote name or customize the checkout otherwise, make the tip of the base branch available before this action
Optional. Reporter of reviewdog command [github-pr-check
, github-check
, github-pr-review
].
The default is github-pr-check
.
Optional. Additional reviewdog flags.
Optional. Set list of rubocop extensions with versions.
By default install rubocop-rails
, rubocop-performance
, rubocop-rspec
, rubocop-i18n
, rubocop-rake
with latest versions.
Provide desired version delimited by :
(e.g. rubocop-rails:1.7.1
)
Possible version values:
- empty or omit (
rubocop-rails rubocop-rspec
): install latest version rubocop-rails:gemfile rubocop-rspec:gemfile
: install version from Gemfile (Gemfile.lock
should be presented, otherwise it will fallback to latest bundler version)- version (e.g.
rubocop-rails:1.7.1 rubocop-rspec:2.0.0
): install said version
You can combine gemfile
, fixed and latest bundle version as you want to.
Optional. Rubocop flags. (rubocop <rubocop_flags>
).
Optional. Set rubocop version. Possible values:
- empty or omit: install latest version
gemfile
: install version from Gemfile (Gemfile.lock
should be presented, otherwise it will fallback to latest bundler version)- version (e.g.
0.90.0
): install said version
Optional. Do not install Rubocop or its extensions. Default: false
.
Optional. Tool name to use for reviewdog reporter. Useful when running multiple actions with different config.
Optional. Run Rubocop with bundle exec. Default: false
.
Optional. The directory from which to look for and run Rubocop. Default .
.
This action will use your RuboCop Configuration automatically.
In your Gemfile
, ensure all Rubocop gems are in a named (e.g. rubocop) group:
group :development, :rubocop do
gem 'rubocop', require: false
gem 'rubocop-rails', require: false
# ...
end
Create the following workflow. The BUNDLE_ONLY
environment variable will tell Bundler to only install the specified group.
name: reviewdog
on:
pull_request:
permissions:
contents: read
pull-requests: write
jobs:
rubocop:
name: runner / rubocop
runs-on: ubuntu-latest
env:
BUNDLE_ONLY: rubocop
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
bundler-cache: true
- uses: reviewdog/action-rubocop@v2
with:
reporter: github-pr-review # Default is github-pr-check
skip_install: true
use_bundler: true