node is not available, you have to set property
sonar.nodejs.executable to an absolute path to
Supported Frameworks and Versions
- ECMAScript 5 / ECMAScript 2015 (ECMAScript 6) / ECMAScript 2016-2017-2018
- TypeScript 4
- React JSX
Slow or unresponsive analysis
On a big project, more memory may need to be allocated to analyze the project. This would be manifested by analysis getting stuck and the following stacktrace might appear in the logs
ERROR: Failed to get response while analyzing [file].ts java.io.InterruptedIOException: timeout
You can use
8192 for big projects. This property should be set in
sonar-project.properties file or on command line for scanner (with
By default, analysis will exclude files from dependencies in usual directories, such as
external. It will also ignore
.d.ts files. If for some reason analysis of files in these directories
is desired, it can be configured by setting
files also for other languages, similar to
sonar.exclusions property, however
sonar.exclusions property should be
preferred to configure general exclusions for the project.
This feature is deprecated
As soon as the coding rule visits a node, it can navigate the tree around the node and log issues if necessary.
Create SonarQube Plugin
- Create a standard SonarQube plugin project
Add the following line in the sonar-packaging-maven-plugin configuration.
Implement the following extension points:
RulesDefinitionas an extension in the
You can implement both
CustomRulesRepository in a single class.
Implement a Rule
Create a class that will hold the implementation of the rule. It should:
- Define the rule name, key, tags, etc. with Java annotations.
- Declare this class in the
DoubleDispatchVisitor which provide a set of methods to visit specific tree nodes (these methods' names start with
visit). To explore a part of the AST, override the required method(s). For example, if you want to explore
if statement nodes, override the
DoubleDispatchVisitor#visitIfStatement method that will be called each time an
IfStatementTree node is encountered in the AST.
When overriding a visit method, you must call the
super method in order to allow the visitor to visit the rest of the tree.
SubscriptionVisitor. To explore a part of the AST, override
SubscribtionVisitor#nodesToVisit() by returning the list of the
Tree#Kind of node you want to visit. For example, if you want to explore
if statement nodes the method will return a list containing the element
Use these methods to log an issue:
PreciseIssue. In the SonarQube UI this issue will highlight all code corresponding to the tree passed as the first parameter. To add cost (effort to fix) or secondary locations provide these values to your just-created instance of
Issue. Use this method to create non-standard issues (e.g. for a file-level issue instantiate
Check context is provided by
SubscriptionVisitorCheck by calling the
To test the rule you can use
- Feature and API are deprecated.
- Test Coverage & Execution (LCOV format)
- Importing External Issues (ESLint, TSLint)
- SonarJS Plugin for ESLint
- Adding Coding Rules
Check the issue tracker for this language.