Files
softbus_OPC/count.md

144 lines
4.8 KiB
Markdown
Raw Normal View History

2026-06-24 16:25:02 +08:00
# 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) | 系统架构 |