感谢你考虑为 Infinite Refill 做出贡献!
如果你发现了 bug,请创建一个 issue,包含:
- 清晰的标题
- 详细的描述
- 复现步骤
- 期望行为
- 实际行为
- 环境信息(操作系统、Go 版本等)
- 日志输出(使用
-v参数)
如果你有新功能的想法:
- 先创建一个 issue 讨论
- 说明功能的用途和价值
- 提供使用场景示例
- 等待维护者反馈
-
Fork 项目
git clone https://github.com/devocyACT/infinite-refill.git cd infinite-refill/refill -
创建分支
git checkout -b feature/your-feature-name
-
编写代码
- 遵循现有代码风格
- 添加必要的注释
- 保持中文日志消息
- 编写单元测试
-
测试代码
make test make build ./refill check -
提交更改
git add . git commit -m "feat: 添加新功能描述"
-
推送分支
git push origin feature/your-feature-name
-
创建 Pull Request
- 清晰描述更改内容
- 关联相关 issue
- 等待代码审查
- 使用
gofmt格式化代码 - 遵循 Effective Go
- 变量和函数使用驼峰命名
- 包名使用小写单词
- 使用中文日志消息
- 保持简洁清晰
- 包含必要的上下文信息
示例:
logger.Info("开始探测 %d 个账号(并发数=%d)", len(accounts), parallel)
logger.Error("加载账号失败:%v", err)使用约定式提交(Conventional Commits):
feat:新功能fix:Bug 修复docs:文档更新style:代码格式(不影响功能)refactor:重构test:测试相关chore:构建/工具相关
示例:
feat: 添加 Webhook 通知支持
fix: 修复 Worker Pool 超时问题
docs: 更新 Docker 使用文档
# 运行所有测试
make test
# 运行特定包的测试
go test -v ./internal/account/
# 生成覆盖率报告
make coverage- 为新功能编写单元测试
- 测试文件命名:
*_test.go - 测试函数命名:
TestXxx - 使用表驱动测试
示例:
func TestAccount_IsExpired(t *testing.T) {
tests := []struct {
name string
modTime time.Time
days int
expected bool
}{
{
name: "未过期",
modTime: time.Now().AddDate(0, 0, -10),
days: 30,
expected: false,
},
// 更多测试案例...
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// 测试逻辑
})
}
}如果你的更改影响了用户使用方式:
- 更新
README.md - 更新相关的指南文档
- 添加示例代码
- 更新
CHANGELOG.md
- 使用中文编写
- 保持简洁清晰
- 提供代码示例
- 包含实际用例
Pull Request 会经过以下审查:
-
代码质量
- 是否遵循代码规范
- 是否有适当的错误处理
- 是否有必要的注释
-
功能完整性
- 是否实现了预期功能
- 是否有边界情况处理
- 是否有单元测试
-
向后兼容性
- 是否破坏现有 API
- 是否影响现有配置
- 是否需要迁移指南
-
文档完整性
- 是否更新了相关文档
- 是否添加了使用示例
- 是否更新了 CHANGELOG
- Go 1.22+
- Git
- Make
- Docker(可选)
- VS Code + Go 扩展
- golangci-lint(代码检查)
- delve(调试器)
# 克隆项目
git clone https://github.com/devocyACT/infinite-refill.git
cd infinite-refill/refill
# 安装依赖
go mod download
# 构建
make build
# 运行测试
make test
# 本地运行
export SERVER_URL="https://your-server.com"
export USER_KEY="your-key"
export ACCOUNTS_DIR="./accounts"
./refill check./refill -v rundlv debug ./cmd/refill -- runcat out/probe_report_*.jsonl | jq .(仅限维护者)
- 更新版本号
- 更新 CHANGELOG.md
- 创建 Git tag
- 构建多平台二进制
- 构建 Docker 镜像
- 发布 GitHub Release
- Issues: 报告 bug 和提出功能请求
- Discussions: 一般性讨论和问答
- Pull Requests: 代码贡献
- 尊重所有贡献者
- 保持友好和专业
- 接受建设性批评
- 关注项目目标
如果你有任何问题:
- 查看现有文档
- 搜索已有 issues
- 创建新 issue 提问
感谢你的贡献!🎉