Skip to content

Latest commit

 

History

History
148 lines (100 loc) · 4.32 KB

CONTRIBUTING.md

File metadata and controls

148 lines (100 loc) · 4.32 KB

贡献指南

感谢你愿意为 工作提醒助手 出力。

本项目是 Rust + Tauri 2 实现的独立工具,工程要求只有一条:能跑、测得住、说得清。


快速判断:改哪个目录

你想改的东西 去哪
源码 tauri/
文档 README.md、docs/
依赖与许可声明 THIRD-PARTY-NOTICES.md
变更记录 CHANGELOG.md
Issue / PR 模板 .github/

跨项目的改动(例如统一错误处理风格、统一的目录约定)请开一个 PR 只做这件事, 不要夹带在某个功能 PR 里——这类改动 review 成本高,混在一起会拖慢合并。


开发环境

必需 版本
Rust(stable toolchain) 2021 edition 起

不需要额外的数据库、消息队列或容器。所有项目都能在离线环境构建和测试, 这是本仓库的硬约束之一。


提交前必做

1. 跑测试

cd tauri/reminder-core && cargo test --lib                   # 67 项

测试不通过不要提交。确实需要临时跳过某条测试,请在 PR 描述里写明原因和恢复计划。

2. 格式与静态检查

# Rust —— clippy 应零告警
cd tauri/reminder-core && cargo clippy --release

3. 补测试

改动行为就要改测试。这里的判定标准很直接:

改动类型 必须补的测试
新增功能 正常路径 + 至少一个边界/异常路径
修 Bug 一条能复现原缺陷的回归测试
重构 现有测试全绿即可,不强制新增
改文档 无需

回归测试是硬要求。没有回归测试的 Bug 修复 PR 会被打回。


代码风格

各语言遵循社区主流风格,不引入私有格式工具:

  • Go:gofmt 输出即标准,不手改格式
  • Rust:rustfmt 默认配置,cargo clippy 零告警
  • C#:4 空格缩进,dotnet build 零警告
  • JavaScript:2 空格缩进,单引号,分号结尾;纯前端项目不使用框架语法糖

通用约定:

  • 注释解释「为什么」,不解释「做了什么」——代码本身已经说清楚了
  • 面向用户的文案(错误提示、按钮文字)用中文,面向代码的标识符用英文
  • 不提交生成物:bin/、obj/、target/、dist/、构建产物、数据库文件一律 gitignore
  • 不提交第三方二进制依赖,用语言原生的包管理(PackageReference / go.mod / Cargo.toml)

提交信息

用 Conventional Commits:

<type>(<scope>): <简短描述>

<可选的详细说明:为什么改、影响什么>
type 用途
feat 新功能
fix 修 Bug
docs 只改文档
refactor 不改变行为的重构
test 增补或修改测试
chore 构建、依赖、配置等杂项
perf 性能优化

scope 用项目名或模块名:feat(pmvault): ...、fix(xmtool): ...。

示例:

fix(pmvault): 统一错误出口,内部错误不再进响应体

原先有 30 处直接把 err.Error() 写进 HTTP 响应,会泄露 SQLite 表名
和本机路径。改为按错误码收敛,原始错误只写日志。

提交 Pull Request

  1. 先开 Issue 讨论——尤其是涉及架构、依赖引入、数据格式变更的。 直接甩 PR 容易白做。
  2. 从最新 main 拉分支:git checkout -b feat/xxx。
  3. 一个 PR 只做一件事。混入无关格式化会淹没真正的改动。
  4. 描述里写清「为什么」。评审者关心的是动机,不只是 diff。
  5. 附上测试输出。CI 也会跑,但贴一份能省一轮等待。
  6. 敏感改动额外说明:涉及加密、凭据处理、命令执行、文件删除的, 请在描述里单列一节说明安全影响和你的验证方式。

PR 检查清单

  • 测试全绿,且本地跑过
  • 新行为有测试覆盖,缺陷修复有回归测试
  • 没有提交生成物或第三方二进制
  • 文档与代码一致(命令、路径、配置项名)
  • 没有引入未在 THIRD-PARTY-NOTICES.md 登记的新依赖
  • 描述写清了动机

安全问题

不要用公开 Issue 报告安全漏洞。 见 SECURITY.md 的私下报告流程。


行为准则

参与即表示同意 CODE_OF_CONDUCT.md。