参与代码与文档贡献
开始之前
对于任何大于缺陷修复或文档订正的工作,请先开 issue,以便在投入时间前确认范围。安全问题走 SECURITY.md,绝不开公开 issue。小而聚焦的 pull request 比大块改动更快得到评审。
代码变更
构建并运行完整测试套件,然后为新行为补充针对性测试:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
ctest --test-dir build --output-on-failure
评审者会检查的规则:
公共签名与契约保持显式;新增公共声明必须在同一次改动里带上注释、中文翻译与刷新后的 API 清单。
数值改动必须附带能说明它的 fixture 或 oracle。不要为了让某个平台通过而削弱断言或放宽容差。
性能改动要说明负载、机器与统计量;噪声结果记为 INCONCLUSIVE,而不是向上汇总。
可选接口(ImPlot、扩展)保持可选:任何核心 target 都不得开始依赖图形库。
文档变更
英文源是权威。先生成目录、翻译新字符串,再用严格警告构建两种语言:
cd docs/site
doxygen Doxyfile
python tools/normalize_doxygen_xml.py ../_build/doxygen/xml
sphinx-build -b gettext -W --keep-going . ../_build/gettext
sphinx-intl update -p ../_build/gettext -l zh_CN
sphinx-build -b html -W -n --keep-going . ../_build/html/en
FINCORE_DOCS_LANGUAGE=zh_CN sphinx-build -b html -W -n --keep-going . ../_build/html/zh_CN
cd ../..
python docs/site/tools/check_built_site.py
会被强制执行的文档规则:
每个页面在
locale/zh_CN/LC_MESSAGES/都有中文条目;未翻译或 fuzzy 条目会让站点检查失败。标题不得以数字开头(
## 1. ...),否则即使目录里有该字符串,MyST 也会让它保持未翻译。标识符、命令、路径与公式在翻译中保持原样。
生成的 HTML、Doxygen XML、
.pot/.mo文件与基准输出不入库。描述失败模式的页面要写出真实消息,而不是转述。
提交与 pull request
一次提交一个主题:行为改动、文档改动与产物更新不放在同一提交里。
说明你跑了什么、以及没能验证什么 —— 平台、硬件、外部服务。本地构建不等于线上部署。
若某个平台不可用,请连同确切的操作路径一起记为待完成,而不是声称成功。
评审与证据
评审者关注:契约写在读者会去找的位置;如果行为回退,测试会失败;文档写的是代码实际做什么而不是打算做什么;文中出现的每个数字都能从仓库复现。
docs/acceptance/ 下的验收记录与 docs/iterations/ 下的迭代说明是项目的记忆。当改动改变了事实时更新它们,绝不为了看起来更整洁而改写历史。
注释规范
公共声明使用
///的 Google 风格契约:以“Returns ...”这类动词短语开头,写明单位、对齐与缺失值规则、所有权,以及经过验证的失败模式。实现注释解释不明显的算法与不变量,而不是逐行复述机械步骤。不要臆造复杂度、线程安全或异常保证。纯注释改动必须可证明是纯注释: