Requirements
On this page
Each IDE extension of SonarLint has its own requirements to work properly with the most recent releases.
Overview
SonarLint for Visual Studio is available for Visual Studio version 2022. You can install and run SonarLint in Visual Studio 2019 and 2017, but those versions are no longer supported.
The only thing you need to install is the SonarLint VSIX available on the Visual Studio Marketplace. Please see the Installation page for complete install instructions.
SonarLint needs a Java Runtime (JRE) to operate. To specify a JRE, go to Extensions > SonarLint > Options… > SonarLint > General > Java Home, add the path to your JRE, and restart your IDE to apply the setting.
- Your JRE should be version 17+
- If no path is provided or your path is invalid, SonarLint will use its own JRE.
In versions prior to v4.34, additional steps were required for some languages. See below for more detail.
Supported IDEs
See the SonarSource website for information about the currently supported IDEs, and also for details about which languages are supported in which IDEs.
Unsupported IDEs
SonarLint is not currently available for Visual Studio for Mac
. However, it is still possible to use the Sonar C# and VB.NET analyzers in that IDE with a little manual configuration.
Support for analyzing C# and VB.NET in other IDEs
Visual Studio for Mac
supports the running of Roslyn analyzers that are shipped as NuGet packages. This includes Sonar C# and VB.NET rules.
The NuGet package id for the Sonar C# rules is SonarAnalyzer.CSharp. The NuGet package id for the Sonar VB.NET rules is SonarAnalyzer.VisualBasic
See below for information on setting up analysis in specific IDEs.
Visual Studio for Mac
To configure a project to use the Sonar C# analyser, edit the project file to include the following XML:
Use SonarAnalyzer.VisualBasic
instead of SonarAnalyzer.CSharp
to configure the Sonar VB.NET analyzer.
Note that instead of editing every project file, you can create a single Directory.Build.props file at the solution level or repo level that will apply to all projects in the solution/repo.
It is possible to add references to NuGet packages through the UI but that will not add the necessary Analzyer
entries in the project file; you must still add them manually by directly editing the project file. See this StackOverflow post for more information.
Language-specific requirements
JavaScript and TypeScript analysis
NodeJS prerequisites for JS and TS
Sonar’s JavaScript and TypeScript analyzers require specific Node.js versions to be installed on the machine. If no compatible version is found, the analysis will not be performed. See the table below for the minimal required Node.js version per SonarLint version:
SonarLint for Visual Studio | Minimal required Node.js version |
v7.8 | Node.js v18.17.1 and higher |
v7.6 | Node.js v16 and higher |
v6.9 | Node.js v14.17 and higher |
v6.8 | Node.js v12.22 and higher |
v6.7 and earlier | Node.js v10 and higher, excluding Node.js v11 |
Auto-detection of compatible Node.js versions
SonarLint for Visual will attempt to locate a compatible Node.js version on the machine by searching on the %PATH%. If SonarLint cannot find a compatible Node.js version, it will show a notification in a gold bar like the following:
The Output Window will contain additional information about the Node.js versions that were located:
Manually specifying a custom location of Node.js installation
You can also set the environment variable SONAR_NODEJS_PATH
to specify a custom location. The value should be the full file path to the node executable e.g. c:\custom\node.exe
. The environment variable takes precedence over the automatic detection. You will need to restart Visual Studio after setting or changing the environment variable.
Installing Node.js
If the machine does not have a compatible version of Node.js, you can manually install one. Node.js versions can be downloaded from the official website nodejs.org. Both the 32-bit and 64-bit versions are supported. The simplest installation method on Windows is to use the appropriate .msi
.
Deprecation of older Node.js versions
From time to time the Sonar JavaScript/TypeScript analyzer will increase the minimum required Node.js version as older versions go out of support. The dropping of support will be announced in advance in the Community Forum (e.g. this post regarding the deprecation of Node.js v12 and dropping of support for Node.js vs10).
This page will be updated as the minimum required Node.js version changes.
Analyzing CMake projects
This article is an overview of how to get started with analyzing CMake projects in Visual Studio 2017.3 and later versions, along with information about known issues. This feature is available starting with SonarLint for Visual Studio version 4.38.
If you need more help, please start a post on the SonarLint Community - Visual Studio channel in the Sonar Community forum.
Getting started - VS2019 and later
1) Open / create a new CMake project in Visual Studio
2) Add the command set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
to the top-level CMakeLists.txt
file:
3) Save the file.
4) Check that VS has generated the compilation database.
Source and header files will now be analyzed on opening/saving. The SonarLint Output Window will contain more information about the progress of the analysis.
If you are creating a new CMake project in VS2019 there appears to be an intermittent issue with VS not recognizing the project as a CMake project until the folder is closed and re-opened. See ticket #2656 for more information.
Getting started - VS2017.3
Follow the same getting started steps as for VS2019 and later above. In addition, to successfully analyze C or C++ files in VS2017 your project will need to use a non-default CMakeSettings.json file. This is because the default CMakeSettings.json file uses the workspaceHash
or projectHash
macros, which are not supported by SonarLint in VS2017.
1) If you do not already have a CMakeSettings.json file, Visual Studio will create one when you select the Manage Configurations... option and choose a compilation target:
Visual Studio will then create a default CMakeSettings.json file:
2) Edit the CMakeSettings.json file to change the buildRoot
property to one that does not use either workspaceHash
or projectHash
.
Note: the defaults used by Visual Studio for buildRoot
and installRoot
in VS2019 have changed to:
Using those values in VS2017 will allow SonarLint to correctly analyze files in the CMake project.
CMake - known limitations
VS2017: workspaceHash and projectHash macros are not supported in VS2017
VS2017 used a different hashing algorithm from VS2019, which is not supported. See issue #2632.
This means that SonarLint will not be able to analyse files if the buildRoot
property uses either of these macros.
Environment variable overrides in CMakeSettings.json are not supported
SonarLint will not process environment variable overrides in CMakeSettings.json files.
The SonarLint analysis results may be incorrect if the overridden environment variables affect the CMake compilation e.g. changing the paths that are searched for header files.
CMake presets are not currently supported by SonarLint
See the Microsoft documentation for more information about support for CMake presets in Visual Studio.
Only the Ninja generator is supported
SonarLint uses the generated compilation database (compile_commands.json
) to fetch the compiler options to use during analysis. The Ninja
generator creates a compilation - the other VS generators do not. Visual Studio introduce support for the Ninja
generator in VS2017 Update 3 (v15.3). Newer versions of VS use the Ninja
generator by default. You can also configure VS to use the Ninja
generator by providing an appropriate CMakeSettings.json
file e.g.
Was this page helpful?