Which API should I use?¶
Understand exposes an analyzed project — entities, references, metrics, graphs, architectures — to your own code through a programmable API. Use the Python API. It is the actively developed interface, and it is the same API that powers plugins.
Short answer
Write new code against the Python API. See Python API: getting started. The C and Perl APIs still ship for backward compatibility, but they are deprecated and receive no new features. The Java API was removed in 2025.
The APIs at a glance¶
| API | Status | Use it for |
|---|---|---|
| Python | Supported — the API. | All new scripts, tools, and plugins. Full class-oriented model, gets every new feature. |
| C | Legacy, deprecated. Still ships. | Existing C/C++ programs that already link against it. Do not start new projects here. |
| Perl | Deprecated as of 2026. Still ships. | Keeping old .pl scripts running until you port them to Python. |
| Java | Removed in 2025. | — (use the Python API). |
Python — the one to use¶
The Python API is class-oriented (understand.Db,
understand.Ent, understand.Ref,
understand.Metric, understand.Arch, …) and is what every plugin type is built on. Understand
bundles its own Python interpreter (upython) so scripts run with zero setup. Start at
Python API: getting started, or browse the full
Python API reference.
C — legacy, deprecated¶
A C API (the classic udb.h interface) ships with Understand and lets a C/C++ program query a
database directly. It is kept for existing integrations only — the shipped header is authoritative,
and the older reference documentation lists functions that no longer exist. Prefer Python for new
work.
Perl — deprecated as of 2026¶
The Perl API (the Understand module, run with uperl) still runs and ships with Understand, but it
is deprecated as of 2026 and will no longer be maintained; it will be removed in a future release.
Port existing Perl scripts to Python. It also covers Perl plugin scripts (.upl) — historically
Graph, Report, and CodeCheck plugins — see Write a plugin.
Java¶
Understand once shipped a SciTools-built Java API, but it was removed in 2025. Current versions have no Java API — use the Python API instead.
Where to go next¶
- Python API: getting started — open a database and iterate entities.
- Write a plugin — turn a Python script into a graph, report, check, metric, or architecture inside the GUI.
- Sample & solution scripts — shipped examples you can adapt.
- Breaking API changes in 8.0 — what to update when porting scripts.