This action runs rubocop with reviewdog on pull requests to improve code review experience.
github-pr-check
By default, with reporter: github-pr-check
an annotation is added to the line:
github-pr-review
With reporter: github-pr-review
a comment is added to the Pull Request Conversation:
fail_level
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
.
fail_on_error
Deprecated, use fail_level
instead.
Optional. Exit code for reviewdog when errors are found [true
, false
].
Default is false
.
filter_mode
Optional. Filtering mode for the reviewdog command [added
, diff_context
, file
, nofilter
].
Default is added
.
github_token
GITHUB_TOKEN
. Default is ${{ github.token }}
.
level
Optional. Report level for reviewdog [info
, warning
, error
].
It's same as -level
flag of reviewdog.
only_changed
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
reporter
Optional. Reporter of reviewdog command [github-pr-check
, github-check
, github-pr-review
].
The default is github-pr-check
.
reviewdog_flags
Optional. Additional reviewdog flags.
rubocop_extensions
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:
rubocop-rails rubocop-rspec
): install latest versionrubocop-rails:gemfile rubocop-rspec:gemfile
: install version from Gemfile (Gemfile.lock
should be presented, otherwise it will fallback to latest bundler version)rubocop-rails:1.7.1 rubocop-rspec:2.0.0
): install said versionYou can combine gemfile
, fixed and latest bundle version as you want to.
rubocop_flags
Optional. Rubocop flags. (rubocop <rubocop_flags>
).
rubocop_version
Optional. Set rubocop version. Possible values:
gemfile
: install version from Gemfile (Gemfile.lock
should be presented, otherwise it will fallback to latest bundler version)0.90.0
): install said versionskip_install
Optional. Do not install Rubocop or its extensions. Default: false
.
tool_name
Optional. Tool name to use for reviewdog reporter. Useful when running multiple actions with different config.
use_bundler
Optional. Run Rubocop with bundle exec. Default: false
.
workdir
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