<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Sonar</title>
	
	<link>http://sonar.codehaus.org</link>
	<description>Open Source Quality Management Platform</description>
	<lastBuildDate>Wed, 17 Mar 2010 12:18:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Sonar" /><feedburner:info uri="sonar" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>Sonar</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Fight Back Design Erosion by Breaking Cycles with Sonar</title>
		<link>http://feedproxy.google.com/~r/Sonar/~3/oYbo4hH6hgU/</link>
		<comments>http://sonar.codehaus.org/fight-back-design-erosion-by-breaking-cycles-with-sonar/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 12:18:12 +0000</pubDate>
		<dc:creator>Freddy Mallet</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[functionality]]></category>

		<guid isPermaLink="false">http://sonar.codehaus.org/?p=2866</guid>
		<description><![CDATA[With version 2.0, Sonar now embarks the seventh and last axis of source code quality : Design &#038; Architecture. The objective of this post is to start discussing what it can be used for and why it is so important.
To know if the design of your software is in a good shape, having a sense [...]]]></description>
			<content:encoded><![CDATA[<p>With version 2.0, Sonar now embarks the seventh and last axis of source code quality : Design &#038; Architecture. The objective of this post is to start discussing what it can be used for and why it is so important.<br/><br />
To know if the design of your software is in a good shape, having a sense of observation and a good memory can most of the time do the trick. No real need to use a tool (whether it is UML diagrams, Sonar&#8230;) or to look at source code. If month after month, your software is able to evolve as quickly as the business requires and can handle the changes at a constant cost throughout time, then you can confidently conclude that the design of your application is in a good shape (and believe me, it is fairly unusual in the software development market !). If not, you should focus some attention on design as it is not going to get better over time and will become costly in the medium to long term.<br/><br />
To handle fearlessly upcoming changes, it is key that the software design has great modularity. That is to say, you can replace part of the system by a new piece of code with little pain. Reaching true modularity can only be achieved in a programming environment that has two main capabilities (two dimensions) : ability to assemble pieces of software and ability to recursively split a piece of software. However, these capabilities are necessary but not sufficient.<br/><span id="more-2866"></span><br />
For instance in Java, an application can be split into jar libraries, a jar library can be split into packages, packages into files, files into classes, classes into methods. And of course you can assemble jar, assemble packages, assemble classes and assemble methods. But does that mean that any Java application is modular ? Unfortunately not, Java applications can be as monolithic as old but robust COBOL programs are. <br/><br />
Design is rarely bad from the beginning, but some kind of erosion can gradually rigidify any good design. First level indicators should be checked on a regular basis to prevent such erosion. The first of them is the existence of cycles between packages. It basically tells you : &#8220;Hey guys be careful, your overall architecture seems to stiffen !&#8221;. Indeed when two, three or four packages are involved in a cycle, it means that those packages can&#8217;t be split. If all your packages are involved in cycles, it means that your whole application is not a puzzle anymore but a kind of big stone instead. Nobody intends to create cycles but everybody creates one, one day or an other. Cycles tend to creep in our design like weeds in the garden.<br/><br />
Once you know there are cycles, you will certainly want to hunt them down, understand what happens and cut them. To do so, simply initiate a dialog with Sonar :<br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2010/03/sonar-design-erosion-2.png" alt="sonar-design-erosion-1" title="sonar-design-erosion-1" width="600" height="82" class="alignnone size-full wp-image-2924" /></p>
<table style="font-size: 108%;">
<tr>
<td><b>You</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;Argh&#8230; more than 37 package cycles in my project.&#8221;</td>
</tr>
<tr>
<td><b>Sonar</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;And the tangle index is high : overall architecture is pretty bad.&#8221;</td>
</tr>
<tr>
<td><b>You </b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;What should I do ?&#8221;</td>
</tr>
</table>
<p><img src="http://sonar.codehaus.org/wp-content/uploads/2010/03/sonar-design-erosion-1.png"/></p>
<table style="font-size: 108%;">
<tr>
<td><b>Sonar</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;You need to cut 12 dependencies between packages.&#8221;</td>
</tr>
<tr>
<td><b>You</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;Is that a big job ?&#8221;</td>
</tr>
<tr>
<td><b>Sonar</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;Yes, because it involves 135 dependencies between files.&#8221;</td>
</tr>
<tr>
<td><b>You</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;Where do I start from ?&#8221;</td>
</tr>
<tr>
<td><b>Sonar</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;Click !&#8221;</td>
</tr>
</table>
<p><img src="http://sonar.codehaus.org/wp-content/uploads/2010/03/sonar-design-erosion-3.png"/></p>
<table style="font-size: 108%;">
<tr>
<td><b>Sonar</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;Here are the dependencies to cut.&#8221;</td>
</tr>
</table>
<p><img src="http://sonar.codehaus.org/wp-content/uploads/2010/03/sonar-design-erosion-4.png"/></p>
<table style="font-size: 108%;">
<tr>
<td><b>Sonar</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;Package <i>list</i> has 2 incoming dependencies from package <i>iterator</i> that must be cut.&#8221;</td>
</tr>
<tr>
<td><b>You</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;What are the files involved ?&#8221;</td>
</tr>
<tr>
<td><b>Sonar</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;Click !&#8221;</td>
</tr>
</table>
<p><img src="http://sonar.codehaus.org/wp-content/uploads/2010/03/sonar-design-erosion-5.png"/></p>
<table style="font-size: 108%;">
<tr>
<td><b>Sonar</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;Here are the two dependencies between files to cut&#8221;</td>
</tr>
<tr>
<td><b>You</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;Can I view the source code ?&#8221;</td>
</tr>
<tr>
<td><b>Sonar</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;Click !&#8221;</td>
</tr>
</table>
<p><img src="http://sonar.codehaus.org/wp-content/uploads/2010/03/sonar-design-erosion-6.png"/></p>
<table style="font-size: 108%;">
<tr>
<td><b>You</b></td>
<td>&nbsp;&nbsp;:&nbsp;&nbsp;</td>
<td>&#8220;Time for refactoring !&#8221;</td>
</tr>
</table>
<p><br/><br />
To give you the complete picture, I have to say that if you wish to go further on Design &#038; Architecture you might want to use tools such as <a href="http://www.headwaysoftware.com/products/structure101/index.php">Structure101</a>, <a href="http://www.hello2morrow.com/products/sonarj">SonarJ</a> and <a href="http://www.xdepend.com/">Xdepends</a> that are really pretty good. Sonar 2.0 features have been initially inspired by them.</p>
<img src="http://feeds.feedburner.com/~r/Sonar/~4/oYbo4hH6hgU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sonar.codehaus.org/fight-back-design-erosion-by-breaking-cycles-with-sonar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://sonar.codehaus.org/fight-back-design-erosion-by-breaking-cycles-with-sonar/</feedburner:origLink></item>
		<item>
		<title>Sonar 2.0 in screenshots</title>
		<link>http://feedproxy.google.com/~r/Sonar/~3/4ZmabGpQbAU/</link>
		<comments>http://sonar.codehaus.org/sonar-2-0-in-screenshots/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 13:16:22 +0000</pubDate>
		<dc:creator>Simon Brandhof</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[screenshots]]></category>

		<guid isPermaLink="false">http://sonar.codehaus.org/?p=2747</guid>
		<description><![CDATA[The Sonar team is very proud to announce Sonar 2.0, the first release of 2010. As announced in a previous post, the main feature in Sonar 2.0 consists of analyzing Design : Architecture and object oriented metrics. This enables to report on the &#8220;7th deadly sin of the developer&#8221; that was missing so far in [...]]]></description>
			<content:encoded><![CDATA[<p>The Sonar team is very proud to announce Sonar 2.0, the first release of 2010. As <a href="http://sonar.codehaus.org/2009-is-over-what-is-coming-up-in-2010-for-sonar/">announced in a previous post</a>, the main feature in Sonar 2.0 consists of analyzing Design : Architecture and object oriented metrics. This enables to report on the &#8220;7th deadly sin of the developer&#8221; that was missing so far in Sonar. As a reminder, here are the first six deadly sins : low coverage by unit tests, bad complexity distribution, potential bugs, duplicated code, lack of comments and non respect of coding standards.<br/><br />
As it is now a tradition, here is a presentation of the new features in screenshots. Enjoy !<span id="more-2747"></span></p>
<h2>Architecture</h2>
<p>When talking about architecture the first priority is to remove cycles between packages by cutting undesired dependencies. That might sound like an evidence but among all well-known java projects continuously analyzed and available in <a href="http://nemo.sonarsource.org">Nemo</a>, very few of them don&#8217;t have any cycle. The cycle concept is just a familiar entry point into Sonar which leads to more powerful information : how many dependencies between packages should be cut in order to remove all cycles ? How tangled is the overall architecture ? How many links between files do those dependencies represent ?<br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2010/03/package_tangles.png" alt="Design widget" title="Design widget"/><br />
From the project dashboard, clicking on any above &#8216;architecture&#8217; metrics, leads to a new visual tool : The DSM (Dependency Structure Matrix). DSM is a compact way to represent and navigate across dependencies between components. Depending on the navigation level, those components can be Maven modules, packages or files. Wants to know more about the DSM ? Here is the <a href="http://docs.codehaus.org/display/SONAR/Dependency+Structure+Matrix">DSM user guide</a>.<br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2010/03/dsm-1.png" alt="Dependency Structure Matrix" title="Dependency Structure Matrix"/></p>
<h2>Object-Oriented Metrics</h2>
<p>All Chidamber &#038; Kemerer metrics are now available in Sonar : DIT, NOC, RFC, CA, CE, LCOM4. The most interesting  Object Oriented metric is certainly LCOM4 (Lack of Cohesion of Methods) which can be used to hunt classes undertaking too many responsibilities.<br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2010/03/lcom4-widget.png" alt="Object Oriented Metrics" title="Object Oriented Metrics"/><br />
Let&#8217;s take a simple example : a class whose LCOM4=3 means that 3 different blocks of methods/fields are fully unrelated and so the class is not cohesive. Of course this is possible to visualize those blocks into the resource viewer :<br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2010/03/lcom4_details.png" alt="Lack of Cohesion of Methods" title="Lack of Cohesion of Methods" /></p>
<h2>UI Improvements</h2>
<p>Perfection is often a matter of detail, so new icons are now displayed into the Sonar interface to quickly know the type of each component :<br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2010/03/icons.png" alt="New icons" title="New icons" /><br />
Last but not least, all the underlying mechanisms used to extract dependencies graph from Bytecode, compute object-oriented metrics, create and sort the DSM, target dependencies to cut have been fully implemented in Squid by the Sonar team. This will allow to provide new features like dead code detection, calls to deprecated methods, architecture rules engine in future Sonar versions.<br/><br />
To find out more about Sonar 2.0 and the 50 issues that have been fixed, you can read the <a href="http://sonar.codehaus.org/downloads/#2.0">release note</a> or maybe you prefer to <a href="http://sonar.codehaus.org/downloads">download it</a> to give a ride !</p>
<img src="http://feeds.feedburner.com/~r/Sonar/~4/4ZmabGpQbAU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sonar.codehaus.org/sonar-2-0-in-screenshots/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://sonar.codehaus.org/sonar-2-0-in-screenshots/</feedburner:origLink></item>
		<item>
		<title>Sonar in the news</title>
		<link>http://feedproxy.google.com/~r/Sonar/~3/HRgMlR0skjg/</link>
		<comments>http://sonar.codehaus.org/sonar-in-the-news/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 08:56:28 +0000</pubDate>
		<dc:creator>Olivier Gaudin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://sonar.codehaus.org/?p=2760</guid>
		<description><![CDATA[Welcome to the roundup of blog posts and pages that mentioned Sonar last month&#8230;
Measuring code quality with Sonar
By Allard Buijze, 26 February 2010
&#8220;At JTeam, we continuously strive for good quality code. The reason is very simple: bad quality code slows down the development process. The small investment pays out in even the simplest of projects.&#8221;
Sonar: [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome to the roundup of blog posts and pages that mentioned Sonar last month&#8230;<br/><br />
<a href="http://blog.jteam.nl/2010/02/26/measuring-code-quality-with-sonar/">Measuring code quality with Sonar</a><br />
By Allard Buijze, 26 February 2010</p>
<p><i>&#8220;At JTeam, we continuously strive for good quality code. The reason is very simple: bad quality code slows down the development process. The small investment pays out in even the simplest of projects.&#8221;</i><br/><br />
<a href="http://www.enhance-ict.com/2010/02/22/sonar-an-invaluable-tool-for-every-java-shop/">Sonar: a valuable tool for every Java shop</a><br />
By Hans Westerbeek, 22 February 2010</p>
<p><i>&#8220;If your organization develops Java applications, chances are that Sonar could be very valuable for you. Sonar helps you calculate your technical debt by analyzing your project’s source code.&#8221;</i><br/><br />
<a href="http://tfnico.blogspot.com/2010/02/getting-more-agile-2009-in-review.html">Getting More Agile &#8211; 2009 in Review</a><br />
By Thomas Ferris Nicolaisen, 21 February 2010</p>
<p><i>&#8220;With our mavenization efforts, we were recently able to make use of Sonar (which rocks, btw) instead of the old, more primitive (boring) Ant reports in Hudson.&#8221;</i><br/><br />
<a href="http://www.sonarsource.com/plugins/plugin-cobol/">A Sonar Cobol Plugin</a><br />
By SonarSource, 18 February 2010</p>
<p><i>Coming soon&#8230; &#8220;SonarSource has developed its own Cobol parser and packaged it in a Sonar Cobol analyzer. It allows to perform objective and automated Cobol code quality and standards reviews against pre-defined rule sets and coding best practices. It also generates standard code metrics like number of lines or density of comments&#8221;</i><br/><br />
<a href="http://blog.exoplatform.org/2010/02/11/add-code-quality-metrics-to-your-gatein-dashboard-with-sonar/">Add code quality metrics to your GateIn Dashboard with Sonar</a><br />
By Jeremi Joslin, 11 February 2010</p>
<p><i>&#8220;Sonar is an open source platform to manage code quality. It enables to collect, analyze and report metrics on source code. At eXo Platform, we use Sonar to manage and monitor the quality of our codebase.&#8221;</i><br/><br />
<a href="http://www.anthillpro.com/blogs/anthillpro-blog/2010/02/10/sonar_integration_for_anthillpro.html">Sonar Integration for AnthillPro</a><br />
By Eric Minick, 10 February 2010</p>
<p><i>&#8220;A Sonar plugin for AnthillPro is now available through Urbancode&#8217;s Supportal (support portal).&#8221;</i><br/><br />
<a href="http://godin.net.ru/2010/01/27/sonar-scm-activity-plugin-version-0-1/">Sonar SCM Activity Plugin version 0.1</a><br />
By Evgeny Mandrikov, 27 January 2010</p>
<p><i>&#8220;People, who follow me on Twitter, already know about new plugin for Sonar developed by me. Meet &#8211; Sonar SCM Activity Plugin.&#8221;</i><br/><br />
<a href="http://qualityswdev.com/2010/01/23/java-build-server/">Java Build Server</a><br />
By Manuel Küblböck, 23 Januray 2010</p>
<p><i>&#8220;In my last Java project, I set up a build server with Continuous Integration (CI) capability. I am a big fan of Test Driven Development (TDD) and I quite enjoyed Hudson telling us right away when someone checked in code that broke the build. It just gives you so much more confidence in your code and keeps it releasable at all times. In addition, we used Sonar to measure the quality of our code.&#8221;</i><br/></p>
<img src="http://feeds.feedburner.com/~r/Sonar/~4/HRgMlR0skjg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sonar.codehaus.org/sonar-in-the-news/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://sonar.codehaus.org/sonar-in-the-news/</feedburner:origLink></item>
		<item>
		<title>Add CI Build Stability to your Sonar Dashboard</title>
		<link>http://feedproxy.google.com/~r/Sonar/~3/X6EF6NZqbGE/</link>
		<comments>http://sonar.codehaus.org/add-ci-build-stability-to-your-sonar-dashboard/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 13:33:55 +0000</pubDate>
		<dc:creator>Freddy Mallet</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://sonar.codehaus.org/?p=2688</guid>
		<description><![CDATA[Sonar is known as being the open source platform to evaluate and report continuously on source code quality. Its basic role is to evaluate the code technical debt that slows down productivity. Of course, several factors can lead to a productivity slump and poor code quality is only one of them.
Another one is the effectiveness [...]]]></description>
			<content:encoded><![CDATA[<p>Sonar is known as being the open source platform to evaluate and report continuously on source code quality. Its basic role is to evaluate the code technical debt that slows down productivity. Of course, several factors can lead to a productivity slump and poor code quality is only one of them.<br/><br />
Another one is the effectiveness of the Continuous Integration process. CI practice is directly inspired by Lean Manufacturing practices and the main goal is to &#8220;Create a continuous process flow to bring problems to the surface &#8230; as quick as possible&#8221;. When the Continuous Integration flow fails, this is very good feedback to hear : &#8220;Hey guys, stop the line. You first need to fix this issue : compilation failure, unit tests failures&#8230;&#8221;. But if the CI flow fails too often this is also a bad news as lot of time is spent fixing the problem and not developing new features.<br/><span id="more-2688"></span><br />
The <a href="http://docs.codehaus.org/display/SONAR/Build+Stability+Plugin">Sonar Build Stability plugin</a> has been developed by <a href="http://godin.net.ru/">Evgeny Mandrikov</a> to evaluate the stability and the effectiveness of this CI flow. It currently enables to answer two questions on a given period of time :</p>
<ul>
<li>How long does it take to get valuable feedback ? </li>
<li>How often was the build broken in the given period ?</li>
</ul>
<p>Once installed, this plugin is automatically launched by Sonar on every project as long as the Maven pom.xml file contains a &#8220;<a href="http://maven.apache.org/pom.html#Continuous_Integration_Management">ciManagement</a>&#8221; node or that CI engine URL is configured in the plugin. The following new widget is then displayed in the Sonar web interface :<br />
<center><img src="http://sonar.codehaus.org/wp-content/uploads/2010/03/widget.jpg"/></center><br />
The current version 1.0.1 supports Hudson and Bamboo CI engines. Next version might be extended to cover Teamcity and respond to a third question : &#8220;When the build is broken, how long does it take to fix it ?&#8221;<br/><br />
This plugin is definitely a great addition to evaluate how Lean we are.</p>
<img src="http://feeds.feedburner.com/~r/Sonar/~4/X6EF6NZqbGE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sonar.codehaus.org/add-ci-build-stability-to-your-sonar-dashboard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://sonar.codehaus.org/add-ci-build-stability-to-your-sonar-dashboard/</feedburner:origLink></item>
		<item>
		<title>Securing access to projects in Sonar</title>
		<link>http://feedproxy.google.com/~r/Sonar/~3/H_ZBOvz0quY/</link>
		<comments>http://sonar.codehaus.org/securing-access-to-projects-in-sonar/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 13:04:44 +0000</pubDate>
		<dc:creator>Freddy Mallet</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[functionality]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://sonar.codehaus.org/?p=2636</guid>
		<description><![CDATA[When used out-of-the-box, Sonar is a code quality radiator accessible by everyone at anytime. Like for JIRA, Hudson, a post-it dashboard or any other piece of the development toolset transparency is a key success factor for adoption. So, by default in Sonar, anyone can access any project under continuous inspection and navigate through it.
But of [...]]]></description>
			<content:encoded><![CDATA[<p>When used out-of-the-box, Sonar is a code quality radiator accessible by everyone at anytime. Like for JIRA, Hudson, a post-it dashboard or any other piece of the development toolset transparency is a key success factor for adoption. So, by default in Sonar, anyone can access any project under continuous inspection and navigate through it.<br/><br />
But of course, there are situations where securing Sonar is necessary. Let&#8217;s imagine for 2 minutes a consulting company that does development for customers and wishes to allow those customers to follow their own projects in Sonar. Since the company has many customers, it is necessary that group of projects can be isolated to make sure each customer only has access to his own projects. Prior to Sonar 1.12, this was only possible by having one instance of Sonar per customer.<br/><br />
Since Sonar 1.12 there are services available in the web interface to handle this and to cover the following use cases :</p>
<ul>
<li>Secure a Sonar instance by forcing login prior to access to any page</li>
<li>Make a given project non accessible to anonymous</li>
<li>Allow access to source code (Code Viewer) to a given set of people</li>
<li>Restrict access to a project to a given group of people</li>
<li>Define who can administer a project (setting exclusion patterns, tunning plugins configuration for that project, &#8230;)</li>
<li>Define who can administer a Sonar instance</li>
</ul>
<p>All those use cases can be implemented through the Sonar web interface and will take effect immediately. The way security is handled in Sonar is pretty classic as the security policy is based on the following three concepts : user, group and role (global or by project). Let&#8217;s take the example of the &#8220;Project roles&#8221; page available at project level :<br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2010/02/sonar-project-roles.jpg" alt="sonar-project-roles" title="sonar-project-roles" width="600" height="242" class="alignnone size-full wp-image-2645" /><br />
Three roles are available at project level : Administrator, User and Code Viewer. Users and/or a groups of users can be associated to each of those roles to get the required permissions. </p>
<p>User and group can be first created through the &#8220;Users&#8221; and &#8220;Groups&#8221; services available in the administration configuration section. Here is the screenshot of the &#8220;Groups&#8221; service :<br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2010/02/Sonar-groups.jpg" alt="Sonar-groups" title="Sonar-groups" width="600" height="153" class="alignnone size-full wp-image-2647" /><br />
That was authorization, let&#8217;s now talk about authentication. By default, user authentication is done against the Sonar DB (user table) but an external authentication engine can also used : OpenLDAP, Microsoft Active Directory, Apache DS, Atlassian Crowd &#8230; Three identity plugins already exist :  two open source <a href="http://docs.codehaus.org/display/SONAR/LDAP+Plugin">LDAP Plugin</a>, <a href="http://docs.codehaus.org/display/SONAR/Crowd+Plugin">Crowd plugin</a> and a commercial one <a href="http://www.sonarsource.com/plugins/plugin-identity/">Identity Plugin</a>. They all use the public Sonar authentication extension point.<br/><br />
To conclude, it is possible since Sonar 1.12 to easily implement a robust enterprise security policy. Those new functionality have been done with no impact whatsoever on Sonar users who do not want to activate security and want to keep full transparency.</p>
<img src="http://feeds.feedburner.com/~r/Sonar/~4/H_ZBOvz0quY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sonar.codehaus.org/securing-access-to-projects-in-sonar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://sonar.codehaus.org/securing-access-to-projects-in-sonar/</feedburner:origLink></item>
		<item>
		<title>Sonar 2.0 at Geneva JUG</title>
		<link>http://feedproxy.google.com/~r/Sonar/~3/e1JA1goZNck/</link>
		<comments>http://sonar.codehaus.org/sonar-2-0-at-geneva-jug/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 15:55:31 +0000</pubDate>
		<dc:creator>Olivier Gaudin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[jug]]></category>

		<guid isPermaLink="false">http://sonar.codehaus.org/?p=2566</guid>
		<description><![CDATA[On the 23rd of February, Freddy is going to make a presentation at Geneva Java User Group.

Discussions will be of course about criteria to evaluate source code quality, but also about the evolution of the developer&#8217;s job. What does it mean today to be a Professional Developer ? What are the expectations and the challenges [...]]]></description>
			<content:encoded><![CDATA[<p>On the 23rd of February, Freddy is going to make a presentation at <a href="http://www.genevajug.ch/topic.jsp?id=1586">Geneva Java User Group</a>.<br />
<center><img src="http://sonar.codehaus.org/wp-content/uploads/2010/02/JugLogo.png" /></center><br />
Discussions will be of course about criteria to evaluate source code quality, but also about the evolution of the developer&#8217;s job. What does it mean today to be a Professional Developer ? What are the expectations and the challenges that a developer face on a daily basis ?<br/><br />
This event will be also a good opportunity to officially launch Sonar 2.0 and demonstrate the new features to cover the seventh quality axis : architecture &#038; design.<br/><br />
For those who wish to attend (presentation is in French), you will need to <a href="http://www.jugevents.org/jugevents/event/24014">register</a>.<br/><br />
Thanks to the Geneva JUG organizers !</p>
<img src="http://feeds.feedburner.com/~r/Sonar/~4/e1JA1goZNck" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sonar.codehaus.org/sonar-2-0-at-geneva-jug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://sonar.codehaus.org/sonar-2-0-at-geneva-jug/</feedburner:origLink></item>
		<item>
		<title>Sonar Gadgets for GateIn and Jira4</title>
		<link>http://feedproxy.google.com/~r/Sonar/~3/suIPMfFTIgA/</link>
		<comments>http://sonar.codehaus.org/sonar-gadgets-for-gatein-and-jira4/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 13:10:25 +0000</pubDate>
		<dc:creator>Olivier Gaudin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[atlassian]]></category>
		<category><![CDATA[eXo]]></category>
		<category><![CDATA[opensocial]]></category>

		<guid isPermaLink="false">http://sonar.codehaus.org/?p=2520</guid>
		<description><![CDATA[Jérémi Joslin has recently published a series of open source gadgets for Sonar along with explanations on how he developed them. Those gadgets are aimed to work not only in Gatein but also in any OpenSocial/Gadget container. They have been tested in Jira4 and GateIn.
The development of those gadgets was incepted to follow Arnaud Heritier [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.jeremi.info/">Jérémi Joslin</a> has recently published a series of open source <a href="http://blog.jeremi.info/entry/open-source-sonar-gadget-for-the-enterprise-portal-gatein">gadgets for Sonar</a> along with explanations on how he developed them. Those gadgets are aimed to work not only in Gatein but also in any OpenSocial/Gadget container. They have been tested in Jira4 and GateIn.<br/><br />
The development of those gadgets was incepted to follow <a href="http://blog.aheritier.net/">Arnaud Heritier</a> (the Software Factory Manager at <a href="http://www.exoplatform.com/">eXo Plaform</a>) vision on software development : &#8220;Developing a software with an increasing quality isn&#8217;t easy. Sonar allows us day after day, to analyze from a global dashboard up to the smallest line of code all quality indicators we extract from developments. But managing a product isn&#8217;t only being focused on its quality. It consists also to deliver on time, satisfy customers and community requests&#8230; To keep an eye on everything what could be better than a dashboard based on GateIn? With Sonar&#8217;s gadgets for GateIn we&#8217;ll be able to create our own set of dashboards to follow all metrics besides the activity of our teams, their impediments, tasks and issues on products (we are able, for example, to reuse Jira Gadgets in GateIn), and many more.&#8221;<br/><br />
Sonar Gadget in GateIn Dashboard:<br />
<center><img src="http://sonar.codehaus.org/wp-content/uploads/2010/01/GateIn.png" alt="Sonar Gadgets in GateIn Dashboard" /></center><br/><br />
Sonar Gadget in JIRA4:<br />
<center><img src="http://sonar.codehaus.org/wp-content/uploads/2010/01/jira.png" alt="Sonar Gadgets in Jira4 Dashboard" /></center><br />
Links:</p>
<ul>
<li><a href="http://exogadgets.appspot.com/">Install the gadgets</a></li>
<li><a href="http://sonar.exoplatform.org/">Exo and GateIn Sonar instance</a></li>
<li><a href="http://github.com/jeremi/sonar-gadget">Source code of the Sonar gadgets</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/Sonar/~4/suIPMfFTIgA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sonar.codehaus.org/sonar-gadgets-for-gatein-and-jira4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://sonar.codehaus.org/sonar-gadgets-for-gatein-and-jira4/</feedburner:origLink></item>
		<item>
		<title>What does Open Source mean for SonarSource ?</title>
		<link>http://feedproxy.google.com/~r/Sonar/~3/EM-DCiRH1jE/</link>
		<comments>http://sonar.codehaus.org/what-does-open-source-mean-for-sonarsource/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 12:51:40 +0000</pubDate>
		<dc:creator>Freddy Mallet</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[platform]]></category>

		<guid isPermaLink="false">http://sonar.codehaus.org/?p=2479</guid>
		<description><![CDATA[SonarSource, founded more than a year ago, is a Swiss company that leads the development of the Sonar platform. Obviously Sonar and SonarSource are really tight together : Sonar would not be where it is today without SonarSource, but the other way around is also true. Like any company making business around an Open Source [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sonarsource.com">SonarSource</a>, founded more than a year ago, is a Swiss company that leads the development of the Sonar platform. Obviously Sonar and SonarSource are really tight together : Sonar would not be where it is today without SonarSource, but the other way around is also true. Like any company making business around an Open Source product, we often get the question on what Open Source means for us and what is our real commitment towards it.<br/><br />
The short answer to this is a single word : <a href="http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License">LGPL</a>. The is the license we chose from inception of the project instead of an ordinary GPL license. Why ? Because we believe that to make Sonar an extensible platform rather than just a tool, we need a license that fits both Open Source community and Commercial companies needs. To make sure people are going to invest in a platform, it should belong to its active users. With this choice and to keep its leadership on the platform, SonarSource has therefore committed to continuously invest in Sonar.<br/><br />
The longer answer refers to the <a href="http://www.sonatype.com/people/2009/02/so-how-open-is-your-open-source-company-anyway/">idea of an Open Core</a> by <a href="http://jasonvanzyl.sys-con.com/">Jason Van Zyl</a>. Jason describes what are his four principles and we fully adhere to them :<br/></p>
<ul>
<li><b>The Open Source product you provide to users must be great: the Open Core should stand on its own as something truly useful without any additional commercial add-ons. The software must perform well in a production environment.</b><br/><br />
This is so true that many Sonar users don&#8217;t even know the existence of SonarSource</li>
<p><br/></p>
<li><b>The Open Source product you provide should go through an ungodly amount of testing and QA. Testing and QA on the Open Core are the cornerstone of quality and should not be reserved for commercial versions of your product.</b><br/><br />
The Sonar core is covered by about 1&#8242;300 unit tests and 150 integration tests (most of them are selenium tests) which are executed by two continuous integration server.  Of course <a href="http://nemo.sonarsource.org/project/index/org.codehaus.sonar:sonar">we run Sonar on Sonar</a> on a daily basis and we do performance profiling before every release. SonarSource&#8217;s plugins are extensions of Sonar, not a kind of professional packaging : they fully depends on the quality of the core.</li>
<p><br/></p>
<li><b>The Open Source product you provide should be architected such that all commercial features are plug-ins to the Open Core.</b><br/><br />
The Views, Master project, PL/SQL and Identify plugin are fully based on Sonar extension points and nothing more.</li>
<p><br/></p>
<li><b>The Open Source product you sell should have completely open pricing. If someone cannot clearly see what your pricing is and what the difference is between your open and commercial versions, you likely have a predatory and opportunistic pricing model</b><br/><br />
I believe <a href="http://www.sonarsource.com">it is the case</a>.</li>
</ul>
<p><br/><br />
With the the adoption of LGPL and the respect of those four principles, you can definitely <i>Come in, we&#8217;re open !</i>.</p>
<img src="http://feeds.feedburner.com/~r/Sonar/~4/EM-DCiRH1jE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sonar.codehaus.org/what-does-open-source-mean-for-sonarsource/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://sonar.codehaus.org/what-does-open-source-mean-for-sonarsource/</feedburner:origLink></item>
		<item>
		<title>2009 is over, what is coming up in 2010 for Sonar ?</title>
		<link>http://feedproxy.google.com/~r/Sonar/~3/DyU0FLwZsU4/</link>
		<comments>http://sonar.codehaus.org/2009-is-over-what-is-coming-up-in-2010-for-sonar/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 12:42:22 +0000</pubDate>
		<dc:creator>Freddy Mallet</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[functionality]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://sonar.codehaus.org/?p=2425</guid>
		<description><![CDATA[A change of year always gives to teams an opportunity to look back and measure what was accomplished&#8230; and then to start thinking of what the new year should be made of. I thought I&#8217;d share the output of the Sonar team retrospective.
At the end of 2008, very few people knew Sonar. The platform was [...]]]></description>
			<content:encoded><![CDATA[<p>A change of year always gives to teams an opportunity to look back and measure what was accomplished&#8230; and then to start thinking of what the new year should be made of. I thought I&#8217;d share the output of the Sonar team retrospective.<br/><br />
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 :</p>
<ul>
<li>A dynamic development activity on Sonar core with 7 major releases since 1.5.</li>
<li>The transformation of Sonar from a tool to an extensible platform with more than 20 extension points.</li>
<li>More than <a href="http://docs.codehaus.org/display/SONAR/Sonar+Plugin+Library/">30 open source plugins</a> have been build to extend Sonar core using those APIs, and more that are not open source.</li>
<li>the number monthly downloads has been multiplied by 10 during the year from 300 to 3,000.</li>
<li>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.</li>
<li>More than 4&#8242;000 emails exchanged on mailing lists and 1,000 Jira issues created.</li>
</ul>
<p>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  :</p>
<ul>
<li><b>Design analysis</b> : 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 &#038; Architecture. Sonar 2.0 planned for February will start covering the 7th axis with O.O. metrics like LCOM4, RFC, DIT &#8230; 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.</li>
<li><b>Multi-languages</b> : 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 :-)</li>
</ul>
<p>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 !</p>
<img src="http://feeds.feedburner.com/~r/Sonar/~4/DyU0FLwZsU4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sonar.codehaus.org/2009-is-over-what-is-coming-up-in-2010-for-sonar/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://sonar.codehaus.org/2009-is-over-what-is-coming-up-in-2010-for-sonar/</feedburner:origLink></item>
		<item>
		<title>Sonar 1.12 in screenshots</title>
		<link>http://feedproxy.google.com/~r/Sonar/~3/oXZpCurqvAI/</link>
		<comments>http://sonar.codehaus.org/sonar-1-12-in-screenshots/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 08:08:39 +0000</pubDate>
		<dc:creator>Simon Brandhof</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[screenshots]]></category>

		<guid isPermaLink="false">http://sonar.codehaus.org/?p=2315</guid>
		<description><![CDATA[Here comes the 8th and last major Sonar release of the year. Like for all previous releases, this post is a summary of the new features through screenshots :
Users, groups and project roles
One of the most voted feature in JIRA is the ability to manage credentials at project-level. Sonar now embarks a complete user management [...]]]></description>
			<content:encoded><![CDATA[<p>Here comes the 8th and last major Sonar release of the year. Like for all <a href="http://sonar.codehaus.org/tag/screenshots/">previous releases</a>, this post is a summary of the new features through screenshots :<span id="more-2315"></span><br/></p>
<h2>Users, groups and project roles</h2>
<p>One of the most voted feature in <a href="http://jira.codehaus.org/browse/SONAR#selectedTab=com.atlassian.jira.plugin.system.project%3Apopularissues-panelr">JIRA</a> is the ability to manage credentials at project-level. Sonar now embarks a complete user management mechanism to secure any Sonar instances by defining who can access and administer each project. User management is both simple and flexible : add new users, group them and associate them project roles : Administrator, User or Source code viewer. <br/><br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2009/12/users.jpg" alt="Users" title="users" /><br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2009/12/groups.jpg" alt="groups" title="groups"/><br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2009/12/project-roles.jpg" alt="Project Roles" title="Project Roles"/><br/></p>
<h2>Highlighted code syntax</h2>
<p>Because code is not just a bunch of plain black text, it becomes pleasant to read it and it&#8217;s now much easier to <a href="http://sonar.codehaus.org/commented-out-code-eradication-with-sonar/">eradicate commented-out lines of code</a> (see line 97) :<br/><br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2009/12/highlighted_syntax.jpg" alt="Highlighted code syntax" title="Highlighted code syntax" /><br/></p>
<h2>Ignore violations with the new &#8216;//NOSONAR&#8217; comment</h2>
<p>The NOSONAR tag tells Sonar to ignore all violations on a specific line whatever rule engines are being used to scan code. Of course, Sonar is still able to manage widely used //NOPMD and //CHECKSTYLE:OFF &#8230; ON. We have simply added a native way to manage false positives. This feature is a real improvement for users that have activated Findbugs rules as there was no clean way to tag a Findbugs as a false positive : there is now &#8216;//NOSONAR&#8217;.<br/><br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2009/12/NOSONAR.jpg" alt="NOSONAR" title="NOSONAR"/><br/></p>
<h2>Better source viewer</h2>
<p>As surprising as it can be, the full package name was not displayed in previous versions : it is fixed now. Moreover the number of public APIs is added to the header. In Sonar, a public API is either a non empty public constructor or a public method that is not an accessor and does not starts with the &#8216;@Override&#8217; annotation.<br/><br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2009/12/source-viewer.jpg" alt="Source viewer" title="Source viewer"/><br/><br />
Quickly get the key of the rule that has been violated and click to get the full description :<br/><br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2009/12/rule-description.jpg" alt="Rule description" title="Rule description"/></a><br/></p>
<h2>Highlight ratio of duplicated lines with treemaps</h2>
<p>Treemap color is now red when 50% of lines of code are duplicated. It was 100% in previous versions. <br/><br />
<img src="http://sonar.codehaus.org/wp-content/uploads/2009/12/duplicated_lines_in_treemap.jpg" alt="Duplication ratio" title="Duplication ratio"/><br/><br />
You can read the <a href="http://sonar.codehaus.org/downloads/#1.12">release notes</a> to find out more on the 62 issues that are being fixed in the release&#8230; or you might want to <a href="http://sonar.codehaus.org/downloads">give it a go</a>  right now !<br/></p>
<img src="http://feeds.feedburner.com/~r/Sonar/~4/oXZpCurqvAI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sonar.codehaus.org/sonar-1-12-in-screenshots/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://sonar.codehaus.org/sonar-1-12-in-screenshots/</feedburner:origLink></item>
	</channel>
</rss>
