Skip to content

ADR-010: Codecov採用によるコードカバレッジ管理

ステータス

承認済み

コンテキスト

プロジェクトのコード品質管理において、テストカバレッジの可視化と継続的な監視が必要である。以下の課題を解決する必要がある:

  1. カバレッジの可視化
  2. PRごとのカバレッジ変化の把握
  3. カバレッジレポートのチーム共有

  4. 品質ゲートの自動化

  5. カバレッジ閾値の設定と自動チェック
  6. 品質低下の早期検出

  7. 開発プロセスの統合

  8. GitHub PRとの統合
  9. CI/CDパイプラインでの自動実行

  10. 長期的な品質トレンド分析

  11. カバレッジ履歴の追跡
  12. 品質メトリクスの可視化

決定

Codecovをコードカバレッジ管理サービスとして採用する。

設定内容: - カバレッジ目標: 80%(プロジェクト・パッチ両方) - 閾値設定: プロジェクト2%、パッチ10% - GitHub PR統合: 自動コメント・チェック - CI/CD統合: GitHub Actions自動アップロード

選択肢の比較

Codecov

  • メリット:

  • GitHub完全統合

  • 無料プランでOSS対応
  • 詳細なカバレッジレポート
  • PR単位の差分表示
  • 複数言語・フレームワーク対応

  • デメリット:

  • 外部サービス依存

  • 設定の複雑さ

Coveralls

  • メリット:

  • シンプルな設定

  • GitHub統合

  • デメリット:

  • 機能がCodecovより限定的

  • カスタマイズ性が低い

SonarCloud

  • メリット:

  • 包括的な品質分析

  • セキュリティ分析も含む

  • デメリット:

  • 重厚で複雑

  • カバレッジ以外の機能が過剰

セルフホスト

  • メリット:

  • データ管理の完全制御

  • カスタマイズ性

  • デメリット:

  • 運用コスト

  • 保守工数

実装内容

1. Codecov設定ファイル

# codecov.yml
coverage:
  status:
    project:
      default:
        target: 80%      # プロジェクト全体のカバレッジ目標
        threshold: 2%    # 許容変動幅
    patch:
      default:
        target: 80%      # 新規コードのカバレッジ目標
        threshold: 10%   # 新規コードの許容変動幅

2. GitHub Actions統合

- name: Upload coverage to Codecov
  uses: codecov/codecov-action@v5
  with:
    token: ${{ secrets.CODECOV_TOKEN }}
    files: app/coverage/lcov.info
    flags: unittests
    fail_ci_if_error: true

3. Vitest設定強化

coverage: {
  provider: 'v8',
  reporter: ['text', 'json', 'html', 'lcov'],
  thresholds: {
    statements: 80,
    branches: 80,
    functions: 80,
    lines: 80
  }
}

期待される効果

ポジティブな効果

  1. 品質の可視化
  2. カバレッジの継続的な監視
  3. PRごとの品質変化の把握

  4. 開発プロセスの改善

  5. テスト書き忘れの防止
  6. コードレビューの品質向上

  7. チーム全体の品質意識向上

  8. 品質メトリクスの共有
  9. 継続的な改善サイクル

  10. リリース品質の担保

  11. 自動的な品質ゲート
  12. リグレッションの早期発見

ネガティブな効果

  1. 開発速度への一時的影響
  2. カバレッジ要件によるテスト作成時間
  3. CI/CD実行時間の増加

  4. 外部サービス依存

  5. サービス障害時の影響
  6. データの外部保存

運用ルール

カバレッジ要件

  • 新規機能: 80%以上のカバレッジ必須
  • バグ修正: 修正箇所の100%カバレッジ
  • リファクタリング: カバレッジの維持または向上

PR承認条件

  • Codecovチェックの成功
  • カバレッジ低下の場合は理由説明必須
  • 80%を下回る場合はマージ不可

モニタリング

  • 週次でのカバレッジトレンド確認
  • 月次での品質レポート作成
  • 四半期での目標見直し

測定指標

成功指標

  • プロジェクト全体カバレッジ: 80%以上
  • 新規PRのカバレッジ: 80%以上
  • カバレッジトレンド: 維持または向上

監視方法

  • Codecovダッシュボード
  • GitHub PR統合チェック
  • 週次品質レポート

セキュリティ考慮事項

アクセス制御

  • CODECOV_TOKENの適切な管理
  • リポジトリ権限の最小化
  • 定期的なトークンローテーション

データ保護

  • プライベートリポジトリ設定
  • センシティブデータの除外
  • GDPR準拠の確認

将来の拡張

Phase 3での活用

  • E2Eテストカバレッジ統合
  • パフォーマンステストとの連携
  • 品質ダッシュボード構築

長期計画

  • SonarCloudとの統合検討
  • セキュリティスキャンとの連携
  • カスタム品質メトリクス追加

参照