Skip to content

📋 GitHub Action for PR annotations with rustfmt suggestions

License

Notifications You must be signed in to change notification settings

clechasseur/rs-fmt-check

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

rs-fmt-check Action

MIT licensed CI

Rustfmt suggestions in your Pull Requests

This GitHub Action executes rustfmt and posts all suggestions as annotations for the pushed commit 2.

Screenshot of a rustfmt suggestion displayed in the commit interface of GitHub

This GitHub Action is based on clechasseur/rs-clippy-check, which itself has been forked from actions-rs/clippy-check. See LICENSE for copyright attribution details.

Example workflow

Note: this workflow uses actions-rust-lang/setup-rust-toolchain to install the most recent nightly rustfmt 1.

name: Rustfmt check

on: push

jobs:
  rustfmt_check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: nightly
          components: rustfmt
      - uses: clechasseur/rs-fmt-check@v2

Inputs

All inputs are optional.

Name Description Type Default
toolchain Rust toolchain to use 1 string nightly
args Arguments for the cargo fmt command string
working-directory Directory where to perform the cargo fmt command string

For extra details about the toolchain and args inputs, see rs-cargo Action.

Notes

1 : This action currently relies on an unstable rustfmt feature (emit json) and as such, requires a nightly toolchain at the minimum. You should not change the value of the toolchain parameter unless you know the specified toolchain supports the feature correctly.

2 : Currently, GitHub sets a limit of 10 warning annotations per run (see this page for more information). So if there are more than 10 suggestions returned by rustfmt, only the first 10 will appear as PR annotations. The other suggestions will still appear in the check run summary (see this one for example).