ADR-010: Codecov採用によるコードカバレッジ管理¶
ステータス¶
承認済み
コンテキスト¶
プロジェクトのコード品質管理において、テストカバレッジの可視化と継続的な監視が必要である。以下の課題を解決する必要がある:
- カバレッジの可視化
- PRごとのカバレッジ変化の把握
-
カバレッジレポートのチーム共有
-
品質ゲートの自動化
- カバレッジ閾値の設定と自動チェック
-
品質低下の早期検出
-
開発プロセスの統合
- GitHub PRとの統合
-
CI/CDパイプラインでの自動実行
-
長期的な品質トレンド分析
- カバレッジ履歴の追跡
- 品質メトリクスの可視化
決定¶
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
}
}
期待される効果¶
ポジティブな効果¶
- 品質の可視化
- カバレッジの継続的な監視
-
PRごとの品質変化の把握
-
開発プロセスの改善
- テスト書き忘れの防止
-
コードレビューの品質向上
-
チーム全体の品質意識向上
- 品質メトリクスの共有
-
継続的な改善サイクル
-
リリース品質の担保
- 自動的な品質ゲート
- リグレッションの早期発見
ネガティブな効果¶
- 開発速度への一時的影響
- カバレッジ要件によるテスト作成時間
-
CI/CD実行時間の増加
-
外部サービス依存
- サービス障害時の影響
- データの外部保存
運用ルール¶
カバレッジ要件¶
- 新規機能: 80%以上のカバレッジ必須
- バグ修正: 修正箇所の100%カバレッジ
- リファクタリング: カバレッジの維持または向上
PR承認条件¶
- Codecovチェックの成功
- カバレッジ低下の場合は理由説明必須
- 80%を下回る場合はマージ不可
モニタリング¶
- 週次でのカバレッジトレンド確認
- 月次での品質レポート作成
- 四半期での目標見直し
測定指標¶
成功指標¶
- プロジェクト全体カバレッジ: 80%以上
- 新規PRのカバレッジ: 80%以上
- カバレッジトレンド: 維持または向上
監視方法¶
- Codecovダッシュボード
- GitHub PR統合チェック
- 週次品質レポート
セキュリティ考慮事項¶
アクセス制御¶
- CODECOV_TOKENの適切な管理
- リポジトリ権限の最小化
- 定期的なトークンローテーション
データ保護¶
- プライベートリポジトリ設定
- センシティブデータの除外
- GDPR準拠の確認
将来の拡張¶
Phase 3での活用¶
- E2Eテストカバレッジ統合
- パフォーマンステストとの連携
- 品質ダッシュボード構築
長期計画¶
- SonarCloudとの統合検討
- セキュリティスキャンとの連携
- カスタム品質メトリクス追加