Skip to content

コントリビューション

バグ報告、ドキュメントの改善、機能提案、コードなど、あらゆる種類のコントリビューションを歓迎します。このページではプロセスの概要を説明します。完全なコントリビューター同意書と詳細なガイドラインについては、GitHub の CONTRIBUTING.md を参照してください。

開発環境のセットアップ

前提条件

要件最小バージョン
PHP8.5+
Composer2.x
PHPUnit12.x
PHPStan2.x

はじめに

bash
# リポジトリをクローン
git clone https://github.com/yeeefang/tcpdf-next.git
cd tcpdf-next

# 依存関係をインストール
composer install

# すべてが動作することを確認
composer test

テストの実行

TCPDF-Next は PHPUnit 12 を使用し、ユニットテストと統合テスト用に個別のスイートを備えています。

bash
# フルテストスイートを実行
composer test

# ユニットテストのみ(高速、I/O なし)
composer test:unit

# 統合テストのみ(ファイル出力、フォント読み込みなど)
composer test:integration

すべてのテストはプルリクエストがマージされる前に通過する必要があります。CI パイプラインはすべてのプッシュでフルスイートを実行します。

静的解析

コードベースは PHPStan のレベル 8(最も厳格なレベル)で解析されます:

bash
composer analyse

エラーは一切許容されません。変更が PHPStan エラーを導入した場合、CI ビルドは失敗します。

コードスタイル要件

  • すべての PHP ファイルの先頭に declare(strict_types=1)
  • PHPStan レベル 8 準拠 — 新しいコードに対するベースライン例外はありません。
  • 可変状態が不要な場合は readonly クラスを優先。
  • すべての有限値セットに Backed Enum を使用(マジック文字列や整数定数は不可)。
  • パブリック API メソッドには明確さのために名前付きパラメータを使用。
  • mixed 型は不可 — すべてのパラメータ、戻り値の型、プロパティは明示的に型指定されている必要があります。
  • デフォルトで final — 拡張用に設計されていない限り、クラスは final です。

プルリクエストのプロセス

  1. リポジトリをフォークし、main からフィーチャーブランチを作成します。

  2. テストを先に書く — TCPDF-Next は TDD 指向のワークフローに従います。新機能とバグ修正には対応するテストが含まれている必要があります。

  3. コミットを集中させる — コミットごとに 1 つの論理的な変更。明確なコミットメッセージを記述してください。

  4. プッシュ前に完全なチェックスイートを実行します:

    bash
    composer analyse && composer test
  5. main に対してプルリクエストを開きます。PR テンプレートに以下を記入してください:

    • 変更の説明とその動機。
    • 関連する Issue へのリンク(Closes #123 構文を使用)。
    • 破壊的変更やマイグレーションノート。
  6. レビューフィードバックに対応する — メンテナーが変更を要求する場合があります。各コメントに対応または議論してください。

バグの報告

以下の情報を含めて GitHub Issue を開いてください:

  • PHP バージョンと OS。
  • TCPDF-Next バージョン(composer show yeeefang/tcpdf-next)。
  • 最小限の再現コード。
  • 期待される動作と実際の動作。

セキュリティ脆弱性

セキュリティの問題は公開の GitHub Issues で報告しないでください。代わりに GitHub Security Advisories を使用してください。詳細は よくある質問 を参照してください。

ありがとうございます

すべてのコントリビューションが TCPDF-Next をより良くします。ドキュメントの誤字修正であれ、主要な機能の実装であれ、あなたの時間と労力に心から感謝しています。

LGPL-3.0-or-later ライセンスの下で公開されています。