# 贡献指南 感谢您考虑为 Sharp-Basic Framework 做出贡献! ## 📜 行为准则 请遵守以下基本原则: - 尊重所有贡献者 - 保持友好和包容的态度 - 接受建设性的批评 - 专注于对社区最有利的事情 ## 🚀 如何贡献 ### 报告 Bug 如果您发现了 bug,请创建一个 Issue 并包含以下信息: 1. **标题**: 简洁描述问题 2. **环境**: 操作系统、.NET 版本、项目版本 3. **复现步骤**: 详细的步骤 4. **预期行为**: 应该发生什么 5. **实际行为**: 实际发生了什么 6. **日志/截图**: 如果有的话 ### 提出新功能 在开始编码之前: 1. 先创建一个 Issue 讨论您的想法 2. 等待维护者的反馈 3. 确保功能符合项目的整体方向 ### 提交代码 #### 准备工作 ```bash # Fork 项目到您的账号 # Clone 到本地 git clone https://gitea.duyl328.org/您的用户名/sharp-basic.git cd sharp-basic # 添加上游仓库 git remote add upstream https://gitea.duyl328.org/jimmy/sharp-basic.git # 创建功能分支 git checkout -b feature/您的功能名称 ``` #### 代码规范 1. **命名约定** - 类名:PascalCase(如 `ConfigManager`) - 方法名:PascalCase(如 `BuildConfiguration`) - 私有字段:_camelCase(如 `_logger`) - 参数/局部变量:camelCase(如 `userName`) 2. **注释规范** - 所有公共 API 必须有 XML 文档注释 - 使用中文编写注释和文档 - 复杂逻辑需要添加行内注释 3. **代码风格** - 启用 nullable 引用类型 - 使用 `var` 当类型明显时 - 一行不超过 120 字符 - 使用 4 个空格缩进(不使用 Tab) 4. **测试要求** - 新功能必须包含单元测试 - 测试覆盖率应 >= 80% - 使用 MSTest 框架 - 测试方法命名: `方法名_场景_预期结果` #### 提交信息规范 使用以下格式: ``` <类型>(<模块>): <简短描述> <详细描述(可选)> <关联 Issue(如果有)> ``` **类型**: - `feat`: 新功能 - `fix`: Bug 修复 - `docs`: 文档更新 - `style`: 代码格式调整(不影响功能) - `refactor`: 重构 - `test`: 测试相关 - `chore`: 构建/工具相关 **示例**: ``` feat(Config): 添加 TOML 格式支持 实现了基于 Tomlyn 的 TOML 配置文件解析功能 支持热重载和强类型绑定 Closes #123 ``` #### Pull Request 流程 1. **确保代码质量** ```bash # 运行所有测试 dotnet test # 构建项目 dotnet build -c Release ``` 2. **同步上游更改** ```bash git fetch upstream git rebase upstream/main ``` 3. **提交 PR** - 填写清晰的 PR 标题和描述 - 关联相关的 Issue - 确保 CI 通过(如果有) - 等待代码审查 4. **代码审查** - 维护者会审查您的代码 - 根据反馈进行修改 - 保持耐心和礼貌 ## 📂 项目结构 ``` src/Sharp/ # 所有源代码项目 ├── Common/ # 核心工具库 ├── Config/ # 配置管理 ├── Data/ # 数据访问层 ├── Log/ # 日志模块 ├── Wpf/ # WPF 基础库 └── ... test/ # 测试项目 ├── Common.Test/ ├── Config.Test/ └── ... ``` ## 🔧 开发环境设置 ### 必需工具 - [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) - [Git](https://git-scm.com/) - 推荐 IDE: - [Visual Studio 2022](https://visualstudio.microsoft.com/) (Windows) - [Rider](https://www.jetbrains.com/rider/) (跨平台) - [VS Code](https://code.visualstudio.com/) + C# 扩展 ### 首次构建 ```bash # 还原依赖 dotnet restore # 构建解决方案 dotnet build Sharp.sln # 运行测试 dotnet test ``` ## 📋 待办事项 查看 [Issues](https://gitea.duyl328.org/jimmy/sharp-basic/issues) 页面了解: - 标记为 `good first issue` 的任务适合新贡献者 - 标记为 `help wanted` 的任务需要帮助 ## 📝 文档贡献 文档同样重要!您可以: - 改进现有文档的清晰度 - 添加示例代码 - 修正错别字 - 翻译文档(如果需要) ## ⚖️ 许可证 提交代码即表示您同意将您的贡献以 [AGPL-3.0-or-later](LICENSE) 许可证发布。 ## 💬 联系方式 如有任何问题: - 创建 [Issue](https://gitea.duyl328.org/jimmy/sharp-basic/issues) - 查看 [README](README.md) 获取更多信息 - 访问作者网站: [https://seyl.me/](https://seyl.me/) --- 再次感谢您的贡献!🎉