Best practices
- Build with maven before committing into SCM (Git or Subversion)
- Commit frequently
- Do not commit incomplete changes (SCM is not a backup system)
- Do not commit IDE files (.settings, .project, .classpath, .idea, *.iml, *.ipr, *.iws)
- Use meaningful comments when doing a commit, always with the JIRA key and title (e.g. "SONAR-6 Apply license LGPL") - see Note About Git Commit Messages
- Subscribe to the mailing list dev@sonar.codehaus.org
- Overuse JUnit tests with the help of FEST Assert and Mockito
- Think IoC (Inversion of Control pattern)
- Don't reinvent the wheel : use standard libraries like commons-lang, commons-io and guava (formerly known as google-collections). Commons-collections is deprecated since Sonar 1.10.
- Use comments and javadocs only when necessary
- API Javadoc - use "@since <version>" and "@deprecated in <version>"
- Do not forget the license header on all the Java and Ruby files
- Respect the code formatting described below
- Follow error handling guidelines
- Eat your own food : have a look at Sonar and Sonar plugins on Nemo.
- Follow Maven conventions
Source Encoding
Source code encoding should be set to UTF-8 to prevent cross-platform encoding issues.
UTF-8 is specified in parent POMs, so it is used by Maven when building the projects. However, it may not be set by default in your prefered IDE. The best practice is to force it for all your source code.
- For Eclipse : go to "Preferences -> General -> Workspace" and force the "Text file encoding" to "UTF-8"
- For IntelliJ IDEA : go to "Settings -> File Encodings" and force the "IDE Encoding" to "UTF-8"
Code Style
- Classes with acronyms are CamelCase : for example prefer PmdPlugin to PMDPlugin, or JavaNcssHandler to JavaNCSSHandler
Configure your IDE with the correct code style: see the section "IDE Support".
Edit Ruby code
The development mode is used to edit Ruby on Rails code. The application is automatically reloaded when Ruby files are saved. It avoids restarting the server. Changes are reloaded on the fly. Execute one of the following commands from the sonar-server/ directory to start the server :
Then ruby code can be directly edited from sonar-server/src/main/webapp/WEB-INF/app.
Debug Maven Analysis
Execute mvnDebug instead of mvn :
- Attach your IDE to the remote process (the listening port is 8000).
Example in Intellij Idea : Run -> Edit configurations -> Add new configuration -> Remote -> port 8000.
Profile Maven analysis with JProfiler
- Clone $MAVEN_HOME/bin/mvnDebug to mvnJProfiler and replace the MAVEN_DEBUG_OPTS property by :
MAVEN_DEBUG_OPTS="-Xint -agentlib:jprofilerti=port=8849 -Xbootclasspath/a:/Applications/jprofiler5/bin/agent.jar" - Start JProfiler -> Connect to an application on a remote computer
Tips and tricks
Log server-side SQL requests
Here is how to log all the SQL requests executed from server :
- Download log4jdbc4-1.2.jar from http://log4jdbc.googlecode.com/files/log4jdbc4-1.2.jar
- Copy this jar here : $SONAR_HOME/war/sonar-server/WEB-INF/lib/log4jdbc4-1.2.jar
IMPORTANT: Change the configuration of logback.xml because if not modified everything will be logged (http://code.google.com/p/log4jdbc/#5._Set_up_your_loggers)
Restart sonar and you should be able to see :

