Skip to content

Tracking: framework-aware route & edge coverage requests #967

Open

Description

@colbymchenry

CodeGraph's value on framework code comes from connecting flows that have no static call edge — a route to its handler, a dispatch to its listener, a client call to its provider. We add these as framework resolvers / edge synthesizers (Express, Laravel, Rails, FastAPI, Spring, Gin, GoFrame, the dispatch-synthesizer family, …), each validated on real repos before it ships.

This issue consolidates the individual framework-coverage requests so they don't fragment the tracker ahead of the next releases. The individual issues are being closed and folded in here — 👍 a row below to signal demand, and PRs are very welcome (start from the closest existing resolver/synthesizer; see docs/design/).

Requested framework coverage (not yet shipped):

Framework / pattern Issue(s) What's missing
Hono sub-routers #307 Routes defined on a new Hono() sub-router and mounted via app.route('/prefix', sub) aren't extracted (~82% miss). Only the mount point + direct app.* routes are picked up. Express-like, so close to existing support.
Java / MyBatis — statement-id calls #489 Bridge getSqlSessionTemplate().delete(SQL_NS + ".deleteByOrderId", …) to the XML <delete id="…"> statement, resolving the statically-recoverable id (literal / Class.getName() / + concat).
Java / MyBatis — resultMap & <sql> #592 Index <resultMap> and <sql> fragments so a column/field can be traced back to the statements that reference it.
Java / Spring — OpenFeign → controller #490 Synthesize an edge from a @FeignClient method to the @RestController route with the matching HTTP path, across service modules.
Java / Spring — @ConditionalOnProperty #491 Emit a config-key reference from @ConditionalOnProperty(prefix, name, …) the way @Value / @ConfigurationProperties already do.

Prioritization is roughly by 👍 + PR availability. Each new synthesizer/resolver is validated on ≥2 real repos plus a control before it lands.

This is distinct from the other consolidation trackers: #648 (language support), #649 (agent / IDE install targets), #750 (chained factory/singleton call resolution).

Activity

  1. KnifeOfLife commented on Jul 6, 2026

    @KnifeOfLife

    +1, reported concrete-class @resource field injection case in #1187

  2. antoineFrau commented on Jul 22, 2026

    @antoineFrau

    Route-extraction backlog (plugin issues)

    Spawn work with the in-repo skill /add-routes-plugin (.claude/skills/add-routes-plugin/SKILL.md). One PR per issue.

    Tier 1

    Framework Issue
    Fastify #1407
    Hono #1408 (supersedes closed #307 for full coverage)
    Symfony #1409
    Ktor #1410
    JAX-RS (@Path/@GET) #1411
    Sinatra + Grape #1412

    Tier 2

    Framework Issue
    Fiber #1413
    hapi #1414
    Koa (@koa/router) #1415
    Micronaut #971
    Slim #1416
    Litestar #1417
    Sanic #1418
    aiohttp #1419
    AdonisJS #1420

    Tier 3

    Framework Issue
    FastEndpoints #1421
    Remix / React Router v7 framework mode #1422
    Elysia #1423
    Vert.x #1424
    Akka HTTP / Pekko HTTP #1425
    http4s #1426
    Tornado #1427
    Pyramid #1428
    Falcon #1429
    Bottle #1430

    Suggested first wave: #1407 #1408 #1409 #1410 #1411 #1412 #1413

    Collision note (Fastify / hapi / Koa): Express detect() already claims those deps — plugins must replace/narrow it or you get double-detection.

  3. antoineFrau commented on Jul 22, 2026

    @antoineFrau

    The backlog comment above listed issues that were filed on this repo by mistake (#1407–#1430). Those are closed; the route-plugin backlog lives on https://github.com/kernoio/codegraph-engine.

  4. colbymchenry commented on Oct 2, 2026

    @colbymchenry
    OwnerAuthor

    Adding Jersey (JAX-RS) to this list, requested in #2116. Its routes are declared with @Path on resource classes and methods plus @GET/@POST/… verb annotations, so it fits the existing annotation-route pattern the Spring resolver uses.

  5. ChampPABA commented on Oct 7, 2026

    @ChampPABA

    Could Elysia be added to this list? Its routes are chained verb calls on an Elysia instance, with prefixes coming from the constructor (or .group()) and plugins mounted via .use(), so it is close to the existing Express/Hono-style chained routes:

    // users.ts
    export const users = new Elysia({ prefix: '/api/users' })
      .get('/', listUsers)
      .post('/', createUser)
    
    // index.ts
    new Elysia().use(users).listen(3000)   // GET /api/users, POST /api/users

    On codegraph 1.6.2 with Elysia 1.2, our Bun API (~100 handlers written this way) gets zero route nodes. A public repo with the same shape for validation: C4illin/ConvertX (routes split across src/pages/*, mounted in src/index.tsx).

    Prior work: the route backlog comment above listed Elysia (#1423), but that list moved to kernoio/codegraph-engine, where it landed as kernoio#67. The Elysia part of #1737 may also help, since its author offered in #2332 to resend it one framework per PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions