ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何为AnyPS5贡献代码?PR流程、编码规范与测试标准完全指南

如何为AnyPS5贡献代码?PR流程、编码规范与测试标准完全指南 如何为AnyPS5贡献代码PR流程、编码规范与测试标准完全指南【免费下载链接】AnyPS5Tool for automatic PS5 executables porting to Linux and Windows项目地址: https://gitcode.com/gh_mirrors/an/AnyPS5想为AnyPS5PS5 可执行文件自动移植到 Linux / Windows 的开源工具贡献代码本文是面向新手的完整指南从搭建开发环境、遵循项目编码规范到通过测试标准、走完 PRPull Request流程一步步带你安全、规范地提交第一个补丁。一、准备工作3 步搭建 AnyPS5 开发环境AnyPS5 由三大模块组成贡献前建议先熟悉它们模块路径作用Relinkercore/relinker把可执行文件转换为目标系统原生格式系统 PRX 库core/libs/prx动态链接所需的系统库实现着色器重编译器core/shader/recompiler生成并校验 SPIR-V1️⃣ 克隆仓库含子模块git clone --recurse-submodules https://gitcode.com/gh_mirrors/an/AnyPS5 cd AnyPS52️⃣ 确认工具链Relinker 仅使用C20 标准库任何符合标准的编译器均可构建见 README.md。LinuxGCCWindows需要MinGW-w64 GCC 15.2.0winlibs-gcc15、x86_64-ucrt-posix-seh详见 docs/dev/TechnicalDebt.md。3️⃣ 构建并运行测试命令来自 CONTRIBUTING.mdcmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPERelease -DBUILD_TESTINGON cmake --build build ctest --test-dir build --output-on-failure Python 3 为可选项未安装时部分 relinker 测试不会注册不影响核心功能验证。二、PR流程从建分支到合并的 6 个关键动作项目的 PR 模板 ​.github/pull_request_template.md 就是规则清单提交前逐条核对一个分支一个主题分支基于最新的main创建后续工作放到新 PR不要往已打开的 PR 里追加。先查重开工前确认没有已打开的 PR 在实现相同的函数。保持分支更新随时与main同步并自行解决冲突rebase 和 force-push 都可以。标注依赖如果 PR 依赖另一个 PR在描述中写明Depends on #N。提交前跑测试在描述中说明测了什么操作系统、游戏或 homebrew。Not tested 也是合法答案但要诚实。材料放 PR 不放仓库调查报告、截图、日志都放在 PR 描述里不要提交到仓库文档用图通过外部 gist 评论托管后贴链接。披露 AI 协助说明改动是否由 AI 辅助完成——提交者对每一行代码负责。三、编码规范新手必须记住的 6 条铁律完整规则见 docs/dev/CONVENTIONS.md 与 CONTRIBUTING.md核心要点如下命名接口类以I开头如IBinaryPatcher类名与公有方法用 PascalCase私有成员与参数用 camelCase模板参数用TKey、TValue风格。注释极少代码中只允许三类注释——人工标注的技术债务、#endif结尾、命名空间结尾。提交信息遵循 Conventional Commits 规范。函数要么做对、要么抛异常未实现的导出调用NotImplemented_nid_no_patch(__func__)示例见 libSceAudioIn/Export.cppint APS5_VABI sceAudioInInput(int handle, void* dest) { (void)handle; (void)dest; NotImplemented_nid_no_patch(__func__); return 0; }静默桩silent stub极严格只有不解决就会卡住某个游戏且仅影响 UI时才允许且必须登记到 TechnicalDebt.md 的 Silent stubs 小节。实现通用行为实现函数的一般语义而不是某个游戏恰好需要的特例缺失的导入应在启动时报清晰的错误禁止用能继续跑的降级逻辑替代。保持可移植标准 C 够用就别用__attribute__等非标准扩展relinker 只准用 C20 标准库。另外两条易踩坑的规则第三方代码以submodule形式加入 3rdparty/ 并从源码构建不允许依赖系统库。不要写只验证某个符号被导出的测试——缺失导出本来就会在启动时直接失败。四、测试标准提交前必过的验证清单项目 CI见 ​.github/workflows/build.yml在 Linux 与 Windows 双平台执行完整构建 测试你的本地验证应与之一致cmake --build build ctest --test-dir build --output-on-failure --timeout 120自测要点✅ 全量测试通过特别是与改动目录相关的用例relinker 测试在 core/relinker/tests/系统库集成测试在 core/libs/tests/。✅ 若条件允许用真实游戏或 homebrew 验证运行效果并记录到 PR 描述。✅ 无法验证时明确写 Not tested说明原因与范围。五、文档规范让维护者 1 分钟看懂你的改动仓库内文字风格干燥、严格、简洁不堆砌说明性文件。已知缺口、未知 NID、未知函数签名统一记录到 docs/dev/TechnicalDebt.md不要新建文档文件。兼容性验证结果可参考 docs/user/COMPATIBILITY.md 的表格格式。写在最后为 AnyPS5 贡献代码的关键其实很简单小步提交、一 PR 一主题、测试先行、规范优先。读完 CONTRIBUTING.md 全文、对照 PR 模板逐条打勾你的提交就会又快又稳地通过评审。祝提交顺利【免费下载链接】AnyPS5Tool for automatic PS5 executables porting to Linux and Windows项目地址: https://gitcode.com/gh_mirrors/an/AnyPS5创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表