diff --git a/.github/workflows/oxipng.yml b/.github/workflows/oxipng.yml index 871a8b35..e606ef14 100644 --- a/.github/workflows/oxipng.yml +++ b/.github/workflows/oxipng.yml @@ -102,25 +102,33 @@ jobs: - name: Install nextest uses: taiki-e/install-action@nextest - - name: Run rustfmt + - name: Install cargo-hack if: matrix.target == 'x86_64-unknown-linux-gnu' - run: cargo fmt --check + uses: taiki-e/install-action@cargo-hack - - name: Run Clippy (no default features) + - name: Install clippy-sarif if: matrix.target == 'x86_64-unknown-linux-gnu' - uses: giraffate/clippy-action@v1 + uses: taiki-e/install-action@v2 with: - clippy_flags: --no-deps --all-targets --no-default-features -- -D warnings - reporter: github-check - fail_on_error: true + tool: clippy-sarif - - name: Run Clippy (all features) + - name: Install sarif-fmt if: matrix.target == 'x86_64-unknown-linux-gnu' - uses: giraffate/clippy-action@v1 + uses: taiki-e/install-action@v2 with: - clippy_flags: --no-deps --all-targets --all-features -- -D warnings - reporter: github-check - fail_on_error: true + tool: sarif-fmt + + - name: Run rustfmt + if: matrix.target == 'x86_64-unknown-linux-gnu' + run: cargo fmt --check + + - name: Run Clippy for all feature combinations + if: matrix.target == 'x86_64-unknown-linux-gnu' + run: > + cargo hack clippy --no-deps --all-targets --feature-powerset --exclude-features sanity-checks --message-format=json -- -D warnings + | clippy-sarif + | tee clippy-results.sarif + | sarif-fmt - name: Run tests run: | @@ -145,6 +153,13 @@ jobs: target/${{ env.CARGO_BUILD_TARGET }}/release/oxipng target/${{ env.CARGO_BUILD_TARGET }}/release/oxipng.exe + - name: Upload analysis results to GitHub + uses: github/codeql-action/upload-sarif@v3 + if: always() && matrix.target == 'x86_64-unknown-linux-gnu' + with: + sarif_file: clippy-results.sarif + category: clippy + msrv-check: name: MSRV check diff --git a/src/main.rs b/src/main.rs index 7fe66a26..33b793a7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -329,10 +329,10 @@ fn parse_opts_into_struct( if let Some(iterations) = NonZeroU8::new(15) { opts.deflate = Deflaters::Zopfli { iterations }; } - } else if let Deflaters::Libdeflater { compression } = &mut opts.deflate { - if let Some(x) = matches.get_one::("compression") { - *compression = *x as u8; - } + } else if let (Deflaters::Libdeflater { compression }, Some(x)) = + (&mut opts.deflate, matches.get_one::("compression")) + { + *compression = *x as u8; } #[cfg(feature = "parallel")] diff --git a/src/rayon.rs b/src/rayon.rs index d53ae024..8f538909 100644 --- a/src/rayon.rs +++ b/src/rayon.rs @@ -1,3 +1,5 @@ +#![allow(dead_code)] + pub mod prelude { pub use super::*; }