What's Coming Up for SonarQube in 2014 ?

by freddy mallet|

    I recently wrote a post listing what was accomplished in the SonarQube platform last year. Today, I'll continue with even more exciting stuff: what we'll do this year! I'll share: what the main innovations will be, how the ecosystem will evolve, and what technical challenges we'll face.

    I'll start with the highest voted request in the SonarQube Jira, which is only six months younger than SonarSource itself:

    Support of multi-languages projects

    Doing a source code analysis should be as simple as feeding SonarQube with some source directories and waiting for the result, regardless of the languages used in the project (for instance: PHP, JavaScript, CSS and HTML). We have this simplicity in mind as a target -> no more need to execute a SonarQube analysis for each language.


    We have a number of features in mind when we talk about the Cartography domain, but in 2014 the first two features we provide will be:

    • Cross-Source navigation: the ability to click on any type, method call, variable, ... to quickly switch to its definition
    • References: the ability to track all uses of a type, method class, variable, ... in the overall project portfolio

    With those two features in place, we really hope to make code navigation as fluent as in any IDE, making SonarQube one of the best places to browse the source code. An extra effort will be required on each language plugin to feed the SonarQube platform with the necessary dependency information, and we'll initiate the effort with the Java and COBOL plugins.

    Tags everywhere

    With the integration of ElasticSearch, which started in SonarQube 4.1, the goal is to make it possible to tag rules and issues to cover two distinct and valuable use cases:

    • Rule tagging will make it possible for any user to efficiently navigate through the list of available rules to find rules relating to security, complexity, documentation, unit tests, ... making it much easier to determine which rules would make sense in a particular context.
    • Issue tagging will make it possible to efficiently classify and retrieve technical debt instead of having to use action plans, which aren't suitable for this kind of task.

    Java 8

    Java SE 8 is expected to be released in March, so the goal is to make the SonarQube Java Ecosystem support this new version and all related new language features as soon as possible. We'll also work to provide some new quality rules relating to use of lambdas.

    Full rewrite of the ABAP and PHP plugins

    In 2013, we started an effort with the Java and JavaScript plugins to gradually remove dependencies on third party tools from all language plugins. We posted several blog entries on this subject to explain our main motivations in the context of JavaScript and Java. In 2014, we'll keep working toward this goal by fully rewriting the ABAP and PHP plugins so that they're based only on SSLR technology.

    C/C++ Front-End

    In 2013, we invested a lot of energy in the our C/C++ parser to make it support all C/C++ language ambiguities by using a cutting-edge GLL parsing approach. In 2014, we have two main goals for the C/C++ plugin: greatly increase the number of rules available out of the box, and make the configuration of C/C++ analysis as simple as possible. We'll do that by automatically extracting configuration information from the Visual C++ solution when there is one. When there's not, we'll hook a proxy into the compile process to "eavesdrop" on the preprocessor and get all the details needed to build - and analyze - a project, such as macro definitions, the order to import header files in, and so on.


    This legacy IBM language will join the list of languages supported by the SonarQube ecosystem.

    See you in 1 year for the "Looking Back at 2014 Sonar Platform Accomplishments"!