144 lines
4.8 KiB
Markdown
144 lines
4.8 KiB
Markdown
# 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) | 系统架构 |
|