My proposal for Google Summer of Code 2010


Accepted students for Google Summer of Code 2010 have been announced today. And today I’ve received email from GSoC Team:

Dear Evgeny,
Congratulations! Your proposal “Integration of Sonar in IDE to enable instant feedback to developer” as submitted to “The Codehaus” has been accepted for Google Summer of Code 2010.

Welcome to Google Summer of Code 2010! We look forward to having you with us.
With best regards,
The Google Summer of Code Program Administration Team

And there is another excellent news – proposal from Anrew Tereskin (“Sonar Widget Dashboard – Customizable UI”) was also accepted.
So there is two projects for Sonar in GSoC 2010! Congratulations Sonar team!

I decided that progress of my work on GSoC will be available publicly, so here is first part – my proposal:

Biography

I am a 23 year old student from Saint-Petersburg, Russia.

At school my team has acquired first degree diploma at 2nd Russian Command Olympiad in Informatics. And I have acquired third degree diploma at XVI Russian Olympiad in Informatics.

I’m studying Computer Science at the University. Two years ago I’ve received a bachelor’s degree. And currently I’m at 6 course. Also I took part in ACM ICPC.

Experience

I’m interested in Sonar development. I am following the discussions on the User and Development mailing lists since December 2009. Since this time I have made following plugins for Sonar:

And I am working on following plugins, since original developers currently unavailable:

Now I am working on the Sonar plugin for JProfiler.

Since 8 February 2010, I am a Sonar core developer. So I hope I have some understanding of how Sonar works.

Project

Sonar is web platform (live example: http://nemo.sonarsource.org) which can be used by all stakeholders, whether they are manager, team leader, developer, qa analyst, … The main benefit of the platform is to ease the communication between all those stakeholders when times come to talk about source code quality. But it’s a bit cumbersome for a developer to use Sonar during his daily work as it’s not integrated inside his IDE.

That is I requested on the 20 of January 2010, the creation at Codehaus of new project called Sonar IDE.

The Sonar IDE project should offer a full integration into the IDE (Eclipse, IntelliJ Idea, …) without impacting too much performances or even developer habits. Sonar IDE should progressively become a kind of genius for the developer by quietly notifying him how the current piece of code can be improved.

So I already have a well organized infrastructure to continue my work on this project:

My work

First of all – I’ll try to spent as much as possible time on this project. Since I’m a developer I’m interested in success of this project.
My efforts will actually be three tasks to complete. They are ordered by implementation risk – from simplest to most complex task:

  1. Source code should be decorated on the fly in the IDE, so I need to load from Sonar server the following data. Also I should research integration with other plugins for Eclipse (for example with Mylin).
    • Violations
    • Code coverage
    • Duplications
    • Metrics (LoC, Statements, Complexity, RFC, …)
  2. Implement Sonar-specific UI components. General problem here: Eclipse uses SWT based UI components and other IDEs uses Swing based components. Components, which can be implemented for example (in order of importance):
    • Drilldown navigation
    • Hotspots
    • TreeMap navigation
  3. Possibility to start Sonar server locally from IDE and start analyzes from IDE. This will be a first step for fully embeddable Sonar. In future this work should be continued in order to provide a way to analyze projects without communications with Sonar web server. The following solutions could be researched:
    • Jetty as an embeddable server (small memory and CPU overhead)
    • Bootstrap the analyzers without need of Maven
    • Deactivate certain analyzers
    • Run analyzers only on the locally changed code only

Code should follow Sonar conventions and should be analyzed by Sonar on Nemo. Code should be covered by unit tests and by integration tests. Maven should be used to build project. And especially Maven Tycho to build Eclipse plugin, but it can be a problem, because Maven Tycho is relatively young project.

Success Criteria

  • Implement features described above.
  • First implementation should be for Eclipse. But most of components should be abstract and reusable in order to get similar functionality in other IDEs.
  • Third task can be partially implemented.

Roadmap

Logs of my work will be available in issue tracker (spent time, solved issues and so on). All group discussions will be in development mailing list.

Draft schedule:

  1. June 2010:
    1. Perform research work (especially for third task).
    2. Discuss features with Sonar team.
    3. Implement features in the order they are specified above (but this order can be changed according to issue tracker).
    4. Make neccessary changes in Sonar Core.
  2. July 2010:
    1. Implement features.
    2. Publish snapshot versions as soon as they will be available.
  3. August 2010:
    1. Publish release candidate.
    2. Final testing of all features with help from Sonar community.
    3. Write user documentation.
    4. Release final version.

, , , , , ,

  • Go-go-go! Thanks for Sonar, anyway.
    Hopefully, after Eclipse plugin is ready, IDEA plugin is somewhat pretty easy to add.
  • Actually first version of plugin for IntelliJ Idea already in RC phase - http://markmail.org/thread/ahjc3alpv4za5jeg And release will be available in few days. But yes - more difficult to create plugin for Eclipse than for Idea.
  • This is a great proposal! Looking forward to see this plugin in my IDE.

    I've found Sonar interesting in ways of measuring quality in my projects and with this plugin it would be even better for the developer.

    Good luck!
  • Thanks.
    And which is your favorite IDE?
blog comments powered by Disqus