Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto
#5,630 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
c, cpp, python

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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

Lenguaje dominante
Python
Estrellas
57
Forks
11
Merge medio
1 h 20 min
PR fusionados (30 d)
985

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de squid-protocol/gitgalaxy

Todos los issues de squid-protocol/gitgalaxy

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.