Documentation / The IDE
Code intelligence
Precise navigation, references, hierarchies, refactorings with preview, and symbol search.
Yuli understands your code, not just its text. Navigation always takes you to the exact line, and refactorings show their impact before they're applied.
Navigation
| Action | Shortcut |
|---|---|
| Go to definition | Ctrl+B or Ctrl+Click |
| Go to implementation | Ctrl+Alt+B |
| Find usages | Alt+F7 or Shift+F12 |
| Call hierarchy | Ctrl+Alt+H |
| Type hierarchy | Ctrl+H |
| Method flow and trace | Ctrl+Alt+F |
| Find symbol (class, method…) | Ctrl+T |
| Go to symbol in file | Ctrl+Shift+O |
| Go to database object (function, package, table) | Ctrl+Alt+J |
Near-instant Ctrl+Click
The target is resolved while the cursor hovers over the symbol, and the file is read ahead of time. If it still takes a moment, a discreet notice appears that doesn't block the editor.
Generated code
Accessors generated by annotations (Lombok getters, setters, constructors, and builders) take you to the field they come from.
References panel
A compact two-column panel: class and member, and the line snippet. Its options are remembered:
- Read and write accesses.
- Generated code.
- Imports.
- File path.
- Group by file.
- Code preview.
Refactorings
| Refactoring | Shortcut |
|---|---|
| Rename symbol | Shift+F6 (or F2) |
| Extract method | Ctrl+Alt+Shift+M |
| Change signature | Ctrl+F6 |
| Move class | F6 |
| Extract variable and inline | From quick actions (Alt+Enter) |
Rename shows a preview of the impact before applying.
External libraries
Dependencies are browsable from the project panel. Their classes open inline or in split view, with source code or decompiled, always read-only.
Your own jars
Add .jar libraries in Project → Project structure… or with Add .jar from the Maven / Gradle panel:
- As a real dependency: in Maven,
systemor installed in the local repository; in Gradle,implementation files(...). - Or as an IDE library, without touching the build.
The Java engine resolves those jars even when Maven or Gradle can't run.
Unmigrated projects
Yuli understands an Ant build.xml and Eclipse's .classpath and .project files (sources, jars, variables, and the WTP web root). You get autocomplete, navigation, and compilation without Maven or Gradle.
Frameworks
| Framework | What it understands |
|---|---|
| Spring | Beans, injection, and endpoints. Spring panel in the bottom panel. |
| JPA and Hibernate | Entities, XML mappings, and tables. |
| Struts 1 and 2 | Actions, forms, and configuration. |
| Servlets and JSP | web.xml, taglibs, includes, and messages. |
| Lombok | Accessors, constructors, and builders. |
How it works under the hood
| Piece | What it does |
|---|---|
| Tree-sitter | Parses code incrementally. |
| Symbol graph | Classes, methods, fields, and their relationships (calls, extends, implements, injects). |
| SQLite | Stores the graph in .ai/codebase/, outside Git. |
| Invalidation | When you edit a file, only what depends on it is re-analyzed. |
| Java compiler | Exact type resolution. |
The Code Intelligence panel (Alt+0) shows the index status.
With the agent
The agent uses the same intelligence: yuli_find_references, yuli_impact, yuli_search_symbols, yuli_refactor… To answer questions about the project, it extracts a bounded subgraph instead of reading entire files, which saves context and tokens.
Inspections and quality
Inspections (null-safety, dead code, Spring) and quality metrics also appear over the code: above each method, CC · CoG · MI · lines · coverage · cost. Adjust severities in Global options → Inspections. See Measurement against N−1.