45个版本

0.6.5 2024年8月6日
0.6.0 2024年7月30日
0.4.2 2023年9月7日
0.4.1 2023年7月30日
0.2.16 2021年7月7日

178编码 中排名

Download history 4227/week @ 2024-04-28 5501/week @ 2024-05-05 5886/week @ 2024-05-12 5918/week @ 2024-05-19 5808/week @ 2024-05-26 5925/week @ 2024-06-02 5569/week @ 2024-06-09 5324/week @ 2024-06-16 6059/week @ 2024-06-23 5694/week @ 2024-06-30 6613/week @ 2024-07-07 5339/week @ 2024-07-14 5661/week @ 2024-07-21 6307/week @ 2024-07-28 5136/week @ 2024-08-04 4597/week @ 2024-08-11

22,132 每月下载量
14 个crate中使用 (直接使用8个)

MIT 许可证

46KB
1K SLoC

Workflow Status

serde-sarif

此crate提供了一个与serde兼容的SARIF结构。它旨在用于可能需要读取或写入SARIF文件的Rust代码。

最新的文档可在此找到。

serde是Rust的一个流行的序列化框架。更多信息可以在官方仓库中找到:https://github.com/serde-rs/serde

SARIF或静态分析结果交换格式是静态分析工具输出的行业标准格式。更多信息可以在官方网站上找到:https://sarifweb.azurewebsites.net/

用法

对于大多数情况,只需使用带有[serde]的根sarif::Sarif结构即可进行读取和写入。

示例

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()
);

由于许多sarif::Sarif结构包含许多可选字段,因此经常使用构建器模式来构建这些结构。每个结构都有一个构建器方法来完成此操作。

示例

use serde_sarif::sarif::Message;

let message = Message::builder()
  .id("id")
  .build();

这使用TypedBuilder进行编译时类型检查。

内部实现细节

sarif::Sarif结构自动从最新的Sarif JSON模式生成,这是在构建时完成的(通过构建脚本)。

Crate功能

此crate包含不同的功能,具体取决于您的用例。

示例

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

转换器

  • clang-tidy-converters 提供了Clang tidy和SARIF类型之间的转换
  • clippy-converters 提供了Clippy和SARIF类型之间的转换
  • hadolint-converters 提供了hadolint和SARIF类型之间的转换
  • shellcheck-converters 提供了shellcheck和SARIF类型之间的转换

许可证:MIT

依赖项

~1–2.5MB
~49K SLoC