启用constVariablePointer检查并修复6处指针const化

.pre-commit-config.yaml: 移除 --suppress=constVariablePointer
net_select.c: 5 处 p_sock 改 const net_sock_t *(仅只读使用)
net_socket.c: net_getsockname 的 p_sock 改 const(只读字段)
docs/代码规范/cppcheck使用说明.md: 同步抑制表与处理记录
This commit is contained in:
2026-09-01 15:11:17 +08:00
parent 1e964157d7
commit 07afb7b468
4 changed files with 10 additions and 13 deletions
+2 -5
View File
@@ -74,7 +74,7 @@ cppcheck 是开源 C/C++ 静态分析工具,**不运行代码**,通过语法
| 规则 | 检查什么 | 备注 |
|---|---|---|
| `constVariable` / `constVariablePointer` | 变量/指针可加 const 防误改 | `constVariablePointer` 当前**已抑制**(改动量大)|
| `constVariable` / `constVariablePointer` | 变量/指针可加 const 防误改 | 已全库启用并修复 |
| `constParameter` / `constParameterPointer` / `constParameterCallback` | 参数可加 const | 回调相关两条**已抑制**(HAL 签名不可改)|
| `variableScope` | 变量作用域可缩小(声明移入实际使用的最内层块)| 已全库修复 |
| `functionStatic` / `staticFunction` | 函数可加 static 限制可见性 | 本库函数多被外部引用,命中少 |
@@ -137,9 +137,6 @@ cppcheck 是开源 C/C++ 静态分析工具,**不运行代码**,通过语法
--suppress=noExplicitConstructor # C++ 兼容,不影响纯 C
--suppress=useStlAlgorithm # C++ STL 相关,不影响纯 C
# --- 暂时抑制(噪音多,后续可移除) ---
--suppress=constVariablePointer # 局部指针加 const 是好习惯,但当前改动量大
# --- 头文件路径 ---
-I Inc -I App -I Drivers/BSP
-I Drivers/STM32F4xx_HAL_Driver/Inc -I Drivers/CMSIS/Include
@@ -172,7 +169,6 @@ args: ['--enable=warning,performance,portability,style', '--error-exitcode=1',
|---|---|---|
| `constParameterPointer` | HAL 回调签名由驱动框架定义,用户不能改 | 永久 |
| `constParameterCallback` | 同上,回调函数指针类型受限 | 永久 |
| `constVariablePointer` | 局部指针加 const 是好习惯,但当前代码量大、改动多 | 暂时 |
| `unusedFunction` | CubeMX 生成的弱符号、第三方库回调被误报 | 永久 |
| `unusedStructMember` | HAL 寄存器位域按位操作,cppcheck 不理解 | 永久 |
| `redundantAssignment` | HAL 清标志宏(如 `__HAL_SPI_CLEAR_OVRFLAG`)读寄存器覆盖旧值,cppcheck 不理解"读即目的" | 永久 |
@@ -233,6 +229,7 @@ if (day_count < diy) break;
| `redundantAssignment` | 重复赋值覆盖旧值 | ch395f.c | ✅ 已抑制(HAL 清标志宏读寄存器即目的,误报) |
| `unreadVariable` | 变量赋值后未读取 | gd5f2gq5ue.c, time_sync.c, ringbuf.c | ✅ 已修复(移除冗余初始化) |
| `variableScope` | 变量作用域可缩小 | sys_clock.c, net_socket.c 等 18 处 | ✅ 已修复(声明移入实际使用块) |
| `constVariablePointer` | 指针可加 const 防误改 | net_select.c, net_socket.c 共 6 处 | ✅ 已修复(`p_sock` 改为 `const net_sock_t *`) |
| `knownConditionTrueFalse` | `day_count < diy` 被判恒假(闰年 `diy=366` 分支未跟踪,误报) | sys_clock.c:108 | ✅ 已行内抑制(`// cppcheck-suppress`) |
> 注:`knownConditionTrueFalse` 属真误报——闰年分支 `diy=366` 时 `day_count==365` 的 break 有意义,cppcheck 数据流分析未覆盖该分支。已用行内抑制处理,不影响该规则在其他文件上的正常检查。