Visual Studio Code Development

Visual Studio Code is a great and simple IDE that can be used to build & develop with for Matter.

Matter supports the docker / remote container workflow in Visual Studio Code, and has a container environment setup automatically. You can read more about this workflow here.

Tested on:

  • macOS 10.5
  • Windows 10 Pro + WSL + Ubuntu 18 LTS

Setup Steps

  1. Windows Only Enable the Windows Subsystem for Linux (WSL) following instructions here: https://docs.microsoft.com/en-us/windows/wsl/install-win10
  2. Windows Only Install Ubuntu from the Windows App Store here: https://www.microsoft.com/en-us/p/ubuntu-1804-lts/9n9tngvndl3q
  3. Install Docker for your operating system of choice from here: https://docs.docker.com/install
  4. Install Visual Studio Code for your operating system of choice here: https://code.visualstudio.com/Download
  5. Install Git if you haven't already
  6. Windows Only Enable git to use LF instead of CLRF by default: git config --global core.autocrlf false
  7. Git clone the main Matter repository here: https://github.com/project-chip/connectedhomeip
  8. Launch Visual Studio Code, and open the cloned folder from
  9. Install the Remote - Containers extension for Visual Studio Code, this extension allows you to use docker containers as a development backend.
  10. Once this is installed, you'll be prompted to reload Visual Studio Code, do so
  11. At the bottom right of your Visual Studio Code window you should have a new box prompting you to re-open the window as a container. Hit yes.
  12. Windows Only Update your Visual Studio Code settings as documented here: https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration to use Bash on Ubuntu (on Windows) eg: "terminal.integrated.shell.windows": "C:\\Windows\\System32\\bash.exe"
  13. Now your local machine is building a docker image that has all the tools necessary to build and test Matter. This can take some time, but will eventually complete and open up the source tree

Bootstrapping your source tree (one time)

  1. Under the “Terminal” menu (or using another shortcut to the same tool), select “Run Task...”
  2. Select the “Bootstrap” task

Building the Source Tree

  1. Under the “Terminal” menu select “Run Build Task...”

Tasks

Located in the tasks json file you'll find a list of tasks that can be run from the “Run Task...” command. Example tasks are “Clean”, “Run Pretty Check”

Developers are encouraged to add tasks to the tasks json over time to make sure everyone is using the same base configuration and build.

Current base tasks are listed here

  • Main Build - Build the default configuration (i.e., Linux OpenSSL)
  • Run Unit and Functional Tests - Test the default configuration
  • Build & Test (all) - Build & Test various configurations (Linux variants, Android, EFR32)
  • Update compilation database - Update the database used by IntelliSense (needed for cross references, completion)
  • Bootstrap - On a clean tree, pull in the third party dependencies required
  • Clean Output - Remove build artifacts
  • Clean Tree - Full (and destructive) git clean of the tree

Launch Tasks

Located in the launch json file you'll find a list of build & run jobs that can be run from the “Run” tab and start a run or debug session.

Developers are encouraged to add tasks to the launch json over time to make sure everyone is using the same base debugging setup.

Submitting a Pull Request - Practical Advice

Before submitting a PR, make sure these commands run and succeed

  • Run task: “Build & Test (all)”

Common Issues

Visual Studio Code FAQ

Visual Studio Code Recommended Settings

  • Configure the editor to format on save, in your Visual Studio Code Settings: "editor.formatOnSave": true
  • Configure the clang-format extension @ext:xaver.clang-format, it is installed in the docker container. Make sure all languages are enabled