mit einem Klick
mc-fix-test-error
运行测试,认领并收敛项目代码中的一个测试错误
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Menü
运行测试,认领并收敛项目代码中的一个测试错误
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Basierend auf der SOC-Berufsklassifikation
| name | mc-fix-test-error |
| description | 运行测试,认领并收敛项目代码中的一个测试错误 |
./build/bin/RelWithDebInfo/mc_tests.exe --gtest_break_on_failure 2>&1 | tail -70
运行测试(通过命令行参数,让测试套件遇到第一个测试失败就停下来),认领并收敛项目代码中的一个测试错误。项目中的测试错误产生原因多种多样,可能是因为:
TODO,便于全文搜索)。如果这个问题的原因非常显然,你可以不用启动任何子代理。/include/minecraft-reborn/version.h这个文件如果git显示未提交,你不用理会,将其留在工作区即可,重点是处理其他文件。你需要随时留意:
D:\Minecraft\MC研究\Minecraft1.21.11源码\net\minecraft下的算法、逻辑、时序等,与原版任何一点点偏差都会导致偏离预期(因此你派出的子代理需要注意对比下mc与本项目源码)。但不要照搬,因为cpp和java的特性不同,项目的架构也不同,你需要根据cpp的特性和当前项目的架构进行合理的架构设计和调整。注意本项目基建已经相当完善(代码量已经100w+行),各种常数、常用工具函数、音频系统、粒子系统、资源包系统、命令系统、实体系统、物品系统、物理系统、碰撞、tick调度、存档等都已经有了相当完善的实现(另外world对象上面也挂了相当多的工具方法以便访问世界、操作世界等),务必充分探索以实现复用,避免重复实现。
mc_tests 在 main 中安装了 mc::assert::CrashHandler(参考 src/client/main.cpp、src/server/main.cpp),崩溃(SEH 访问违例、除零、栈溢出、纯虚调用、std::terminate、MC_ASSERT_RELEASE 触发的 abort)时输出调用栈和寄存器到 stderr。
但 GoogleTest 默认安装自己的 SEH 处理器(--gtest_catch_exceptions=1),会抢先捕获 SEH 并打印 unknown file: error: SEH exception with code 0x... thrown in the test body. 不带栈,CrashHandler 拿不到崩溃现场。要看到完整栈,必须禁用 gtest 的 SEH 捕获,让 CrashHandler 接管:
# 禁用 gtest SEH 捕获,崩溃时由 CrashHandler 输出完整调用栈
./build/bin/RelWithDebInfo/mc_tests --gtest_filter='ServerChunkManagerTest.GetChunkSync_MultipleChunks' --gtest_catch_exceptions=0
--gtest_catch_exceptions=0:关闭 gtest 的 SEH 捕获,SEH 直接传给 CrashHandler。Reason: ACCESS_VIOLATION - Read/Write access at address 0x...、寄存器转储、Stack trace:(帧序号 + 函数名 + 文件:行号)。--gtest_catch_exceptions=0(Linux/macOS 用信号处理,gtest 默认不捕获 SIGSEGV)。--gtest_filter 定位到单个用例,栈最干净。--gtest_break_on_failure 会让 gtest 抛 BREAKPOINT(被 CrashHandler 当作断点,不是原始崩溃点),调试时不要混用。为用户指定的代码范围增加性能追踪宏(Perfetto + Tracy 双轨)
认领并收敛项目代码中的一个TODO
基于测试驱动的开发(TDD),将当前项目的代码与 Minecraft 原版代码对齐,确保功能和逻辑都能准确复刻 Minecraft。
审查用户指定范围内的所有文件,列出架构重构计划并执行
参照mc源码,列出高质量计划,为项目实现新功能
审查用户指定范围内的文件,在保持逻辑大体不变的情况下,删除、简化不必要的内容,使其更清晰易懂。