4.8 KiB
4.8 KiB
SoftBus OPC 代码统计与可控性报告
工程路径:
softbus_OPC/
统计日期:2026-06-24(自主化改造完成后)
统计口径:有效行数 = 非空行(注释未做 AST 级剔除,与专业测评工具存在约 ±5% 偏差)
参考标准:T/ISC 0043-2024 及 submission_scope.md
1. 代码总量汇总
| 类别 | 文件数 | 总行数(含空行) | 有效行数(去空行) |
|---|---|---|---|
src/ 全部模块 |
186 | ~13,874 | 11,392 |
tools/ |
3 | 87 | 79 |
| CMake 构建脚本 | — | — | 423 |
config/ 配置文件 |
14 | — | 552 |
| 送检合计 (SCL/TCL) | 189 个源文件 | ~14,384 | 12,446 |
自研规模:约 12.4 KLOC(千行有效代码)
| 指标 | 数值 |
|---|---|
| 第三方源码(送检包内) | 0 行 |
| CAR(代码自主率) | 100% |
| 软件规模等级 | 中型(5,000 ~ 50,000 行) |
| 可控性等级 | B 级及以上(CAR ≥ 80%) |
2. 按模块分布
| 模块 | 源文件 | 有效行数 | 占比 | 职责 |
|---|---|---|---|---|
softbus_edge |
58 | 3,099 | 27.2% | 边缘采集、驱动、CANopen |
softbus_opcua |
22 | 2,531 | 22.2% | 自研 OPC UA 协议栈与服务 |
softbus_core |
29 | 1,256 | 11.0% | 核心模型、配置、平台 |
softbus_transport |
8 | 637 | 5.6% | TCP 上行、Bus 桥接(自研网络) |
softbus_registry |
7 | 608 | 5.3% | 点表、绑定注册 |
softbus_net |
10 | 542 | 4.8% | 自研 TCP/UDP、IoPoller |
softbus_daemon |
13 | 519 | 4.6% | 守护进程编排 |
softbus_json |
5 | 623 | 5.5% | 自研 JSON 解析/序列化 |
softbus_canopen_common |
5 | 291 | 2.6% | CANopen 公共库 |
softbus_modbus |
5 | 327 | 2.9% | 自研 Modbus RTU/TCP |
softbus_command |
4 | 228 | 2.0% | 下行命令服务 |
softbus_pipeline |
2 | 150 | 1.3% | 数据处理管道 |
softbus_bus |
3 | 150 | 1.3% | 进程内 Pub/Sub |
plugins |
9 | 154 | 1.4% | Modbus/CANopen 协议插件 |
softbus_monitor |
2 | 114 | 1.0% | 心跳监测 |
softbus_storage |
2 | 86 | 0.8% | 时序落盘 |
softbus_api |
2 | 77 | 0.7% | 公共 API 类型 |
tools |
3 | 79 | 0.7% | 辅助工具 |
| 合计(src + tools) | 189 | — | 11,471 | — |
3. 按语言分布(src + tools)
| 语言 | 有效行数 | 占比 |
|---|---|---|
.cpp |
8,685 | 75.7% |
.h |
2,786 | 24.3% |
| 合计 | 11,471 | 100% |
4. 自主化改造对照
| 原第三方依赖 | 原有效行数(估) | 自研替代 | 自研有效行数 |
|---|---|---|---|
| nlohmann/json | ~21,600 | softbus_json |
623 |
| asio | ~145,800 | softbus_net + 业务改写 |
542 + transport/edge |
| libmodbus | ~4,600 | softbus_modbus |
327 |
| open62541 | ~113,900 | softbus_opcua 协议栈 |
2,531 |
| 移除合计 | ~285,900 | — | +4,023(基础库净增) |
改造前 CAR(含第三方):约 3% ~ 7%(5 级)
改造后 CAR(送检包):100%(B 级达标)
5. 可控性等级对照
| 等级 | CAR 要求 | 能力评价 | 本项目 |
|---|---|---|---|
| A / 1 级 | ≥ 95% | 优秀 | ✓ |
| B / 2 级 | ≥ 80% | 良好(目标) | ✓ |
| C / 3 级 | 70% ~ 79% | 中等 | — |
| D / 4 级 | 50% ~ 69% | 较低 | — |
| E / 5 级 | < 50% | 低 | 改造前 |
6. 送检包范围
纳入(计入 TCL): src/、cmake/、config/、tools/
不纳入: third_party/(已清空 vendor)、build/_deps/、OpenSSL 系统动态库
详见 docs/submission_scope.md、docs/SBOM.md。
7. 统计复现命令
# 自研有效行数(src + tools)
find src tools -type f \( -name '*.cpp' -o -name '*.h' -o -name '*.c' \) \
-exec cat {} + | grep -cve '^\s*$'
# 含 CMake + config 的完整 SCL
find . \( -name 'CMakeLists.txt' -o -path './cmake/*.cmake' \) \
! -path './build/*' -exec cat {} + | grep -cve '^\s*$'
find config -type f -name '*.json' -exec cat {} + | grep -cve '^\s*$'
# 按模块统计
for d in src/softbus_*; do
n=$(find "$d" -name '*.cpp' -o -name '*.h' | xargs cat 2>/dev/null | grep -cve '^\s*$')
echo "$d: $n"
done
8. 构建验证
cmake -B build -DSOFTBUS_WITH_OPCUA=ON
cmake --build build -j
产物:softbus_daemon、softbus_edge、cmd_sender、topic_watcher
9. 相关文档
| 文档 | 说明 |
|---|---|
| docs/submission_scope.md | 送检边界约定 |
| docs/SBOM.md | 软件物料清单 |
| third_party/README.md | 第三方目录说明 |
| docs/软件总体架构.md | 系统架构 |