A collection of modular and reusable libraries and tools for semantic analysis of ink! smart contracts.
ink! analyzer aims to improve ink! language support in integrated development environments (IDEs), source code editors and other development tools by providing modular and reusable building blocks for implementing features like diagnostic errors, code completion suggestions, code/intent actions, inlay hints, signature help and hover content for the ink! programming language - which is used for writing smart contracts for blockchains built with Substrate.
block-beta
columns 1
block:IDE
columns 1
Label["IDE/Code Editor/Development Tool"]
Core("Core")
space
Extension("Extension/Plugin")
end
%% Grouped for styling/spacing
block:Custom
columns 1
space
LSP("Language Server")
space
Analyzer("Semantic Analyzer")
end
%% bidirectional communication between IDE and Extension
Core--"Extension/Plugin API"-->Extension
Extension-->Core
%% bidirectional communication between Extension and Language Server
Extension--"LSP (Language Server Protocol)"-->LSP
LSP-->Extension
%% Language Server talks to Semantic Analyzer
LSP--"Analyzer API"-->Analyzer
classDef blue fill:#3d86c6,stroke:#3d86c6
classDef green fill:#6aa84f,stroke:#6aa84f
classDef transparent fill:transparent,stroke:transparent
class IDE blue
class Custom,Label transparent
style Core color:#ccc,fill:#073763,stroke:#073763
class Extension,LSP,Analyzer green
1. 🔬 Semantic Analyzer
A modular domain-specific semantic analysis library for ink! built on a resilient and lossless parser. It's responsible for parsing the smart contract code, analyzing it based on ink!'s semantic rules for smart contracts and returning semantic information for other components to consume.
2. 🗣 Language Server
A Language Server Protocol (LSP) implementation built on top of the semantic analyzer. It acts as a backend that provides language support features to IDEs, code editors and other development tools. It can be reused by multiple IDEs, code editors and other development tools that support LSP servers including Visual Studio Code, Visual Studio, Vim / Neovim, Emacs, Atom, Sublime Text, Acme, Lapce, Eclipse and many more.
Extensions/plugins/integrations add ink! language support to IDEs, code editors and other development tools. They communicate with the language server running as a separate process using the Language Server Protocol via JSON-RPC.
Planned extensions/plugins/integrations:
- Visual Studio Code Extension (Install from Marketplace)
- IntelliJ Plugin (Q1/2026)
🎨 Illustration by: Dima Moiseenko
🌱 Funded by: the Web3 Foundation and Polkadot Treasury.