Skip to content

codeanalyzer-java: Neo4j v2 base relabel #182

Description

@sinha108

Plan (optional)

Design spec: https://github.com/codellm-devkit/codeanalyzer-java/blob/main/docs/design/specs/schema-v2-l3-l4-design.md

Problem

neo4j/SchemaCatalog is at v1 1.0.0 with old node families (JCompilationUnit, JTypeis_* booleans, JCallable with code) and J_CALLS carrying type/weight/source_kind/destination_kind. It must project the v2 CPG (L1/L2 layer).

Scope boundary

L1/L2 Neo4j families only — the dataflow overlays (J_CFG_NEXT/J_CDG/J_DDG/J_PARAM_*/J_SUMMARY) ride in the L3/L4 issues. Reuse the existing GraphProjector/RowBuilder/GraphRows/CypherWriter/BoltWriter machinery; keep the dual-label JSymbol merge pattern and _module provenance.

Goals

  • v2 node families keyed by can:// id: JApplication, JModule, JSymbol (+ specific type-kind label), JCallable, JField, JParameter
  • J_-prefixed relationships (D9): J_HAS_MODULE, J_DECLARES, J_HAS_CALLABLE, J_HAS_FIELD, J_RESOLVES_TO, J_CALLS(weight,prov), J_EXTENDS, J_IMPLEMENTS
  • SchemaCatalog major version bump; --emit schema reflects the new families
  • --emit neo4j runs at full implemented depth; -a/--graph-field-depth alongside --emit neo4j is an explicit non-zero error

Caveats and known risks

  • Families rename = major graph-schema change; moves in lockstep with the JSON schema.
  • Deferred-edge (no-dangling) discipline; unresolved-string fallback rides on the source node's props.

Definition of done

  • --emit schema produces a schema.neo4j.json listing every v2 node family the JSON emits.
  • --emit neo4j (no URI) writes a graph.cypher that loads clean against an empty Neo4j and is idempotent.
  • Cross-projection gate: Neo4j node/edge counts at full depth match the JSON at max_level (modulo explicit HAS_* containment); no dangling relationships.

Metadata

Metadata

Assignees

Labels

breakingBreaking ChangeenhancementNew feature or requestjavaPull requests that update java code

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions