#cyclone-dx #codec #decoding #bom #decode #bo-m

cyclonedx-rust

用于编码/解码 CycloneDx BoM 的库

1 个不稳定版本

0.1.2 2021 年 3 月 23 日
0.1.1 2021 年 3 月 18 日
0.1.0 2021 年 3 月 18 日

#17 in #bom

自定义许可

61KB
1.5K SLoC

cyclonedx-rust

Build Status License

cyclonedx-rust 是一个简单的库,用于编码/解码 CycloneDx BOM

您可以使用以下方法从任何读取器类型进行编码和解码

解码

CycloneDX::decode(reader: R, format: CycloneDXFormatType,) -> Result<CycloneDX, CycloneDXDecodeError>

编码

CycloneDX::encode<(writer: W, dx: CycloneDX, format: CycloneDXFormatType,) -> Result<(), CycloneDXEncodeError>

运行 cargo docs --open 获取更详细的文档


lib.rs:

#CycloneDx-Rust

CycloneDx-Rust 是一个用于编码和解码 CycloneDx 文件(XML 和 JSON 格式)的 1.2 规范的 Crate 库

要编码 CycloneDx,您可以构建结构,使用提供的 ::new() 方法,必要时传入参数,或者使用构建器模式。构建器模式在构建时创建,因此可能没有智能感应。然而,每个结构,例如

use cyclonedx_rust::CycloneDX;

CycloneDX::new(None, None, None, None);

可以按如下方式构建

use cyclonedx_rust::CycloneDXBuilder;

CycloneDXBuilder::default()
 .metadata(None)
 .components(None)
 .services(None)
 .dependencies(None)
 .build();

编码

将 CycloneDX BoM 编码到文件的一个示例

use cyclonedx_rust::{CycloneDX, CycloneDXFormatType};
use std::io::BufWriter;
use std::fs::File;

let mut buffer = BufWriter::new(File::create("foo.txt").unwrap());
let cyclone_dx = CycloneDX::new(None, None, None, None);
CycloneDX::encode(&mut buffer, cyclone_dx, CycloneDXFormatType::XML);

解码

解码 CycloneDX BoM 的一个示例

use cyclonedx_rust::{CycloneDX, CycloneDXFormatType};
use std::fs::File;
use std::io::BufReader;
use std::path::PathBuf;

let mut test_folder = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
test_folder.push("resources/test/bom-1.2.xml");
let file = File::open(test_folder);
let mut reader = BufReader::new(file.unwrap());

let result: CycloneDX = CycloneDX::decode(reader, CycloneDXFormatType::XML).unwrap();

依赖项

~4–10MB
~100K SLoC