24 个版本 (12 个稳定版)
使用旧的 Rust 2015
3.2.2 | 2018年4月10日 |
---|---|
3.2.0 | 2018年3月29日 |
3.1.0 | 2017年7月29日 |
3.0.1-beta | 2017年3月25日 |
0.5.0 | 2015年7月26日 |
#257 in 测试
被 3 个 Crates 使用 2 个直接使用
87KB
2K SLoC
lcov-parser
LCOV 报告解析器。
基本用法
创建一个 LCOVParser 对象,然后解析数据。
extern crate lcov_parser;
use lcov_parser:: { LCOVParser, LCOVRecord };
fn main() {
let content = concat!(
"TN:test_name\n",
"SF:/path/to/source.rs\n",
"DA:1,2\n",
"DA:2,1\n",
"DA:3,5\n",
"end_of_record\n"
);
let mut parser = LCOVParser::new(content.as_bytes());
loop {
match parser.next().expect("parse the report") {
None => { break; },
Some(record) => match record {
LCOVRecord::TestName(name) => println!("Test: {}", name.unwrap()),
LCOVRecord::SourceFile(file_name) => println!("File: {}", file_name),
LCOVRecord::Data(data) => println!("Line: {}, Executed: {}", data.line, data.count),
LCOVRecord::EndOfRecord => println!("Finish"),
_ => { continue; }
}
}
}
}
解析文件
也可以用于解析报告文件。
let mut parser = LCOVParser::from_file("../../../fixture/report.lcov").unwrap();
loop {
match parser.next().expect("parse the report") {
None => { break; },
Some(record) => match record {
LCOVRecord::SourceFile(file_name) => println!("File: {}", file_name),
LCOVRecord::EndOfRecord => println!("Finish"),
_ => { continue; }
}
}
}
解析所有
您可以使用 parse 方法解析所有内容。
let records = {
let mut parser = LCOVParser::from_file("../../../fixture/report.lcov").unwrap();
parser.parse().expect("parse the report")
};
for record in records.iter() {
match record {
&LCOVRecord::SourceFile(ref file_name) => println!("File: {}", file_name),
&LCOVRecord::EndOfRecord => println!("Finish"),
_ => { continue; }
}
}
合并报告
您可以使用 merge_files 合并报告。
您可以通过指定文件名来保存合并后的报告。
extern crate lcov_parser;
use lcov_parser:: { merge_files };
fn main() {
let trace_files = [
"../../../tests/fixtures/fixture1.info",
"../../../tests/fixtures/fixture2.info"
];
let _ = match merge_files(&trace_files) {
Ok(report) => report.save_as("/tmp/merged_report.info"),
Err(err) => panic!(err)
};
}
许可协议
以下任一许可协议下许可:
- Apache License,版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT),任选其一。
依赖
~770KB
~17K SLoC