コンテンツにスキップ

Dead code / coverage sweep — 2026-06-03

次バージョンの内部最適化テーマ。最初のステップとして、ラインカバレッジの走査 (sweep)を実行しカバレッジ80%未満の全ファイルを精査することで、コードベースに 実行されないデッドコードがないことを検証する。

Rubyの組み込みCoverageモジュールを使い、spec/spec_helper.rbCOVERAGE=1の インストルメンテーションを追加した(追加のgemは不要。ネイティブ拡張はすでにFlakeに 含まれている)。Nixシェル内でCOVERAGE=1 bundle exec rspecを実行すると、カバレッジ比 の昇順でソートされたcoverage_report.txtが生成される。

全スイート: 走査時点で5 376 examples, 0 failures

FileCoverageVerdict
rigor/mcp/loop.rb38.1%テストの欠落 —— specが存在しなかった
rigor/plugin/box.rb52.9%環境ゲート付きRUBY_BOX=1、ADR-39)
rigor/testing.rb66.7%テストの欠落 —— Rigor.dump_type / assert_typeの便宜エイリアスが未カバー
rigor/cli.rb72.5%サブコマンドのパスは統合テスト経由で実行済み。残りの欠落はI/Oエラー分岐
rigor/inference/precision_scanner.rb74.2%テストの欠落 —— FileResultヘルパーとUnion/Intersection/Difference分類の分岐
rigor/plugin/isolation.rb75.0%環境ゲート付きruby_box戦略にはRUBY_BOX=1が必要)。forkベースのパスは既存のspecでカバー済み
rigor/plugin/io_boundary.rb77.2%意図的な境界 —— DefaultHttpClientは本物のNet::HTTPを使う。テストはフェイクのクライアントを注入する
rigor/mcp/server.rb77.6%テストの欠落 —— rigor_triagerigor_coverageのツール呼び出しが未テスト
rigor/language_server/server.rb79.3%LSPのパスはランナー経由で実行済み。残り=エラーパスの分岐

なし

低カバレッジのファイルはいずれも、特定可能なデッドではない理由を持っていた—— 環境ゲート付きのフィーチャーフラグ、意図的なI/O境界、あるいは単にまだ書かれて いなかったテスト。

New / updated specWhat it covers
spec/rigor/mcp/loop_spec.rb (new)通常のディスパッチ、JSONパースエラーからの回復、空行スキップ、通知(nil → 書き込みなし)、複数リクエストのシーケンス
spec/rigor/testing_spec.rb (new)Rigor::Testing.dump_type / assert_type、およびRigor.dump_type / Rigor.assert_typeの委譲エイリアス
spec/rigor/inference/precision_scanner_spec.rb (extended)FileResultの比率ヘルパー(合計ゼロを含むエッジケース)、dynamic_count、Union/Intersection分類
spec/rigor/mcp/server_spec.rb (extended)rigor_triageのラウンドトリップ、rigor_coverageのラウンドトリップ、--top=--params=のargv受け渡し

実施後のスイート: 5 402 examples, 0 failures

© 2026 TypedDuck. Licensed under CC BY-SA 4.0.