# Cargo diff-tools Run `cargo check` and `cargo clippy` hiding the warning messages whose primary line is not included in a `git diff`. Useful in large projects to hide warning messages that are probably not related to the changes made by a pull request. Inspired by [`Patryk27/clippy-dirty`](https://github.com/Patryk27/clippy-dirty). ## Examples Run `cargo clippy` hiding the warning messages whose primary line is not included in a `git origin/master HEAD`: ```bash cargo-clippy-diff origin/master HEAD ``` The same, for `cargo check`: ```bash cargo-check-diff origin/master HEAD ``` Various `git diff` arguments are supported: ```bash cargo-clippy-diff HEAD # internally calls `git diff HEAD` cargo-clippy-diff --staged # internally calls `git diff --staged` cargo-clippy-diff first-branch...second-branch origin/master # and so on ``` Place `cargo check` arguments after a `--`: ```bash cargo-check-diff HEAD -- --all-features ``` Place `cargo clippy` arguments after a `--` (note that the second `--` is one of `clippy`'s arguments): ```bash cargo-clippy-diff HEAD -- --all-features -- -D clippy::lint_name ``` To display diagnostics as JSON objects, use `--output=json`: ```bash cargo-clippy-diff --output=json origin/master HEAD ``` To display diagnostics as [workflow commands in GitHub Actions](https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-a-warning-message) (useful to automatically add comments to pull requests), use `--output=github`: ```bash git fetch origin $GITHUB_BASE_REF --depth=1 cargo-clippy-diff --output=github $(git merge-base origin/$GITHUB_BASE_REF $GITHUB_SHA) $GITHUB_SHA # Example output "::warning file=lib.rs,line=4,col=2::Missing semicolon" ``` For other `cargo` commands, `filter-by-diff` can be used to filter any stream of JSON diagnostics: ```bash cargo build --message-format=json-diagnostic-rendered-ansi \ | filter-by-diff --output=rendered origin/master HEAD ```