コントリビューション
バグ報告、ドキュメントの改善、機能提案、コードなど、あらゆる種類のコントリビューションを歓迎します。このページではプロセスの概要を説明します。完全なコントリビューター同意書と詳細なガイドラインについては、GitHub の CONTRIBUTING.md を参照してください。
開発環境のセットアップ
前提条件
| 要件 | 最小バージョン |
|---|---|
| PHP | 8.5+ |
| Composer | 2.x |
| PHPUnit | 12.x |
| PHPStan | 2.x |
はじめに
# リポジトリをクローン
git clone https://github.com/yeeefang/tcpdf-next.git
cd tcpdf-next
# 依存関係をインストール
composer install
# すべてが動作することを確認
composer testテストの実行
TCPDF-Next は PHPUnit 12 を使用し、ユニットテストと統合テスト用に個別のスイートを備えています。
# フルテストスイートを実行
composer test
# ユニットテストのみ(高速、I/O なし)
composer test:unit
# 統合テストのみ(ファイル出力、フォント読み込みなど)
composer test:integrationすべてのテストはプルリクエストがマージされる前に通過する必要があります。CI パイプラインはすべてのプッシュでフルスイートを実行します。
静的解析
コードベースは PHPStan のレベル 8(最も厳格なレベル)で解析されます:
composer analyseエラーは一切許容されません。変更が PHPStan エラーを導入した場合、CI ビルドは失敗します。
コードスタイル要件
- すべての PHP ファイルの先頭に
declare(strict_types=1)。 - PHPStan レベル 8 準拠 — 新しいコードに対するベースライン例外はありません。
- 可変状態が不要な場合は
readonlyクラスを優先。 - すべての有限値セットに Backed Enum を使用(マジック文字列や整数定数は不可)。
- パブリック API メソッドには明確さのために名前付きパラメータを使用。
mixed型は不可 — すべてのパラメータ、戻り値の型、プロパティは明示的に型指定されている必要があります。- デフォルトで final — 拡張用に設計されていない限り、クラスは
finalです。
プルリクエストのプロセス
リポジトリをフォークし、
mainからフィーチャーブランチを作成します。テストを先に書く — TCPDF-Next は TDD 指向のワークフローに従います。新機能とバグ修正には対応するテストが含まれている必要があります。
コミットを集中させる — コミットごとに 1 つの論理的な変更。明確なコミットメッセージを記述してください。
プッシュ前に完全なチェックスイートを実行します:
bashcomposer analyse && composer testmainに対してプルリクエストを開きます。PR テンプレートに以下を記入してください:- 変更の説明とその動機。
- 関連する Issue へのリンク(
Closes #123構文を使用)。 - 破壊的変更やマイグレーションノート。
レビューフィードバックに対応する — メンテナーが変更を要求する場合があります。各コメントに対応または議論してください。
バグの報告
以下の情報を含めて GitHub Issue を開いてください:
- PHP バージョンと OS。
- TCPDF-Next バージョン(
composer show yeeefang/tcpdf-next)。 - 最小限の再現コード。
- 期待される動作と実際の動作。
セキュリティ脆弱性
セキュリティの問題は公開の GitHub Issues で報告しないでください。代わりに GitHub Security Advisories を使用してください。詳細は よくある質問 を参照してください。
ありがとうございます
すべてのコントリビューションが TCPDF-Next をより良くします。ドキュメントの誤字修正であれ、主要な機能の実装であれ、あなたの時間と労力に心から感謝しています。