The codeanalyzer backends
Standalone language backends parse the source, resolve the symbols, and build the call graph. There is one backend for each language, and one more for infrastructure-as-code. Together they are the codeanalyzer-* tools. Each backend writes typed JSON. The SDK reads that JSON and builds models that you can query.
flowchart LR
SDK["CLDK Python SDK<br/>(analysis API)"] -->|invokes| CAJ["codeanalyzer-java<br/>(JVM · WALA)"]
SDK -->|invokes| CAP["codeanalyzer-python<br/>(Jedi · defuse linker)"]
SDK -->|invokes| CAT["codeanalyzer-ts<br/>(TS compiler)"]
CAJ -->|canonical JSON| SDK
CAP -->|canonical JSON| SDK
CAT -->|canonical JSON| SDK
This split lets one analysis API cover many languages. The SDK does not parse code itself. It runs the correct backend. Then it maps the backend JSON onto typed models (JApplication, PyModule, and others).
A new backend that writes the canonical JSON makes its language available to the SDK. The SDK then needs only the Python bindings for that language. See Add a language backend.
This is the backend layer. For the SDKs that consume it, see the SDKs overview.
Maturity tiers
Section titled “Maturity tiers”Mature production-ready · Beta stable core, some features missing · Medium usable through another backend
Backends
Section titled “Backends”The codeanalyzer-* tools parse a language. Then they write the canonical symbol-table and call-graph schema that every frontend reads.
| Language | Backend | Maturity |
|---|---|---|
| Java | codeanalyzer-java | Mature |
| Python | codeanalyzer-python | Mature |
| TypeScript | codeanalyzer-ts | Mature |
| JavaScript | via codeanalyzer-ts | Medium |
| IaC (Helm) | codeanalyzer-iac | Beta |