Add flake8 linter to VS Code¶
This tutorial will teach you how to add the flake8 style checks used in the pipeline, to your Visual Studio Code editor.
Introduction¶
The MARCH Gitlab is configured with the so called pipeline. This pipeline performs several checks one the code we commit. One of these checks is on code style, see Style Guide. To avoid styling errors in Python, it is possible to add the flake8 linter with the checks used by the pipeline to your VS Code editor.
Installation¶
VS Code already contains a flake8 linter by default. However, this is only the basic flake8 linter, while there are many flake8 extensions added to perform additional code styling checks. These extensions are simply python packages, which can be installed using pip. However, since the list of extensions we would like to use can differ over time (or per project), we highly recommend to install the extensions in a virtual environment, to keep your main python environment unchanged.
Creating a virtual environment¶
To create a virtual environment, we need to install the required python package first using:
python3 -m pip install virtualenv
Next we can create a virtual environment. While being in the march workspace (~/march by default), open a terminal and run:
python3 -m venv .march_venv --system-site-packages
This will create a directory called .march_venv containing the virtual python environment. The --system-site-packages
argument gives the virtual environment access to the python packages already installed in your main python environment. This is necessary to use the ROS python packages we installed during the ROS installation.
Finally we can go into the virtual environment using:
source .march_venv/bin/activate
If everything went well, you see that (.march_venv) is now shown in front of your bash prompt (the text shown in a terminal before the $-sign). Seeing this means that you are in the virtual python environment.
Install flake8 and extensions¶
While being in the virtual environment, we can install all the flake8 packages used by the pipeline. All the packages are specified in march/requirements_flake8.txt. Therefore we can simply do:
python3 -m pip install -I -r requirements_flake8.txt
Note that we add the -I argument to ignore already installed packages. This ensures that flake8 will be installed in the virtual environment, even if you already installed it in your main environment.
Configure VS code¶
Now that flake8 is installed, we need to configure VS Code to use it. To do this, open VS Code and go to settings (Ctrl+,).
Search for
python.linting.enabled
and enable python linting.Search for
python.linting.flake8Enabled
and enable linting with flake8.Search for
python.linting.flake8Path
and set this to the flake8 installation directory of the virtual environment (~/march/.march_venv/bin/flake8
by default)Search for
python.formatting.provider
and set this to black to use black formatting (like we do in the pipeline).
Usage¶
Now that flake8 is installed and VS Code is configured, we can use the linter. If you open VS Code in the march project folder, the linter will automatically recognize the .flake8 file in the main directory of march, which contains a list of files and checks to ignore. The linter will check code in a python file you work on when you save. If there are styling problems, they will be mentioned in the problems tab (Ctrl+Shift+M).
If you see errors about black, it usually means that the current format does not meet the style requirements (for example problems with line length or white lines). To fix this, you can format your code automatically (Ctrl+Shift+I).
To easily go into the virtual environment the next time, you could add an alias to your bashrc file, for example alias svenv='source ~/march/.march_venv/bin/activate'