Skip to content

Latest commit

 

History

History
242 lines (167 loc) · 6.09 KB

File metadata and controls

242 lines (167 loc) · 6.09 KB

貢献ガイド

RFC 8762 STAMP実装プロジェクトへの貢献を歓迎します!

貢献方法

バグ報告

バグを発見した場合は、以下の情報を含めてissueを作成してください:

  1. 環境情報

    • OS(Windows、Linux、macOSなど)
    • コンパイラとバージョン
    • ビルド方法
  2. 再現手順

    • バグを再現するための具体的な手順
    • 使用したコマンド
  3. 期待される動作

    • 本来どのように動作すべきか
  4. 実際の動作

    • 実際に何が起こったか
    • エラーメッセージ
  5. 追加情報

    • ログファイル
    • スクリーンショット
    • ネットワーク環境

機能提案

新しい機能の提案は歓迎します!以下の情報を含めてissueを作成してください:

  1. 機能の説明

    • 何を実現したいか
  2. ユースケース

    • どのような場面で役立つか
  3. 実装案(あれば)

    • どのように実装できそうか
  4. 代替案(あれば)

    • 他の解決方法

プルリクエスト

コードの貢献は以下の手順で行ってください:

  1. Forkとクローン

    git clone https://github.com/yourusername/RFC8762.git
    cd RFC8762
  2. ブランチの作成

    git checkout -b feature/your-feature-name
  3. 変更の実装

    • コーディングスタイルガイドに従う
    • 適切なコメントを追加
    • テストを追加/更新
  4. テストの実行

    cmake --preset debug
    cmake --build --preset debug
    ctest --preset debug
  5. コミット

    git add .
    git commit -m "Add: 簡潔な変更内容の説明"
  6. プッシュとプルリクエスト

    git push origin feature/your-feature-name
    • GitHubでプルリクエストを作成
    • 変更内容を詳しく説明

コーディングスタイル

C言語スタイル

  • インデント: タブ(幅8)

  • フォーマッター: .clang-format を使用(Linux Kernel スタイル準拠)

  • 命名規則:

    • 関数: snake_case(プレフィックス stamp_ を推奨)
    • 変数: snake_case
    • マクロ: UPPER_CASE
    • 構造体: snake_case(例: struct stamp_sender_packet
  • 括弧: K&Rスタイル

    if (condition) {
      // コード
    }
  • コメント: 英語または日本語で明確に

    // 単一行コメント
    
    /*
     * 複数行コメント
     * 詳細な説明
     */

コードの品質

  • エラーハンドリング: すべてのシステムコールの戻り値をチェック
  • メモリ管理: メモリリークがないことを確認
  • ポータビリティ: クロスプラットフォーム対応を維持(#ifdef によるプラットフォーム分岐)
  • コンパイラ: GCC 14+ 必須。-Werror 有効のため、警告ゼロであること
  • ドキュメント: 複雑な処理には説明を追加

テスト

ユニットテスト

新しい機能には、対応するテストを追加してください(tests/test_stamp.c):

cmake --preset debug
cmake --build --preset debug
ctest --preset debug

手動テスト

プルリクエストを作成する前に、以下をテストしてください:

  1. ビルドテスト

    • クリーンビルドが成功すること
    • 警告が出ないこと
  2. 機能テスト

    • 基本的な機能が動作すること
    • エッジケースでも正しく動作すること
  3. プラットフォームテスト(可能であれば)

    • Windows
    • Linux
    • macOS

コミットメッセージ

コミットメッセージは以下の形式に従ってください:

<タイプ>: <簡潔な説明>

<詳細な説明(オプション)>

<関連issue(オプション)>

タイプ:

  • Add: 新機能の追加
  • Fix: バグ修正
  • Update: 既存機能の更新
  • Refactor: リファクタリング
  • Docs: ドキュメントのみの変更
  • Test: テストの追加・修正
  • Build: ビルドシステムの変更

例:

Fix: Reflectorでのメモリリークを修正

受信したパケットのメモリを適切に解放するように修正。

Fixes #123

レビュープロセス

  1. プルリクエストが作成されると、メンテナーがレビューします
  2. 必要に応じて修正をリクエストします
  3. すべてのチェックが通り、レビューが承認されたらマージします

行動規範

  • 敬意を持って接する
  • 建設的なフィードバックを提供する
  • 多様性を尊重する
  • オープンで協力的な態度を保つ

開発環境 (VS Code)

このプロジェクトは VS Code での開発を推奨しています。

推奨拡張機能

プロジェクトを開くと、以下の拡張機能がインストール推奨されます:

  • C/C++ Extension Pack (ms-vscode.cpptools-extension-pack) - IntelliSense、デバッグ
  • CMake Tools (ms-vscode.cmake-tools) - CMake プロジェクト管理
  • Prettier (esbenp.prettier-vscode) - JSON/Markdown/YAML のフォーマット
  • Git Graph (mhutchie.git-graph) - Git ブランチの可視化
  • GitHub Actions (github.vscode-github-actions) - ワークフローの編集・実行

コードスタイル

言語 インデント スタイル
C/H タブ(8 幅) Linux Kernel スタイル
JSON/YAML 2 スペース Prettier
Markdown 2 スペース Prettier

フォーマット

  • 保存時自動フォーマット: 有効
  • 手動フォーマット: Shift + Alt + F (Windows) / Shift + Option + F (Mac)
  • 改行コード: LF(Unix 形式)
  • 文字コード: UTF-8

質問がある場合

質問がある場合は、遠慮なくissueで質問してください。 初心者の方の質問も歓迎します!

ライセンス

貢献したコードは、プロジェクトと同じMITライセンスの下で公開されます。