Supported Languages
ArchGraph supports 11 programming languages with varying levels of call resolution.
Language support matrix
| Language | Parser | Call Resolution | Requirements |
|---|---|---|---|
| TypeScript | tree-sitter | SCIP (compiler-backed) | Node.js |
| JavaScript | tree-sitter | SCIP (compiler-backed) | Node.js |
| Python | tree-sitter | SCIP (compiler-backed) | Node.js |
| Rust | tree-sitter | SCIP (compiler-backed) | Rust toolchain |
| Go | tree-sitter | SCIP (compiler-backed) | Go toolchain |
| Java | tree-sitter | SCIP (compiler-backed) | JDK |
| Kotlin | tree-sitter | SCIP (compiler-backed) | JDK |
| C | tree-sitter | SCIP (scip-clang) | Linux/macOS |
| C++ | tree-sitter | SCIP (scip-clang) | Linux/macOS |
| Swift | tree-sitter | Heuristic (name-based) | -- |
| Objective-C | tree-sitter | Heuristic (name-based) | -- |
Resolution methods
SCIP (compiler-backed): Uses compiler indexes for precise, cross-file call resolution. Available on Pro and Enterprise plans.
Heuristic (name-based): Matches function calls by name. Works without compiler toolchains but may produce false positives for common names.
What gets extracted
For each language, ArchGraph extracts:
- Functions -- declarations, parameters, return types
- Classes -- inheritance, methods, properties
- Modules/Files -- imports, exports, dependencies
- Calls -- function-to-function call edges
- Contains -- structural nesting (class contains method, file contains class)
- Security labels -- input sources, dangerous sinks, crypto operations