Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 78 Next »

There are two ways to extend coding rules:

  1. Adding XPath rules directly through the SonarQube web interface.
  2. Extending an existing SonarQube plugin. For example Checkstyle and PMD plugins accept definitions of custom checks.
Icon

Before implementing a new coding rule, you should consider whether it is specific to your own context or might benefit others. If it might benefit others, you can propose them on the developer mailing-list. If the SonarQube team find your proposed rules interesting, they may be implemented directly in the related language plugin. It means less maintenance for you, and benefit to others.

Adding New Rules Using XPath Expressions

SonarQube provides a quick and easy way to add new coding rules directly via the web interface for certain languages (C/C++, C#, Cobol, Flex, Java, JavaScript, PL/I, PL/SQL, Python and VB.NET).

The rules must be written in XPath to navigate the language's Abstract Syntax Tree (AST). For each language, an SSLR Toolkit is provided to help you navigate the AST. Each language's SSLR Toolkit is a standalone application that displays the AST for a piece of code source that you feed into it, allowing you to read the node names and attributes from your code sample and write your XPath expression. The proper SSLR Toolkit can be downloaded from the language plugin page. So, knowing the XPath language is the only prerequisite, and there are a lot of tutorials on XPath online (see http://www.w3schools.com/xpath/ for example).

 

For an SSLR preview, consider the following JavaScript source code sample:

HelloWorld.js

While parsing source code, SonarQube builds an Abstract Syntax Tree (AST) for it, and the SSLR Toolkit provided for each language will show you SonarQube's AST for a given piece of code. Here's the AST for our JavaScript sample:

The XPath language provides a way to write coding rules by navigating this AST, and the SSLR Toolkit for the language will give you the ability to test your new rules against your sample code.

Once your new rule is written, you can add it SonarQube:

  1. Login as an administrator
  2. Go to Configuration > Quality Profile
  3. Select one of the quality profiles for the language you wish to add the rule to
  4. Look for the XPath rule template:
  5. Copy the template to create a new rule:
  6. Paste in the XPath rule (it should comply to XPath 1.0) you wrote and tested using the SSLR toolkit:


    Here are two examples of JavaScript XPath rules:

    Do not use document.write


    Always use curly braces for if/else statements:

  7. Once your rule is added to SonarQube, activate it in a profile and run an analysis.
     
  8. Issues on those XPath rules are now logged:

Extending SonarQube Plugins

The following languages can be extended with new rules:

  • No labels