Skip to content

贡献指南

感谢您对飞书 SDK 的关注!我们欢迎所有形式的贡献,包括但不限于:

  • 🐛 报告 Bug
  • 💡 提出新功能建议
  • 📝 改进文档
  • 🔧 提交代码修复
  • 🧪 添加测试用例

开发环境设置

系统要求

  • PHP 8.1 或更高版本
  • Composer
  • Git

克隆项目

bash
git clone https://github.com/zhaiyuxin103/Feishu.git
cd Feishu

安装依赖

bash
composer install

运行测试

bash
composer test

代码检查

bash
composer lint

开发流程

1. 创建分支

bash
git checkout -b feature/your-feature-name
# 或者
git checkout -b fix/your-bug-fix

2. 编写代码

请遵循以下编码规范:

  • 使用 PSR-12 编码标准
  • 添加适当的类型声明
  • 编写清晰的注释
  • 确保代码通过所有测试

3. 运行测试

bash
# 运行所有测试
composer test

# 运行特定测试
./vendor/bin/pest tests/Unit/MessageTest.php

# 生成测试覆盖率报告
./vendor/bin/pest --coverage

4. 代码检查

bash
# 代码格式检查
composer lint

# 静态分析
./vendor/bin/phpstan analyse

5. 提交代码

bash
git add .
git commit -m "feat: add new feature description"
git push origin feature/your-feature-name

6. 创建 Pull Request

在 GitHub 上创建 Pull Request,并包含以下信息:

  • 清晰的标题和描述
  • 相关的 Issue 链接
  • 测试结果
  • 代码变更说明

编码规范

PHP 代码规范

  • 遵循 PSR-12 编码标准
  • 使用严格类型声明 declare(strict_types=1);
  • 类名使用 PascalCase
  • 方法名使用 camelCase
  • 常量使用 UPPER_SNAKE_CASE

文档规范

  • 使用中文编写文档
  • 代码示例要完整可运行
  • 添加适当的注释和说明

测试规范

  • 每个新功能都要有对应的测试
  • 测试覆盖率不低于 80%
  • 测试名称要清晰描述测试内容

提交信息规范

我们使用 Conventional Commits 规范:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

类型说明

  • feat: 新功能
  • fix: 修复 Bug
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 代码重构
  • test: 测试相关
  • chore: 构建过程或辅助工具的变动

示例

feat: add support for image messages

- Add MessageTypeEnum::Image case
- Implement image message sending functionality
- Add corresponding tests

Closes #123

Issue 报告

Bug 报告

请包含以下信息:

  • 操作系统和 PHP 版本
  • SDK 版本
  • 错误信息和堆栈跟踪
  • 重现步骤
  • 期望行为

功能请求

请包含以下信息:

  • 功能描述
  • 使用场景
  • 预期 API 设计
  • 相关参考

发布流程

版本号规范

我们使用 Semantic Versioning

  • MAJOR.MINOR.PATCH
  • MAJOR: 不兼容的 API 修改
  • MINOR: 向下兼容的功能性新增
  • PATCH: 向下兼容的问题修正

发布步骤

  1. 更新版本号
  2. 更新 CHANGELOG.md
  3. 创建 Git 标签
  4. 发布到 Packagist

联系方式

如果您有任何问题或建议,请通过以下方式联系我们:

致谢

感谢所有为这个项目做出贡献的开发者!


注意: 在提交代码之前,请确保您已经阅读并同意我们的 行为准则

Released under the MIT License.