Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Call-graph validation for C/C++: independent body oracle + family consensus on the DOOM corpus (the Graph Accuracy Audit only covers Python/TS/Java)

オープン
#5,630 コメント 6 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
c, cpp, python

調査の方向性

Start with the proposed tests/tools/doom_speedrun/callgraph_oracle.py and the DOOM Crucible integration in #5619; the issue identifies the licensed ports and the source-body, tree-sitter, and family-consensus checks to implement. Use the existing validation entry points as the first place to trace how nightly tests and recall/precision thresholds are configured. Done means the repository tool runs with one command, publishes a baseline, covers the identified call shapes, and fails the nightly on regressions.

索引モデルが issue の本文から書いたものです。

説明

core-engine enhancement needs:doom-corpus priority: high scope:frontier testing

Why

Structural extraction is checked against ctags, tree-sitter and libclang; C/C++ call graphs have no independent check (the Graph Accuracy Audit compares against pyan3, the TypeScript checker and scip-java; the C/C++ reference, #3784, is open). A first pass on the DOOM corpus found two engine defects with thousands of edges each (filed alongside this issue) within an hour.

Method (prototype on nyx, /srv/storage_16tb/projects/gitgalaxy/doom-study/)

  1. Independent body oracle: for each engine function, the brace-matched body from source (comments, strings, preprocessor lines stripped), every defined_name( call; compare with calls_out_to restricted to defined names. linuxdoom: 1,597/1,597 calls agree (recall 1.000, precision 1.000 apart from recursion); chocolate-doom 12,132 calls, 3 misses (a call inside --Vars[ReadMapVar(...)]). Use tree-sitter call_expression rather than regex for C++ (regex mistakes std::unique_lock<...> lock( for a call and misses f<T>().
  2. Family consensus: near-identical ports (linuxdoom, doomgeneric, doom-ascii, sdl-doom, PureDOOM, Chocolate, Crispy, doom-wasm, inter-doom) vote on each edge; a port that defines both ends but lacks an edge most siblings have is checked against its source. First pass: 306 holes, 304 real divergences, 2 engine misses (R_PointToAngle -> SlopeDiv passed as a function pointer).
  3. Report per port and per shape (statement, nested argument, condition/return, after cast, after operator, subscript, function pointer, macro), recall/precision, with examples; licensed ports only.
  4. Wire into the DOOM Crucible nightly (#5619) with thresholds, and a libclang call-reference (#3784) on the C subset when it lands.

Acceptance

  • Tool in the repo (tests/tools/doom_speedrun/callgraph_oracle.py or the crucible), one command, licensed ports.
  • Baseline published on this issue; every new defect shape gets its own issue.
  • Nightly fails on a recall/precision regression.

Found by the DOOM corpus call-graph consensus check (#5620, #5457): near-identical ports vote on each call edge, and an independent body oracle re-extracts calls from source. Licensed ports only.

🤖 Generated with Claude Code

主要言語
Python
スター
57
フォーク
11
平均マージ
1時間 20分
マージ済み PR(30日)
985

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

squid-protocol/gitgalaxy のほかの issue

squid-protocol/gitgalaxy の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。