Koragraph
Koragraph Benchmarks

Koragraph vs CodeGraph, GitNexus, Graphify

Code-graph extraction accuracy, declarations and edges, across twelve languages scored by independent compiler front ends

34 of 39

zero cells lost outright

recall cells won, language by plane

39 of 39

every language, every plane

precision cells led

87.6%

best rival 45.1%

JavaScript intra-repo call recall

12 · 36

CPython ast, go/parser, Roslyn, tsc

languages and repositories, judge-free oracles

The short version

  • 34 of 39

    recall cells won, language by plane

  • 39 of 39

    precision cells led, every one measured

  • 87.6 to 45.1

    JavaScript call recall against the best rival

  • 12 languages

    36 repositories, each scored by a compiler front end

  • 4 tools

    compared locally, no paid API on any path

One question, asked of four graphs by a referee that built none of them

01

The question is whether a graph holds the right declarations and the right edges. Every number is produced by an independent oracle, a compiler front end rather than the tool under test, scored by one shared scorer at one shared library scope, over 12 languages and 36 pinned repositories, 3 per language. Koragraph wins 34 of 39 language and plane cells on recall and leads precision on all 39.

The systems are pinned at current builds: Koragraph shipping build, CodeGraph 1.6.0, GitNexus 1.6.10, Graphify 0.9.51. Each competitor’s index is written to a throwaway location and deleted before the oracle runs, so no system’s own cache is ever scored as source, and no path spends a paid model call.

languageindependent oracle
PythonCPython ast
Gogo/parser
Javatree-sitter-java, custom edge referee
TypeScript / JavaScriptTypeScript compiler API (tsc 5.6.3)
RubyRubyVM::AbstractSyntaxTree
PHPphp-ast (ext/ast)
C#Roslyn
Rustsyn
C / C++Universal Ctags (declarations)
Swiftswiftc -dump-parse (declarations)

One oracle per language, never a tree-sitter grammar where a compiler front end exists. C, C++ and Swift are scored on declarations only, since there is no build-free edge oracle for them that a fair referee could run.

languagewinstiestrails
C100
C++100
C#301
Go400
Java400
JavaScript301
PHP400
Python400
Ruby301
Rust301
Swift100
TypeScript301

Recall, koragraph against the best competitor in each cell. The handful of trails are precision and recall trade-offs or near-ties rather than planes another tool wins decisively.

What a graph never records, it can never return

02

Declarations are types, methods, fields and constants, pooled and matched at the name level within the oracle’s own file set. Koragraph leads recall on every language but two, and the two exceptions are a precision trade rather than a coverage gap.

languageKoragraphCodeGraphGitNexusGraphify
C82.8 / 94.640.0 / 87.179.0 / 90.630.4 / 98.8
C++74.7 / 93.561.1 / 86.067.3 / 90.724.9 / 84.6
C#97.8 / 93.297.9 / 96.483.2 / 97.058.6 / 94.2
Go99.4 / 100.082.3 / 99.996.6 / 98.670.3 / 98.6
Java98.4 / 97.696.1 / 99.296.7 / 96.361.8 / 100.0
JavaScript99.8 / 87.474.3 / 87.8100.0 / 94.564.3 / 97.5
PHP99.9 / 100.099.4 / 100.099.0 / 99.874.1 / 100.0
Python99.2 / 100.076.9 / 99.187.0 / 95.258.2 / 100.0
Ruby99.0 / 99.984.2 / 99.995.3 / 98.372.0 / 87.1
Rust90.7 / 98.788.5 / 93.585.5 / 96.170.0 / 89.7
Swift73.8 / 76.682.9 / 67.883.0 / 58.355.3 / 78.3
TypeScript94.0 / 100.054.4 / 99.885.1 / 83.144.8 / 99.9

Pooled declarations, recall / precision. The highlighted cell leads recall in its row, whichever system holds it. C# and JavaScript are the two rows where a competitor edges Koragraph, both by a fraction.

Whether the graph can answer who calls this

03

The intra-repo calls plane is the one that decides whether a graph can trace a call back to its callers. The callee must be a declared in-repo symbol, so no system is penalised for not modelling standard-library targets. Koragraph leads recall on every language with an independent edge oracle except Rust, and does it at 91 to 100% precision, while the tools that report higher raw recall elsewhere do so at far lower precision.

Intra-repo call recall by language. Koragraph leads the best competitor on eight of nine languages, from 68.7 to 87.6 percent, and trails only Rust.0255075100JavaScriptGraphify 45.1Koragraph 87.6GoCodeGraph 85.0Koragraph 89.1PHPCodeGraph 88.0Koragraph 88.9PythonCodeGraph 85.1Koragraph 86.1JavaCodeGraph 73.1Koragraph 86.0C#CodeGraph 79.8Koragraph 83.6TypeScriptCodeGraph 55.2Koragraph 70.6RubyCodeGraph 41.3Koragraph 51.5RustCodeGraph 76.5Koragraph 68.7intra-repo call recall (%)
Intra-repo call recall by language. The dark bar is Koragraph, the grey bar the best of CodeGraph, GitNexus and Graphify in that row. Koragraph leads on every language with an independent edge oracle except Rust, and does it at 91 to 100% precision.
languageKoragraphCodeGraphGitNexusGraphify
JavaScript87.6 / 99.839.4 / 60.341.9 / 66.145.1 / 77.1
Go89.1 / 100.085.0 / 88.463.8 / 90.565.3 / 100.0
PHP88.9 / 99.988.0 / 100.077.1 / 99.631.7 / 79.3
Python86.1 / 100.085.1 / 98.954.6 / 95.553.3 / 97.5
Java86.0 / 96.673.1 / 87.868.6 / 88.753.5 / 92.1
C#83.6 / 97.679.8 / 97.750.5 / 97.554.4 / 98.8
TypeScript70.6 / 98.655.2 / 66.250.2 / 75.344.2 / 93.2
Ruby51.5 / 96.741.3 / 91.228.7 / 93.740.8 / 98.8
Rust68.7 / 91.076.5 / 83.148.9 / 78.747.6 / 99.6

Intra-repo calls, recall / precision. The highlighted cell leads recall in its row. On JavaScript the gap is 87.6 against a best rival of 45.1. Rust is the one row where a competitor leads recall, highlighted for CodeGraph, and Koragraph keeps the higher precision there.

Check it yourself

04

The harness is judge-free and deterministic. The corpus is pinned and listed in full, the competitor versions and oracle toolchains are pinned, and every number regenerates from the test folder with one command per repository. A competitor scoring a silent zero on a plane is treated as a harness bug until proven to be the tool, and a harness fix is kept even when it helps a competitor.

  • Pinned corpus. 12 languages, 36 repositories, 3 per language, each at a published commit and listed in the corpus manifest.
  • Independent oracles. One compiler front end per language, never a tree-sitter grammar where a real front end exists, so no tool grades its own output.
  • Cache hygiene. Each competitor’s index is written to a throwaway location and deleted before the oracle runs.
  • No paid API. Koragraph runs with extraction LLM off, Graphify with clustering off, everything local.
Benchmark, corpus and scorer on GitHub →