c1e7e8c42c
L0 的 cppcheck 在 --all-files 下恒红四处,全在同一文件: App/protocol/iec104/iec104_comm.c 的 80 / 94 / 107 / 121 行,诊断为 compareValueOutOfTypeRangeError —— 拿 unsigned short 与 65535 比较, Condition is always false。根因是 IEC104_COMM_CA_MAX 与 PORT_MAX 都等于 65535u,而被比较的量是 uint16_t:那个上界判断在类型上就不可能成立。 这四处随上游 iec104_comm 落地进来,本地提交只跑暂存文件所以没人看见, CI 跑 --all-files 就每轮都红(同族盲区:暂存面与全量面不等价)。 处置走「语义不动」那一支(用户裁定 2026-10-27:A):只删恒假的半边、 改判 if (v < MIN),合法带口径一字未改(仍照 iec104_comm.h 的常量注释: ca 1..65535、port 1024..65535),只在第一处写清为何不再写上界、其余三处 短引用。没有把 MAX 改成 65534(按 60870-5-104 的 65535 = 未编址),因为 test/host/iec104/iec104_test.c:1521 明确断言 ca 设成 IEC104_COMM_CA_MAX 必须被接受——那会同时打断这条断言并改变现场设备行为(配 65535 的站会 突然回退工厂默认),属协议决定,不在本次范围;要改请单独裁。 验证:单文件 cppcheck 原样复刻钩子参数 → RC=0;cppcheck --all-files 由 红转绿;iec104-unit-test Passed(即 65535 那条合同照过);@build 0 错误 0 警告(Code 231732→231720,减 12 B,RO/RW/ZI 不变);凭证与两份台账 随之重盖(ER_IROM1 257,292→257,280、Flash 合计 258,812→258,800); 本次触发的 13 根钩子全 Passed,含 test-coverage(删掉 4 行已覆盖代码 未被判成回退)。
49 lines
1.2 KiB
JSON
49 lines
1.2 KiB
JSON
{
|
|
"built_at": "2026-10-27T10:17:30+08:00",
|
|
"fingerprint": "1204cb60a4a9a44c3a3435166e07d7d0a54f32c98768951e79c85d6de422a447",
|
|
"fingerprint_files": 1430,
|
|
"fingerprint_source": "git-index",
|
|
"gated_regions": [
|
|
"RW_IRAM1",
|
|
"RW_CCM"
|
|
],
|
|
"git_head": "51ecd36192982fec4bfd1f50fbfba3555c571c4c",
|
|
"map": "MDK-ARM/STM32F407-Demo/STM32F407-Demo.map",
|
|
"map_mtime": 1793067428,
|
|
"pct": {
|
|
"ER_IROM1": 24.54,
|
|
"RW_CCM": 87.89,
|
|
"RW_IRAM1": 61.27,
|
|
"UNINIT_CCM": 18.75
|
|
},
|
|
"regions": {
|
|
"ER_IROM1": {
|
|
"max": 1048576,
|
|
"size": 257280
|
|
},
|
|
"RW_CCM": {
|
|
"max": 65280,
|
|
"size": 57376
|
|
},
|
|
"RW_IRAM1": {
|
|
"max": 131072,
|
|
"size": 80312
|
|
},
|
|
"UNINIT_CCM": {
|
|
"max": 256,
|
|
"size": 48
|
|
}
|
|
},
|
|
"schema": 2,
|
|
"scope_note": "\u540c\u7801\u51ed\u8bc1\uff1a\u6307\u7eb9\u8986\u76d6\u56fa\u4ef6\u4f53\u79ef\u76f8\u5173\u6e90\u7801\uff0c\u53e3\u5f84\u89c1\u672c\u811a\u672c docstring",
|
|
"sizes": {
|
|
"code": 231720,
|
|
"ro_data": 25560,
|
|
"rw_data": 1520,
|
|
"zi_data": 136216
|
|
},
|
|
"threshold_pct": 92.0,
|
|
"worktree_dirt_at_stamp": 0,
|
|
"written_by": "scripts/check_size_gate.py --stamp"
|
|
}
|