贡献指南
感谢你对 LCGYL Framework 的关注!本文档将帮助你参与贡献。
贡献方式
🐛 报告 Bug
- 在 Gitee Issues 搜索是否已存在相同问题
- 如果没有,创建新 Issue
- 使用 Bug 报告模板,提供:
- 问题描述
- 复现步骤
- 期望行为
- 实际行为
- 环境信息(JDK 版本、OS 等)
💡 提交建议
- 在 Issues 中使用「功能建议」模板
- 描述你的使用场景
- 说明期望的功能
📝 改进文档
- Fork 仓库
- 修改
frontend/docs/下的文档 - 提交 Pull Request
🔧 提交代码
- Fork 仓库到你的账号
- 克隆到本地
- 创建功能分支
- 编写代码和测试
- 提交 Pull Request
开发环境
前置要求
- JDK 21+
- Gradle 8.5+
- Git
克隆仓库
bash
git clone https://gitee.com/lcgyl/lcgyl-framework.git
cd lcgyl-framework构建项目
bash
./gradlew build运行测试
bash
./gradlew test代码规范
命名规范
| 类型 | 规范 | 示例 |
|---|---|---|
| 类名 | 大驼峰 | UserService |
| 方法名 | 小驼峰 | findById |
| 常量 | 全大写下划线 | MAX_SIZE |
| 包名 | 全小写 | com.lcgyl.framework |
代码风格
- 遵循 Google Java Style Guide
- 缩进:4 个空格
- 每行最多 120 字符
- 使用有意义的变量名
JavaDoc
所有公共 API 必须有 JavaDoc:
java
/**
* 根据 ID 查找用户
*
* @param id 用户 ID
* @return 用户对象,如果不存在返回 null
* @throws IllegalArgumentException 如果 id 为 null
*/
public User findById(Long id) {
// ...
}提交规范
Commit Message 格式
<type>: <subject>
[body]
[footer]Type 类型
| 类型 | 说明 |
|---|---|
feat | 新功能 |
fix | Bug 修复 |
docs | 文档更新 |
refactor | 重构 |
test | 测试相关 |
chore | 构建/工具 |
示例
feat: 新增用户缓存功能
- 添加 UserCache 类
- 集成 Caffeine 缓存
- 支持 TTL 配置
Closes #123分支规范
| 分支 | 用途 |
|---|---|
main | 稳定版本 |
develop | 开发分支 |
feature/* | 功能分支 |
fix/* | 修复分支 |
release/* | 发布分支 |
工作流程
main ←── release ←── develop ←── feature
↑
fixPull Request
提交前检查
- [ ] 代码通过所有测试
- [ ] 新功能有对应测试
- [ ] 代码符合规范
- [ ] 更新了相关文档
- [ ] Commit Message 规范
PR 描述模板
markdown
## 变更说明
简要描述本次变更
## 变更类型
- [ ] 新功能
- [ ] Bug 修复
- [ ] 重构
- [ ] 文档更新
## 测试
描述如何测试这些变更
## 相关 Issue
Closes #xxx社区
行为准则
- 尊重所有贡献者
- 使用友善的语言
- 接受建设性批评
- 专注于对社区最有利的事情
再次感谢你的贡献!🎉