# integrated-application-development/delphilint architecture

> Architecture diagram of the GitHub repository integrated-application-development/delphilint, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/integrated-application-development/delphilint
- Repository: https://github.com/integrated-application-development/delphilint

## Overview

DelphiLint brings SonarDelphi analysis into Delphi workflows; this tree contains its Java analysis server and a VS Code companion. The principal visible workflow is a VS Code command selecting Delphi inputs and project settings, starting the Java server, sending analysis requests, and displaying diagnostics and fixes. The server initializes plugins and an analysis engine, analyzes files, then returns issues. README capabilities include standalone and SonarQube-connected modes, rule retrieval, project-properties support, and quick fixes. Several IDE-side and server details are represented only by documentation or enclosing source directories; their wiring is omitted where excerpts do not establish it.

Main entry points: [`server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/AnalysisServer.java`](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/AnalysisServer.java) (Request dispatcher), [`companion/delphilint-vscode/src/command.ts`](https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/command.ts) (Analysis commands), [`server/delphilint-server/src/main/java/au/com/integradev/delphilint/analysis/AnalysisOrchestrator.java`](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/analysis/AnalysisOrchestrator.java) (Analysis orchestrator), [`server/delphilint-server/src/main/java/au/com/integradev/delphilint/remote/SonarHost.java`](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/remote/SonarHost.java) (Sonar host access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_vscode["VS Code Companion"]
  node_commands["Analysis commands<br/>[command.ts]"]
  node_project["Project selection"]
  node_settings["Extension settings<br/>[settings.ts]"]
  node_client["Lint client<br/>[server.ts]"]
  node_diagnostics["Issue display<br/>[display.ts]"]
  node_status["Progress status<br/>[statusBar.ts]"]
end

subgraph group_protocol["Server Protocol"]
  node_app["Server startup<br/>[App.java]"]
  node_transport["TLV connection<br/>[TlvConnection.java]"]
  node_analysis_server["Request dispatcher"]
  node_messages["Request and response types"]
end

subgraph group_analysis["Analysis Engine"]
  node_orchestrator["Analysis orchestrator"]
  node_configuration["Engine configuration"]
  node_issues["Issues and fixes<br/>[DelphiIssue.java]"]
end

subgraph group_integrations["Analysis Integrations"]
  node_plugin_cache["Plugin downloads"]
  node_fallback["Fallback plugin"]
  node_sonar_host["Sonar host access<br/>[SonarHost.java]"]
  node_sonar_api["SonarQube API<br/>[HttpSonarApi.java]"]
end

node_vscode_user(("VS Code user"))
node_delphi_files["Delphi source files"]
node_sonarqube{{"SonarQube instance"}}
node_plugin_store[("Local plugin cache")]

node_vscode_user -->|"runs commands"| node_commands
node_commands -->|"selects project"| node_project
node_commands -->|"reads settings"| node_settings
node_commands -->|"selects inputs"| node_delphi_files
node_commands -->|"requests analysis"| node_client
node_commands -->|"updates progress"| node_status
node_commands -->|"publishes issues"| node_diagnostics
node_client -->|"starts Java process"| node_app
node_client -->|"exchanges TLV"| node_transport
node_app -->|"creates server"| node_analysis_server
node_app -->|"runs connection"| node_transport
node_transport -->|"dispatches requests"| node_analysis_server
node_analysis_server -->|"builds responses"| node_messages
node_analysis_server -->|"runs analysis"| node_orchestrator
node_analysis_server -->|"retrieves plugins"| node_plugin_cache
node_analysis_server -.->|"selects fallback"| node_fallback
node_analysis_server -->|"creates host"| node_sonar_host
node_analysis_server -->|"returns results"| node_issues
node_orchestrator -->|"configures engine"| node_configuration
node_orchestrator -->|"loads active rules"| node_sonar_host
node_orchestrator -->|"post-processes issues"| node_issues
node_plugin_cache -.->|"fetches remote plugins"| node_sonar_host
node_plugin_cache -->|"caches plugins"| node_plugin_store
node_fallback -->|"stores fallback"| node_plugin_store
node_sonar_host -.->|"uses HTTP API"| node_sonar_api
node_sonar_api -.->|"requests rules"| node_sonarqube

click node_commands "https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/command.ts"
click node_project "https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/delphiProjectUtils.ts"
click node_settings "https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/settings.ts"
click node_client "https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/server.ts"
click node_diagnostics "https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/display.ts"
click node_status "https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/statusBar.ts"
click node_app "https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/App.java"
click node_transport "https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/TlvConnection.java"
click node_analysis_server "https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/AnalysisServer.java"
click node_messages "https://github.com/integrated-application-development/delphilint/tree/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/message"
click node_orchestrator "https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/analysis/AnalysisOrchestrator.java"
click node_configuration "https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/analysis/EngineStartupConfiguration.java"
click node_issues "https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/analysis/DelphiIssue.java"
click node_plugin_cache "https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/plugin/CachingPluginDownloader.java"
click node_fallback "https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/maintenance/FallbackPluginProvider.java"
click node_sonar_host "https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/remote/SonarHost.java"
click node_sonar_api "https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/remote/sonarqube/HttpSonarApi.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_commands,node_project,node_settings,node_client,node_diagnostics,node_status,node_vscode_user toneBlue
class node_app,node_transport,node_analysis_server,node_messages,node_plugin_store toneAmber
class node_orchestrator,node_configuration,node_issues toneMint
class node_plugin_cache,node_fallback,node_sonar_host,node_sonar_api toneRose
class node_delphi_files,node_sonarqube toneIndigo
```

## Components

### VS Code Companion

- [Analysis commands](https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/command.ts): `companion/delphilint-vscode/src/command.ts`
- [Project selection](https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/delphiProjectUtils.ts): `companion/delphilint-vscode/src/delphiProjectUtils.ts`
- [Extension settings](https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/settings.ts): `companion/delphilint-vscode/src/settings.ts`
- [Lint client](https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/server.ts): `companion/delphilint-vscode/src/server.ts`
- [Issue display](https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/display.ts): `companion/delphilint-vscode/src/display.ts`
- [Progress status](https://github.com/integrated-application-development/delphilint/blob/master/companion/delphilint-vscode/src/statusBar.ts): `companion/delphilint-vscode/src/statusBar.ts`

### Server Protocol

- [Server startup](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/App.java): `server/delphilint-server/src/main/java/au/com/integradev/delphilint/App.java`
- [TLV connection](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/TlvConnection.java): `server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/TlvConnection.java`
- [Request dispatcher](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/AnalysisServer.java): `server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/AnalysisServer.java`
- [Request and response types](https://github.com/integrated-application-development/delphilint/tree/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/message): `server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/message`

### Analysis Engine

- [Analysis orchestrator](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/analysis/AnalysisOrchestrator.java): `server/delphilint-server/src/main/java/au/com/integradev/delphilint/analysis/AnalysisOrchestrator.java`
- [Engine configuration](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/analysis/EngineStartupConfiguration.java): `server/delphilint-server/src/main/java/au/com/integradev/delphilint/analysis/EngineStartupConfiguration.java`
- [Issues and fixes](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/analysis/DelphiIssue.java): `server/delphilint-server/src/main/java/au/com/integradev/delphilint/analysis/DelphiIssue.java`

### Analysis Integrations

- [Plugin downloads](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/plugin/CachingPluginDownloader.java): `server/delphilint-server/src/main/java/au/com/integradev/delphilint/server/plugin/CachingPluginDownloader.java`
- [Fallback plugin](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/maintenance/FallbackPluginProvider.java): `server/delphilint-server/src/main/java/au/com/integradev/delphilint/maintenance/FallbackPluginProvider.java`
- [Sonar host access](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/remote/SonarHost.java): `server/delphilint-server/src/main/java/au/com/integradev/delphilint/remote/SonarHost.java`
- [SonarQube API](https://github.com/integrated-application-development/delphilint/blob/master/server/delphilint-server/src/main/java/au/com/integradev/delphilint/remote/sonarqube/HttpSonarApi.java): `server/delphilint-server/src/main/java/au/com/integradev/delphilint/remote/sonarqube/HttpSonarApi.java`

### Other components

- **VS Code user**
- **Delphi source files**
- **SonarQube instance**
- **Local plugin cache**

## Connections

- VS Code user → Analysis commands: runs commands
- Analysis commands → Project selection: selects project
- Analysis commands → Extension settings: reads settings
- Analysis commands → Delphi source files: selects inputs
- Analysis commands → Lint client: requests analysis
- Analysis commands → Progress status: updates progress
- Analysis commands → Issue display: publishes issues
- Lint client → Server startup: starts Java process
- Lint client → TLV connection: exchanges TLV
- Server startup → Request dispatcher: creates server
- Server startup → TLV connection: runs connection
- TLV connection → Request dispatcher: dispatches requests
- Request dispatcher → Request and response types: builds responses
- Request dispatcher → Analysis orchestrator: runs analysis
- Request dispatcher → Plugin downloads: retrieves plugins
- Request dispatcher → Fallback plugin: selects fallback
- Request dispatcher → Sonar host access: creates host
- Request dispatcher → Issues and fixes: returns results
- Analysis orchestrator → Engine configuration: configures engine
- Analysis orchestrator → Sonar host access: loads active rules
- Analysis orchestrator → Issues and fixes: post-processes issues
- Plugin downloads → Sonar host access: fetches remote plugins
- Plugin downloads → Local plugin cache: caches plugins
- Fallback plugin → Local plugin cache: stores fallback
- Sonar host access → SonarQube API: uses HTTP API
- SonarQube API → SonarQube instance: requests rules
