このプロジェクトは pjcj さんの作った Perl モジュール Devel::Cover のプロジ
Assistant
Devel::Cover のソースコードを把握しました。以下が概要です:
プロジェクト構造
コアコンポーネント
- Cover.xs (約1600行) - XS/C によるカバレッジ計測エンジン
- lib/Devel/Cover.pm (約1900行) - メインモジュール、B::Deparse を活用
- lib/Devel/Cover/DB.pm - カバレッジデータベース管理
カバレッジ計測の仕組み
2つの動作モード:
- ppaddr 置換モード (デフォルト、高速) -
PL_ppaddrテーブルを置換 - runops 置換モード (レガシー) -
PL_runopsを独自実装に置換
計測対象:
- Statement (文)
- Branch (分岐)
- Condition (条件 -
&&,||,//,xor) - Subroutine (サブルーチン)
- Pod (ドキュメント)
- Time (時間プロファイリング)
特徴的な実装技法
- B::Deparse のカスタマイズ - OP ツリーからソースコード形式を復元
- FNV-1a ハッシュ - OP の一意識別キー生成
- 複数シリアライザ対応 - Sereal > JSON > Storable の優先順位
- 3段階ファイルフィルタ - @Inc, @Ignore, @Select
その他
- 93個の E2E テスト (
tests/ディレクトリ) - 複数のレポート形式 (HTML, Text, JSON, Vim/Nvim 統合)
coverコマンドによるレポート生成
どの部分について詳しく質問されますか?
uuid: bdc41882-c47f-4acb-b69e-0d7ded832330