The Sonar forge
Tempted to go ahead and write your own plugin ? No obligation, but you might want to share it with the Sonar community. In that case, subscribe and send an email to the Sonar development mailing list. You will then benefit from the Sonar plugins forge to publish the plugin, have access to Subversion to store the source code and to Jira to file your issues.
When you utilize the forge, we request that you respect the following principles:
- When you create a foo plugin, it should be stored in a foo directory and its artifact name should be sonar-foo-plugin. Don't forget to add it as a module of ../pom.xml as well
- The groupId should be org.codehaus.sonar-plugins
- After creation, send an email to the dev mailing for it to be added to Bamboo
- The copyright belongs to whoever wrote the plugin, however the license should be business friendly
Create a plugin project
As a prerequisite to write a plugin, you are going to need to have the Java Development Kit version 5 or higher Maven version 2.0.9 or higher installed.
You can call an archetype in order to generate the skeleton of your plugin :
[Type of the plugin] can either be sonar-basic-plugin-archetype for a vanilla plugin or sonar-gwt-plugin-archetype for a gwt plugin.
A Sonar plugin is a set of POJOs that implement one or more Sonar extension points. Those extension points are interfaces or abstract classes that model an aspect of the system and define contracts of what needs to be implemented. POJOs are then placed in a container that implements the Plugin extension point.
Sonar must then have a way to retrieve the plugin class. For this, the plugin class must be declared in the jar manifest. Maven can handle this stuff by adding this in your pom.xml file :<Plugin-Class>myPackage.myClass</Plugin-Class>
A plugin is packaged in a JAR file that should be deployed into $SONAR_HOME/extensions/plugins before starting the server.