#git-diff #clippy #git #diagnostics #cargo #cargo-clippy

bin+lib cargo-diff-tools

A tool to hide warning messages reported on source code lines that are not part of a git diff

3 releases

0.1.2 May 4, 2021
0.1.1 May 3, 2021
0.1.0 May 3, 2021

#27 in #clippy

Download history 754/week @ 2024-11-17 453/week @ 2024-11-24 874/week @ 2024-12-01 966/week @ 2024-12-08 611/week @ 2024-12-15 467/week @ 2024-12-22 630/week @ 2024-12-29 834/week @ 2025-01-05 804/week @ 2025-01-12 936/week @ 2025-01-19 814/week @ 2025-01-26 1130/week @ 2025-02-02 1276/week @ 2025-02-09 1103/week @ 2025-02-16 1051/week @ 2025-02-23 727/week @ 2025-03-02

4,200 downloads per month

MIT/Apache

18KB
363 lines

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.

Examples

Run cargo clippy hiding the warning messages whose primary line is not included in a git origin/master HEAD:

cargo-clippy-diff origin/master HEAD

The same, for cargo check:

cargo-check-diff origin/master HEAD

Various git diff arguments are supported:

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 --:

cargo-check-diff HEAD -- --all-features

Place cargo clippy arguments after a -- (note that the second -- is one of clippy's arguments):

cargo-clippy-diff HEAD -- --all-features -- -D clippy::lint_name

To display diagnostics as JSON objects, use --output=json:

cargo-clippy-diff --output=json origin/master HEAD

To display diagnostics as workflow commands in GitHub Actions (useful to automatically add comments to pull requests), use --output=github:

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:

cargo build --message-format=json-diagnostic-rendered-ansi \
    | filter-by-diff --output=rendered origin/master HEAD

Dependencies

~4.5–6.5MB
~113K SLoC