# SoftBus OPC 代码统计与可控性报告 > 工程路径:`softbus_OPC/` > 统计日期:2026-06-24(自主化改造完成后) > 统计口径:有效行数 = 非空行(注释未做 AST 级剔除,与专业测评工具存在约 ±5% 偏差) > 参考标准:T/ISC 0043-2024 及 [submission_scope.md](docs/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/submission_scope.md)、[docs/SBOM.md](docs/SBOM.md)。 --- ## 7. 统计复现命令 ```bash # 自研有效行数(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. 构建验证 ```bash 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/submission_scope.md) | 送检边界约定 | | [docs/SBOM.md](docs/SBOM.md) | 软件物料清单 | | [third_party/README.md](third_party/README.md) | 第三方目录说明 | | [docs/软件总体架构.md](docs/软件总体架构.md) | 系统架构 |