clippy-check
Action
Rust
Clippy lints in your Pull Requests
This GitHub Action executes clippy
and posts all lints as annotations for the pushed commit, as in the live example here.
Example workflow
This example is utilizing toolchain
Actions
to install the most recent nightly
clippy version.
on: push
name: Clippy check
jobs:
clippy_check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly
components: clippy
override: true
- uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features
With stable clippy
on: push
name: Clippy check
jobs:
clippy_check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- run: rustup component add clippy
- uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features
Inputs
Name | Required | Description | Type | Default |
---|---|---|---|---|
token |
✓ | GitHub secret token, usually a ${{ secrets.GITHUB_TOKEN }} |
string | |
toolchain |
Rust toolchain to use; override or system default toolchain will be used if omitted | string | ||
args |
Arguments for the cargo clippy command |
string | ||
use-cross |
Use cross instead of cargo |
bool | false | |
name |
Name of the created GitHub check. If running this action multiple times, each run must have a unique name. | string | clippy |
For extra details about the toolchain
, args
and use-cross
inputs,
see cargo
Action documentation.
NOTE: if your workflow contains multiple instances of the clippy-check
action you will need to give each invocation a unique name, using the name
property described above.
Check runs must have a unique name, and this prevents a later check run overriding a previous one within the same workflow.
Limitations
Due to token permissions,
this Action WILL NOT be able to post clippy
annotations for Pull Requests from the forked repositories.
This is a pretty big problem, which can be solved only by Github themselves,
see #2 for details.
As a fallback this Action will output all clippy messages into the stdout
and fail the result correspondingly.