Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>q-lintNew to Visual Studio Code? Get it now.
q-lint

q-lint

wojdalski

|
4 installs
| (0) | Free
Diagnostics for q/kdb+ source, from the q-lint language server
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

q-lint for VS Code

Diagnostics for q/kdb+ source, as you type, from the q-lint language server.

the q-lint icon

The linter never executes the source it reads. That is what makes it safe to run on every keystroke, and it is why this extension offers diagnostics and nothing else: completion, hover and go-to-definition would need a resolver and a symbol table, and building one means giving up the guarantee.

Requirements

None, on a platform this extension is built for. macOS (Apple Silicon and Intel), Linux x64 and Windows x64 builds carry the matching qlinter and run with nothing installed and nothing configured.

Anywhere else, the extension needs the server: take an archive from releases, or build one with cargo install --path . from a clone. Put it on PATH, or point q-lint.serverPath at it.

Setting q-lint.serverPath always wins, bundled server or not - which is how to run a build of your own against the extension.

server/qlinter is checked in so that packaging the extension from a clone produces a working vsix without a release build first. It is darwin-arm64 only - the one this repository's author builds - and is rebuilt by hand, so it can lag src/. The release workflow ignores it and packages the binary it just built for each platform. To refresh it:

cargo build --release && install -m 755 target/release/qlinter editors/vscode/server/qlinter

Worth knowing on macOS: an application started from the Dock does not inherit the PATH from your shell profile, so a binary in ~/.local/bin is invisible to it even though the same command works in a terminal. The bundled server sidesteps this; q-lint.serverPath with an absolute path is the fix if you are using your own.

When a finding looks wrong

Open Output → q-lint. The first line names the server version and the binary it came from, which is usually the answer: the rules live in the binary, not the extension, so a replaced binary does not take effect until the server restarts. q-lint: Restart Server in the command palette does that without reloading the window.

Settings

setting default
q-lint.serverPath qlinter Path to the binary; looked up on PATH as given.
q-lint.profile general Rule profile. uqf adds that repository's own conventions on top of the general q rules.
q-lint.trace.server off Log the traffic between VS Code and the server, for debugging the integration itself.

The rules

qlinter --rules prints the catalogue and qlinter --explain <CODE> prints one entry. Both read from the linter's own taxonomy, so they are current in a way this page would not be.

Troubleshooting

Diagnostics not appearing? Open Output → q-lint. The server's own stderr is forwarded there, so a binary that is missing or refusing its arguments says so in that panel.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft