8 个不稳定版本 (3 个破坏性更新)
0.33.2 | 2023 年 4 月 19 日 |
---|---|
0.33.1 | 2023 年 4 月 18 日 |
0.31.0 | 2023 年 3 月 1 日 |
0.30.0 | 2022 年 12 月 25 日 |
0.0.2 | 2021 年 8 月 31 日 |
#375 in 编码
每月下载量:24
675KB
14K SLoC
adlt README
这个 Rust 包提供了一组库和工具,帮助您处理汽车 DLT(诊断日志和跟踪,见 GENIVI 或 AUTOSAR)文件。
注意:这是一个非常早期的版本,也是我的第一个 Rust 项目。可能存在大量错误或限制/部分实现。接口可能会频繁更改!
功能
-
打开任意大小的 DLT 文件。
-
生命周期检测功能,包括检测(有点启发式)具有内存挂起的 ECU 的"SUSPEND/RESUME"生命周期。
-
考虑生命周期的时间戳排序。
-
筛选...
-
远程服务器支持:通过 wss 提供请求。例如,与 DLT-Logs Visual Studio Code 扩展 一起使用。
-
内置 插件,例如
- 非详尽消息解码(仅远程)
- SOME/IP 负载解码(仅远程),
- 重写消息时间戳或负载文本(仅远程),
- 文件传输提取/检测(远程和控制台)。
使用示例
命令行工具
显示 convert 命令的帮助信息
adlt convert -h
打印 DLT 文件的 ascii 表示
adlt convert -a <dlt_file>
显示 DLT 文件的所有生命周期(ecu、时间范围、消息数量和软件版本)
adlt convert <dlt_file>
...
have 3 lifecycles:
LC# 1: ECU1 2021/06/24 08:50:58.529663 - 08:53:51 # 26523 <sw version if contained as GET_SW_VERSION response>
LC# 2: ECU1 2021/06/24 08:54:29 RESUME - 08:55:08 # 181337 <sw version>
LC# 3: DLOG 2021/06/24 08:54:44.945600 - 08:54:44 # 1
按生命周期输出/提取特定生命周期到文件,并按时间戳排序
adlt convert <dlt_file> # to see the lifecycle ids. here e.g. LC# 1: ... and LC# 2: ...
adlt convert -l 1 2 -o <new_file> --sort <dlt_file> # export LC #1 and #2 sorted into new_file
输出匹配筛选器的消息到新文件
# filter_file can be in dlt-convert format as a list of APID CTIDs. E.g. echo "API1 CTI1 API2 CTI2 " > filter_file
# or it can be in dlt-viewer dlf format (xml file with <?xml...><dltfilter><filter>... )
adlt convert -f <filter_file> -o <new_file> <dlt_file> # export all messages fitting to filter_file sorted into new_file
# lifecycle filters -l ... or sorting --sort can be applied as well!
显示生命周期和嵌入式文件传输
adlt convert --file_transfer=true --file_transfer_apid SYS --file_transfer_ctid FILE <dlt_file>
从一组 DLT 文件将所有核心转储导出到 'dumps' 目录
adlt convert --file_transfer='core*.gz' --file_transfer_path dumps --file_transfer_apid SYS --file_transfer_ctid FILE '**/*.dlt'
...
LC# 35: ECU1 2020/12/19 10:29:22.158128 - 10:29:39 # 15115
have 6 file transfers:
LC# 12: 'context.1584997735.controller.812.txt', 60kb
LC# 12: 'core.1584997735.controller.812.gz', 115kb , saved as: 'dumps/core.1584997735.controller.812.gz'
LC# 20: 'context.1585074417.controller.802.txt', 60kb
LC# 20: 'core.1585074417.controller.802.gz', 115kb , saved as: 'dumps/core.1585074417.controller.802.gz'
LC# 35: 'screenshot_20741013-092935_KOMBI.png', 7kb
LC# 35: 'screenshot_20741013-092935_HUD.png', 1kb
已知问题
进行中...
如何安装二进制文件
您可以使用来自 adlt/releases 的预构建二进制文件,或者构建自己的二进制文件
如何构建
cargo build
cargo test
cargo build --release
从单元测试中确定代码覆盖率
要安装grcov支持
cargo install grcov
rustup install nightly
rustup default stable
rustup component add llvm-tools-preview
要生成覆盖率
rm -rf ./target *.prof*
export RUSTFLAGS="-Zinstrument-coverage"
export LLVM_PROFILE_FILE="your_name-%p-%m.profraw"
cargo +nightly build
cargo +nightly test
grcov . --binary-path ./target/debug/ -s . -t html --branch --ignore-not-existing -o ./coverage/
cd coverage
open ./index.html
运行基准测试
基准测试使用criterion和cargo-criterion。要安装
cargo install cargo-criterion
要运行
cargo criterion
or
cargo bench
结果将在控制台打印,并且HTML报告将创建在
target/criterion/reports/index.html或target/criterion/report/index.html。
要保存基线使用
cargo bench --bench dlt_benches -- --save-baseline <name>
与保存的基线进行比较
cargo bench --bench dlt_benches -- --baseline <saved_baseline_name>
执行发布
cog bump --auto
检查提交消息
cog check -l
贡献
欢迎任何和所有的测试、代码或反馈贡献。打开问题或创建一个pull请求,使这个库更好地服务于每个人。
欢迎捐赠!(联系我进行商业用途或不同许可)
贡献者
发行说明
查看变更日志
第三方内容
此库利用了大量在MIT或MPL-2.0或Apache-2.0许可下分发的惊人的第三方组件。感谢作者们!
在Cargo.toml的依赖关系部分查看详细信息。
使用cocogitto强制执行传统提交消息。使用codecov托管代码覆盖率结果。谢谢!
依赖关系
~16–28MB
~490K SLoC