Setup
git clone https://github.com/KxSystems/kx-vscode.git
npm install
Recommended Extensions
Scripts
Run these with npm run scriptName
| Script | Description |
|---|---|
update-deps |
Update dependencies to latest patch version |
format |
Format all ts files |
lint |
Lint all ts files |
package |
Produce vsix |
test |
Perform Unit Tests |
coverage |
Produce coverage reports |
ui-test |
Perform UI Tests |
q-test |
Perform q Tests |
Configuring SonarQube
Once you’ve installed the SonarQube Extension, add the KX SonarQube server https://sonarqube.dl.kx.com, and it will lint as you type, so you don’t need to wait for the github pipeline to discover issues.
Ctrl + Shift + P -> “SonarQube: Analyze Current File with SonarQube” will give you a a detailed summary of any issues in a file.
SonarQube results can be viewed at https://sonarqube.dl.kx.com/dashboard?branch=dev&id=kxvscode
Debugging
Pressing F5 with a file in the extension open will launch a VSCode instance running the extension built from source, with the debugger open in the original VSCode instance.
Extension Unit Tests can be debugged by selecting Extension Tests target from run and debug tab.
Extension UI Tests can be debugged by selecting Extension UI Tests target from run and debug tab. UI Tests use Page Object APIs.
Testing will stop at any breakpoint set in test or source file.

Single test file can also be debugged by clicking run button from the editor toolbar:

q Testing
To run the tests locally, you need to
- Install Python version 3.12 installed, as the tests rely on an old version of pykx that doesn’t support the latest Python
~/kx-vscode $ brew install python@3.12 ~/kx-vscode $ python3.12 -m venv venv ~/kx-vscode $ source venv/bin/activate - Install pykx by running the following. If you aren’t running the right Python version, PyKX 2.5 won’t be available. More detailed instructions are available here
~/kx-vscode $ zsh ./test/q/preTest.sh - kdb+ installed, with the
qexecutable in the system path - AxLibraries should be installed, according to its readme.
You can then run the tests with npm run q-test.
To debug the tests, create a file with a username and password to secure the q process, then start a q process using that authentication.
$ echo "myusername:mypassword" >> users.txt
$ q -u users.txt -p 1234
KDB-X 5.0 2026.01.22 Copyright (C) 1993-2026 Kx Systems
l64/ 16()core 15644MB myusername hostname 127.0.1.1 EXPIRE 2027.01.13 email@example.com
q)\l qcumber.q
q)\l test/q/main.q
You can now connect to the process on port 1234 and step through the tests
Restart Extension Host
ctrl/⌘+r will restart extension host.
Dependencies
List outdated dependencies:
npm exec ncu
Releasing a new version
Let the doc writer, or the #docs channel if they’re unavailable, know that a release is about to go out so they can publish the docs concurrently.
Check out the branch to release, update the version number in package.json, then run
git tag v1.2.3
git push origin v1.2.3
Then, in the Actions tab, open the pipeline that was just created, and give manual approval once the action reaches that point. It can take 10 minutes for the version number to be updated in the extension marketplace, even after it updates the timestamp to reflect the new release.
Announce the release in #kx-product-releases, using the template
:rocket: VSCode Extension x.y.z has been released
https://github.com/KxSystems/kx-vscode/releases/tag/vX.Y.Z
https://marketplace.visualstudio.com/items?itemName=KX.kdb
vX.Y.Z
Release date: [Today's Date]
[The change log, which can be found by clicking the release [here](https://github.com/KxSystems/kx-vscode/tags)]