Skip to content

kcov代替のBashカバレッジツール導入検討 #50

@yellow-seed

Description

@yellow-seed

背景

kcovをCI/CDから削除しました(#49関連)。削除理由は以下の通りです:

  • 保守コストの高さ: kcovのインストールとビルドがCI/CDで複雑(特にUbuntuではソースからのビルドが必要)
  • CI/CDの不安定性: kcovの依存関係がCI/CD失敗の原因となり、本質的なテスト実行を妨げていた
  • 実用性とのバランス: dotfiles管理という性質上、テストの実行自体が重要で、カバレッジ率の数値は二次的

目的

kcov削除により保守性は向上しましたが、コードカバレッジの可視化は品質管理に有用です。より保守しやすいカバレッジツールの導入を検討します。

要件

必須要件

  • ✅ macOS/Ubuntu両対応(macOS優先)
  • ✅ CI/CDでの安定した動作
  • ✅ Codecovへのレポート連携
  • ✅ BATSテストとの統合
  • ✅ シンプルなインストール手順

優先要件

  • 📊 HTMLレポート生成(ローカル確認用)
  • 🚀 高速な実行
  • 📦 パッケージマネージャーからのインストール対応

代替ツール候補

1. bashcov

  • 概要: SimpleCov-based coverage for bash
  • インストール: gem install bashcov
  • 利点:
    • RubyGemsで簡単インストール
    • SimpleCov形式のレポート生成
    • 安定した実績
  • 欠点:
    • Ruby/RubyGems依存
    • 追加の言語スタックが必要
  • Codecov連携: SimpleCovレポートをCodecovにアップロード可能

2. shcov

  • 概要: Shell coverage tool
  • インストール: Pure shell implementation
  • 利点:
    • 外部依存なし
    • シンプルな実装
  • 欠点:
    • 成熟度が低い
    • 機能が限定的
    • Codecov連携が不明確

3. kcov(再評価)

  • 概要: Code coverage tool for compiled/interpreted programs
  • インストール: Homebrew(macOS)、ソースビルド(Ubuntu)
  • 利点:
    • 高機能
    • Codecov標準対応
  • 欠点:
    • Ubuntu環境でのビルドが複雑
    • CI/CDの保守コスト高

4. その他の選択肢

  • bash-coverage: 実験的、メンテナンス状況不明
  • Codecov Bash Uploader: カバレッジ計測なし、レポートアップロードのみ
  • GitHub Actions標準ツール: 現時点でBash向けの標準ツールなし

検討事項

  1. ツール選定基準

    • CI/CD安定性 > 機能性
    • 保守コスト最小化
    • macOS環境での動作確認(優先環境)
  2. 段階的導入

    • Phase 1: macOS環境のみでカバレッジ計測
    • Phase 2: Ubuntu環境への拡大(必要に応じて)
  3. 代替アプローチ

    • カバレッジ計測を別ワークフローに分離(本体テストへの影響最小化)
    • オプトイン方式(デフォルトは無効、必要時のみ有効化)
  4. 費用対効果

    • dotfilesプロジェクトにおけるカバレッジ率の実用価値
    • テスト品質向上との比較

アクションアイテム

  • bashcovのローカル検証(macOS環境)
  • bashcovのCI/CD統合テスト
  • Codecov連携の実装確認
  • Ubuntu環境での動作検証
  • パフォーマンス測定(テスト実行時間への影響)
  • 導入可否の最終判断

参考リンク

関連

Metadata

Metadata

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions