New LTS Version Sums Impressive Array of New Features

by g. ann campbell|

    In November, SonarQube version 4.5.1 was announced as the new Long Term Support (LTS) release of the platform. It's been nearly a year since the last LTS version was announced - a very busy, feature-packed year. Let’s take a look at the results.



    Technical Debt moves into the core


    If you’re upgrading directly from 3.7.4, the previous LTS, the change with the biggest impact is the addition of built-in support for Technical Debt calculation. The SonarQube platform is all about identifying and displaying technical debt, but previously there was no built-in way to calculate the cumulative amount.

    Over the course of the last year, we’ve fixed that by moving the bulk of our SQALE implementation from the commercial SQALE plugin into the core platform. (Shameless plug: there's still plenty of value left in the plugin.) Now you can see your technical debt in time (minutes, hours or days) without spending a penny. It'll show up automatically in the re-vamped Issues and Technical Debt widget:



    You can also see the technical debt ratio (time to fix the app versus an estimate of the time spent writing the current code base) and the SQALE rating. They show up in the Technical Debt Synopsis widget:



    For more on Technical Debt, check out the docs.

    Multi-language analysis debuts


    This year also saw the fulfillment our most-requested feature ever: the ability to analyze a project for multiple languages. Now you can analyze all the Java, JavaScript, HTML, &etc. in your project with a single analysis, and see the consolidated results in SonarQube.



    Note that if you previously relied on SonarQube's default language setting (typically "Java") rather than specifying sonar.language in the analysis properties, your first analysis after jumping to the new LTS will pick up more files than previously. Under multi-language, every language plugin that sees some of "its" files in your project will kick in automatically.

    Rule management and Quality Gates emerge from the shadow of Profiles


    Another paradigm shift this year, was the removal from Quality Profiles of Rule management and Quality Gates (previously known as Alerts). Now Quality Profiles are simply collections of rules, and Quality Gates and Rule management stand on their own.

    Previously, if you wanted to apply the same standards to all projects across all languages, you had to set those standards up as Alerts in each and every single profile. I.E. you had to duplicate them. With the introduction of Quality Gates, those standards gain first-class citizenship and become applicable as a set across all projects.



    Similarly, if you wanted to browse rules before, you could only do it in the context of a Quality Profile, and interacting with rules across multiple profiles was cumbersome at best. With the introduction of the Rules space, you can browse rules outside the context of a profile, and easily 1) see when a rule is active in multiple profiles, 2) activate or deactivate it in any profile in the instance. There are also impressive new search capabilities and a bevy of smaller, but nonetheless valuable, new features.



    UI gains consistency


    Several pages throughout the interface have been reworked to improve consistency and add functionality. The new Rules and Quality Gate spaces were implemented with an updated UI design, so the Measures and Issues pages have been updated as well to keep pace.

    In addition, the component viewer has been completely re-imagined. Now it's possible, for instance, to see the duplicated blocks and the issues in a file at the same time.



    Widgets are added, updated


    Several new widgets have been added for displaying Measure filters since the last LTS: donut chart (a pie with a hole in the middle ;-), bubble chart, and histogram. Word cloud has moved from a separate page to a reusable widget. And TreeMap has been completely rewritten to improve responsiveness and functionality.



    Interactions outside the interface improve


    The final two changes to mention are a little less showy, but no less important.

    First, an incremental analysis mode has been added. It allows you to run a local analysis (the SonarQube database is not updated) on only the files that have changed locally since the last full analysis. With the two IDE plugins and the ability to run incremental analysis manually, there are three options for pre-commit analysis.

    The last major change is the addition of built-in web service documentation. You'll find the link in the SonarQube footer.



    It leads to a listing of every web service available on the instance, with documentation for the methods, and in some cases a sample response. Never again will you wonder if you're looking at the right version of the docs!



    Coming up


    It always seems a long time to me from release to release, but looking back, it has been an amazingly short time to have packed in so much new functionality. If you're upgrading from the previous LTS, it's definitely worth taking a look at the migration guide.

    Coming up next, I'll talk about SonarSource's LTS philosophy - why we do it and what it means - and in another post I'll talk about all the features planned for the next LTS.