A group of Rust projects for interacting with the SARIF format.
Parse cargo clippy output, convert to SARIF (clippy-sarif), then pretty print the SARIF to terminal (sarif-fmt).
$ cargo clippy --message-format=json | clippy-sarif | sarif-fmt $ warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` ┌─ sarif-fmt/src/bin.rs:423:13 │ 423 │ ╭ the_rule 424 │ │ .full_description 425 │ │ .as_ref() 426 │ │ .and_then(|mfms| Some(mfms.text.clone())) │ ╰───────────────────────────────────────────────────────^ │ = `#[warn(clippy::bind_instead_of_map)]` on by default for further information visit https://rust-lang.github.io/rust-clippy/master#bind_instead_of_mapEach CLI may be installed via cargo, cargo-binstall or directly downloaded from the corresponding Github release.
cargo install <cli_name> # ex. cargo install sarif-fmtcargo binstall <cli_name> # ex. cargo binstall sarif-fmtThe latest version is continuously published and tagged.
Using curl,
# make sure to adjust the target and version (you may also want to pin to a specific version) curl -sSL https://github.com/psastras/sarif-rs/releases/download/shellcheck-sarif-v0.8.0/shellcheck-sarif-x86_64-unknown-linux-gnu -o shellcheck-sarifsudo dnf install <cli_name> # ex. cargo binstall sarif-fmtThrough the nix cli,
nix --accept-flake-config profile install github:psastras/sarif-rsOr from FlakeHub.
See each subproject for more detailed information:
clang-tidy-sarif: CLI tool to convertclang-tidydiagnostics into SARIF. See the Rust documentation.clippy-sarif: CLI tool to convertclippydiagnostics into SARIF. See the Rust documentation.hadolint-sarif: CLI tool to converthadolintdiagnostics into SARIF. See the Rust documentation.miri-sarif: CLI tool to convertmiridiagnostics into SARIF. See the Rust documentation.shellcheck-sarif: CLI tool to convertshellcheckdiagnostics into SARIF. See the Rust documentation.sarif-fmt: CLI tool to pretty print SARIF diagnostics. See the Rust documentation.serde-sarif: Typesafe SARIF structures for serializing and deserializing SARIF information using serde. See the Rust documentation.
Before you begin, ensure the following programs are available on your machine:
Enter the development shell provisioned by nix and build / test the project:
nix develop cargo build cargo testFor more information on specific configurations, refer to the cargo documentation.
Enter the development shell provisioned by nix and build / test the project:
# build all crates nix build # optionally, you may build a single crate nix build ".#sarif-fmt"To release a new version (publish to crates.io), prefix the head commit with release: and update the relevant rust crate versions. Once merged into main the pipeline should pick up the change and publish a new version.
License: MIT