The beginning of a new year always provides a good opportunity to look back at what was achieved the previous year and this is what I am going to do today for the Sonar platform.
Let’s start with a short version of this retrospective. Last year was made of:
- 8 releases of Sonar
- 110+ releases in the ecosystem
- 55,000 downloads of Sonar
- 10,000+ messages on mailing lists
So I suppose we can call this a pretty active year for the community. Now, the longer version:
One year ago, we had the following ambitions :
Track changes : The next step is to provide the ability to report on code coverage of new source code. This is to ensure that whatever legacy code is there, teams have the ability to monitor the coverage by unit tests on added code if they wish.
Since Sonar 2.7 and with help of the SCM Activity plugin, this magic feature is available.
Code Review : This is really the next strategic move for the Sonar platform : add a manual dimension to the automated one to provide a complete code review tool.
This was a major change to accomodate into the platform and we therefore decided to adopt a baby step approach. The full functionality was delivered over 5 releases, from 2.8 to 2.12. Here is what the platform now covers:
- Review a violation
- Comment, assign, plan a review
- Flag false-positive violations through the UI
- Create manual violations through the UI
- Change the severity of a violation through the UI
Next step will be to provide the ability to customize the review workflow and its related permissions.
Language consolidation : Provide a Squid-like engine to the C# plugin to make it more robust
It took us 6 month with the great help of Alexandre Victoor to rewrite the C# plugin that embeds its own C# parser and natively supports visual studio projects.
Language consolidation : Improve the C parser to gain robustness, support non ANSI-85 extensions and increase significantly the number of rules available
We haven’t worked as much as we wanted on this C plugin and so the number of rules remains limited. That’s why we’ve already started working to implement the MISRA-C standard.
Language consolidation : Improve the PL/SQL plugin to provide currently missing metrics
A PL/SQL parser has been written to provide all those metrics and to start implementing some new rules outside the Toad CodeXpert tool.
Sonar Eclipse : Now that we have a stable version 1.0 of the plugin, we can start building on it. The objective for this year is to provide capability for running local analysis inside Eclipse
This local mode is now available but in fact the greatest new feature of Sonar Eclipse is certainly the integration of Mylyn to manage reviews directly from the IDE.
Support New Bootstrappers : We have started last year some background work to decouple Sonar from Maven. This work will enable us to support 2 new mechanisms for bootstrapping analysis in Sonar 2.6 : an ANT task and a Java runner. Next step is to also provide Gradle bootstrapper.
DONE, DONE, DONE, Sonar is now fully decoupled from Maven but if you want to use the power of Maven along with Sonar, it is of course still possible.
JaCoCo Integration : We intend to make 2 major integrations of JaCoCo into Sonar this year. The first one is to integrate it into Sonar core. The second one is to provide ANT integration of JaCoCo and therefore provide a simple way of gathering code coverage when you execute unit tests from ANT.
DONE & DONE.
Beyond the Plan
Obviously, we did not plan for all upcoming innovations for the year. Here are three major features of Sonar that weren’t planned and that have been implemented:
- Sonar CPD : this new technology introduced in Sonar 2.10 will fully replace PMD CPD in Sonar 2.14 and allows to track cross-projects duplications
- i18n : Since Sonar 2.10 the Sonar UI can be in spanish, french, greek…
- Email notifications : Since Sonar 2.10 a user can subscribe to some events to be notified by email. For instance when a review is assigned to him.
And this is also true in the ecosystem, here are two examples:
- a great effort made on the PHP plugin to resurrect it
- development of an extension for SAP ABAP
So after all this, what could be an exciting challenge for 2012 ? This is going to be the subject of my next post !
After an initial attempt that ended up posting on what was accomplished last year, time has now come to discuss the plans for Sonar in 2011 and the associated roadmap !
In 2010, Sonar has progressively become a “must have in software factories” as are already Jenkins, Jira, Nexus or Subversion for instance. With Sonar, a quality platform can now be considered as a commodity which can be installed and used by everybody with only little investment whether it is time or money. We will still focus our effort in 2011 to increase the value of the platform and make teams capable of continuously assessing and reimbursing their technical debt even easily than today.
Read the rest of this page »
My initial intention was to write a post on the plans for Sonar in 2011 and the associated roadmap. I started by quickly listing what was achieved in 2010. But after thinking about it, I realized that so much happened last year that it was worth to dedicate it an entire post !
Read the rest of this page »
At the beginning of this year, Freddy mentioned in the Sonar roadmap for 2010 that after version 2.0 the main objective was to enable other languages on the Sonar platform through plugins. Nine months later, we have made very good progress on this subject and I wanted to take a chance to report on it.
Read the rest of this page »
Earlier on this year, we mentioned in the Sonar roadmap for 2010 that after version 2.0 the main objective was to enable other languages on the platform through plugins. This development is on its way and the first plugin to come out is an Open Source plugin to analyze Flex / ActionScript projects that was released last week.
The version 0.1 of the plugin already enables to get base metrics such as Lines, Comments, Classes, Complexity and Statements with help of FlexMetrics. It also embeds FlexPMD (the equivalent of PMD for ActionScript) to provide an extensible and powerful coding rule engine. Finally it enables to report on duplicated code by using FlexCPD. As usual, all those tools are transparently orchestrated by Sonar to ease the installation and the use of the plugin.
As you can see, the release of this Sonar plugin for Flex projects was not possible without Adobe guys, thanks to François and Xavier, that have developed and keep improving the tools to analyze the code. The next steps for the plugin might consist of integrating FlexUnit for unit tests.
You might want to download the plugin straight away to give it a try, but you can also see it in action on Nemo.
Here are the next milestones in the roadmap of multi-languages :
- a SonarSource commercial Cobol Plugin planned for the end of April, but that can already be evaluated in beta
- SQLI, a French consulting company, is currently making a great contribution to deliver an open source plugin to analyze PHP projects
- A plugin to cover VisualBasic 6
A change of year always gives to teams an opportunity to look back and measure what was accomplished… and then to start thinking of what the new year should be made of. I thought I’d share the output of the Sonar team retrospective.
At the end of 2008, very few people knew Sonar. The platform was made of a small community of early and eager adopters who were supporting the product strongly by giving feedback, asking for more functionality, making suggestions and testing new versions. It was also made of Sonar 1.5 that, looking back, was the foundation version of the platform. From this version, here is what was achieved in a year :
- A dynamic development activity on Sonar core with 7 major releases since 1.5.
- The transformation of Sonar from a tool to an extensible platform with more than 20 extension points.
- More than 30 open source plugins have been build to extend Sonar core using those APIs, and more that are not open source.
- the number monthly downloads has been multiplied by 10 during the year from 300 to 3,000.
- Sonar has been given a heart called Squid that makes Sonar much more than an integration tool. Several metrics that do not exist elsewhere are calculated by Squid.
- More than 4’000 emails exchanged on mailing lists and 1,000 Jira issues created.
So after all this, what could be an exciting challenge for 2010 ? We have set ourselves 2 very ambitious objectives for 2010 which should make the Sonar community continue growing :
- Design analysis : we like to say that there are seven technical axes of code quality analysis (we call them the seven sins of the developer). Sonar currently covers sixth of them and the last one is for us the most important one with unit tests : Design & Architecture. Sonar 2.0 planned for February will start covering the 7th axis with O.O. metrics like LCOM4, RFC, DIT … cycles detection and DSM at package and class levels. All those information will be of course provided by Squid. Moreover, an architecture rule engine should quickly appear after Sonar 2.0.
- Multi-languages : last but not least, give a real go at other languages. By the end of the year, we expect that plugins are available to cover properly : Java, PL/SQL, Flex, C/C++, Cobol, PHP and maybe more :-)
Here is a part of the program for 2010. I have now to leave you to start working on this as I think I will not have much spare time this year !