跳到主要内容

编译警告详细位置清单

概述

本文档列出所有编译警告的具体文件位置和行号,便于快速定位和修复。

警告总数: 6686
唯一位置: 约60个关键位置(部分位置因多次包含重复出现)


P0 级别警告位置(关键)

1. Wsizeof-pointer-memaccess (185个)

Command.h:8092

  • 出现次数: 180
  • 文件: ../base/Command.h
  • 行号: 8092
  • 问题: strncpy(dest, src, sizeof(src)) 应改为 strncpy(dest, src, sizeof(dest))

zDatabase.h:598

  • 出现次数: 4
  • 文件: zDatabase.h
  • 行号: 598
  • 问题: 同上

2. Wsequence-point (411个)

zMisc.h:364

  • 出现次数: 137
  • 文件: ../base/zMisc.h
  • 行号: 364
  • 问题: queue[queueRead++] = t - 在同一表达式中多次修改变量

zMisc.h:378

  • 出现次数: 137
  • 文件: ../base/zMisc.h
  • 行号: 378
  • 问题: queue[queueWrite++] = t - 在同一表达式中多次修改变量

zMisc.h:414

  • 出现次数: 137
  • 文件: ../base/zMisc.h
  • 行号: 414
  • 问题: 同上

3. Wclass-memaccess (5711个)

zDatabase.h (4224次)

高频率警告行(每行约88次):

行号结构体类型
256zObjectB
679zSetObjectB
757zFiveSetB
835zHolyObjectB
924zUpgradeObjectB
997zUpgradeObject2B
1069zUpgradePurpleB
1141zAmuletObjectB
1213zUdouhunObjectB
1285zUbutianObjectB
1357zUdtroughObjectB
1429zUdrastarObjectB
1500zUlongxingchongzhuObjectB
1572zMedaltObjectB
1644zUhbqlObjectB
1716zUxuanhuaObjectB
1788zUshenqiObjectB
1860zUYSBSObjectB
1932zUYUANSHENObjectB
2004zUxytsObjectB
2076zUzijinlplvObjectB
2149zUwangObjectB
2222zUfuyangObjectB
2294zUhuiyongObjectB
2366zUkuiObjectB
2437zUleijianObjectB
2509zUlongbowObjectB
2581zUshieldObjectB
2653zUxianObjectB
2725zUyishouObjectB
2797zUzhiqinObjectB
2867zUzhuaObjectB
2937zUzhuObjectB
3007zUzhuhObjectB
3077zUjianObjectB
3147zUqiaoObjectB
3217zUbifangObjectB
3289zUzhenObjectB
3361zUyaodaiObjectB
3433zUhatObjectB
3505zUwaistObjectB
3582zUxieObjectB
3654zUxianzuoObjectB
3731zUxianyouObjectB
3808zUkuiObjectB (重复?)
3880zUxianObjectB (重复?)
3952zUleijianObjectB (重复?)
4024zUlongbowObjectB (重复?)

其他行 (每行约5-30次):

  • 行 598: 约4次
  • 行 4231-4500: 多个低频位置

Command.h (540次)

行号结构体类型次数
10647t_Object180
10821t_Object180
8092(strncpy问题)180

SessionCommand.h (780次)

行号结构体类型次数
1111SessionObject130
1128SessionObject130
1172SessionObject130
1191SessionObject130
1571SessionObject130
1698SessionObject130
1861(其他类型)30

RecordCommand.h (102次)

行号结构体类型次数
242stSendMail102

SessionServer.h (29次)

行号类型次数
193(未指定)29

zObject.cpp (38次)

行号类型次数
(多个行)(未指定)38

CartoonPetService.h (5次)

行号类型次数
19(未指定)5

4. Wformat-truncation/overflow/stringop (34个)

RebuildObject.h:1394

  • 出现次数: 3
  • 文件: RebuildObject.h
  • 行号: 1394
  • 问题: 格式化字符串可能截断

其他格式化警告:

  • Chat.cpp: 多处格式化字符串问题
  • Property.cpp: 字符串操作警告
  • Trade.cpp: 字符串操作警告
  • MailService.cpp: 格式化字符串警告
  • AuctionService.cpp: 格式化字符串警告
  • StockConsign.cpp: 字符串操作警告

5. Warray-bounds (1个)

(未指定位置)

  • 出现次数: 1
  • 问题: 数组访问超出边界

P1 级别警告位置(高)

1. Wcpp (241个)

