38 releases

0.4.2 Sep 7, 2023
0.4.1 Jul 30, 2023
0.4.0 Jun 21, 2023
0.3.7 Feb 28, 2023
0.2.16 Jul 7, 2021

#272 in Encoding

Download history 3935/week @ 2023-12-14 2910/week @ 2023-12-21 3730/week @ 2023-12-28 4139/week @ 2024-01-04 3706/week @ 2024-01-11 4572/week @ 2024-01-18 3686/week @ 2024-01-25 4260/week @ 2024-02-01 5154/week @ 2024-02-08 4421/week @ 2024-02-15 4260/week @ 2024-02-22 4486/week @ 2024-02-29 5491/week @ 2024-03-07 5121/week @ 2024-03-14 3649/week @ 2024-03-21 3288/week @ 2024-03-28

18,578 downloads per month
Used in 10 crates (7 directly)

MIT license

47KB
1K SLoC

Workflow Status

serde-sarif

WARNING: VERY UNSTABLE (EARLY IMPLEMENTATION)

This crate provides a type safe serde compatible SARIF structure. It is intended for use in Rust code which may need to read or write SARIF files.

The latest documentation can be found here.

serde is a popular serialization framework for Rust. More information can be found on the official repository: https://github.com/serde-rs/serde

SARIF or the Static Analysis Results Interchange Format is an industry standard format for the output of static analysis tools. More information can be found on the official website: https://sarifweb.azurewebsites.net/.

Usage

For most cases, simply use the root sarif::Sarif struct with [serde] to read and write to and from the struct.

Example

use serde_sarif::sarif::Sarif;

let sarif: Sarif = serde_json::from_str(
  r#"{ "version": "2.1.0", "runs": [] }"#
).unwrap();

assert_eq!(
  sarif.version.to_string(),
  "\"2.1.0\"".to_string()
);

Because many of the sarif::Sarif structures contain a lot of optional fields, it is often convenient to use the builder pattern to contstruct these structs. Each structure has a builder with a default.

Example

use serde_sarif::sarif::MessageBuilder;

let message = MessageBuilder::default()
  .id("id")
  .build()
  .unwrap();

Internal Implementation Details

The root sarif::Sarif struct is automatically generated from the latest Sarif JSON schema, this is done at build time (via the buildscript).

Crate Features

This crate contains different features which may be enabled depndending on your use case.

Example

[dependencies]
serde-sarif = { version = "*", features = ["clippy-converters"] }

Converters

  • clang-tidy-converters Provides conversions between clang tidy and SARIF types
  • clippy-converters Provides conversions between Clippy and SARIF types
  • hadolint-converters Provides conversions between hadolint and SARIF types
  • shellcheck-converters Provides conversions between shellcheck and SARIF types

License: MIT

Dependencies

~1.4–2.8MB
~57K SLoC