backward_warning.h:32

  • 出现次数: 241
  • 文件: /usr/include/c++/8/backward/backward_warning.h
  • 行号: 32
  • 问题: 使用已弃用的 ext/hash_map 头文件
  • 影响: 通过 zProperties.h:18 间接包含

2. Wterminate (23个)

call_function.hpp:96

  • 出现次数: 23
  • 文件: ../script/luabind/luabind/detail/call_function.hpp
  • 行号: 96
  • 问题: 在可能抛出异常的上下文中调用 terminate

P2 级别警告位置(中)

1. Wparentheses (42个)

分布文件:

  • SceneUser.cpp: 多处运算符优先级问题
  • SessionTask.cpp: 运算符优先级问题
  • ServerTask.cpp: 运算符优先级问题
  • SessionClient.cpp: 运算符优先级问题
  • UserServer.cpp: 运算符优先级问题
  • SceneNpc.cpp: 运算符优先级问题

2. Wlogical-not-parentheses (7个)

分布文件: 多个场景和服务文件


3. Wbool-compare (1个)

位置: 未指定,需进一步查找


P3 级别警告位置(低)

1. Wunused-but-set-variable (27个)

分布:

  • 多个 .cpp 文件中的局部变量
  • 变量名包括: toPos, tmpPos, state, retUnion, ret, retSept, retSchool, retcode, pos, notify, _nKind, minutes, hpAfter, hours, days, damageTypeName, coefficient, cmd, basebmnext, attackRating, AddPoint

2. Wunused-local-typedefs (1个)

位置: 未指定


快速修复脚本

查找特定类型的警告

# 查找所有 Wsizeof-pointer-memaccess 警告
grep "Wsizeof-pointer-memaccess" /workspace/build/build-20260112-185946.log

# 查找所有 Wsequence-point 警告
grep "Wsequence-point" /workspace/build/build-20260112-185946.log

# 查找所有 Wclass-memaccess 警告
grep "Wclass-memaccess" /workspace/build/build-20260112-185946.log

# 按文件分组显示警告
grep "warning:" /workspace/build/build-20260112-185946.log | awk -F: '{print $1}' | sort | uniq -c | sort -rn

生成特定文件的警告列表

# 生成 zDatabase.h 的所有警告
grep "zDatabase.h" /workspace/build/build-20260112-185946.log | grep "warning:" > /tmp/zDatabase_h_warnings.txt

# 生成 Command.h 的所有警告
grep "Command.h" /workspace/build/build-20260112-185946.log | grep "warning:" > /tmp/Command_h_warnings.txt

# 生成 zMisc.h 的所有警告
grep "zMisc.h" /workspace/build/build-20260112-185946.log | grep "warning:" > /tmp/zMisc_h_warnings.txt

修复优先级矩阵

文件警告数P0P1P2P3优先级
zDatabase.h4224---🔴 最高
Command.h540---🔴 最高
SessionCommand.h780---🔴 最高
zMisc.h411---🔴 最高
RecordCommand.h102---🔴 高
zObject.cpp38---🔴 高
SessionServer.h29---🔴 高
SceneUser.cpp29---🟠 中
RebuildObject.cpp15----🟠 中
Chat.cpp16----🟠 中
Property.cpp12----🟠 中
Trade.cpp8----🟠 中
StockConsign.cpp8----🟠 中
MailService.cpp7----🟠 中
SessionClient.cpp6---🟠 中
AuctionService.cpp6----🟠 中
UserServer.cpp5---🟠 中
SceneNpc.cpp5---🟠 中
CartoonPetService.h5---🔴 高
SessionTask.cpp9---🟠 中
ServerTask.cpp4---🟠 中
CountryBiaoCheManager.cpp4----🟢 低
TianXiaDiYiManager.cpp4----🟢 低
CountryInfo.cpp3----🟢 低
SessionChat.cpp2----🟢 低
RebuildObject.h9---🔴 高

下一步行动

  1. 立即修复 P0 警告:

    • zDatabase.h:4224个 - 批量替换 memset 为值初始化
    • Command.h:540个 - 修复 strncpy 和 memset 问题
    • SessionCommand.h:780个 - 批量替换 memset 为值初始化
    • zMisc.h:411个 - 重构 MsgQueue 避免序列点问题
  2. 第二阶段修复 P1 警告:

    • 替换 hash_map 为 unordered_map
    • 修复 terminate 警告
  3. 持续改进 P2/P3 警告:

    • 添加运算符优先级括号
    • 清理未使用变量

文档版本: v1.0
创建日期: 2026-01-12
维护者: Zebra 项目组