<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://scrum.codebetter.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Patrick Smacchia [MVP C#]</title><link>http://scrum.codebetter.com/blogs/patricksmacchia/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 (Build: 20416.853)</generator><item><title>.NET 3.5 SP1 Beta: Changes Overview</title><link>http://scrum.codebetter.com/blogs/patricksmacchia/archive/2008/05/13/net-3-5-sp1-beta-changes-overview.aspx</link><pubDate>Tue, 13 May 2008 17:01:00 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:178154</guid><dc:creator>Patrick Smacchia</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://scrum.codebetter.com/blogs/patricksmacchia/rsscomments.aspx?PostID=178154</wfw:commentRss><comments>http://scrum.codebetter.com/blogs/patricksmacchia/archive/2008/05/13/net-3-5-sp1-beta-changes-overview.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;

&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;i&gt;Scott
Hanselman&lt;/i&gt; just published a blog post where he used &lt;a href="http://www.NDepend.com" target="_blank"&gt;NDepend &lt;/a&gt;to see changes in the
code of &lt;i&gt;.NET 3.5 SP1 beta&lt;/i&gt; (&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx" target="_blank"&gt;that has just been released&lt;/a&gt;).
Let’s expose the exhaustive list of differences:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Summary:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;# IL
instructions:&lt;span&gt; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;8 598 933 to 8 589 008&lt;/b&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(-9 925&lt;span&gt;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;-0.1%)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;# Assemblies:&lt;span&gt; &amp;nbsp;&amp;nbsp; &lt;/span&gt;112&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;# Namespaces:&lt;span&gt; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;919 to 929&lt;/b&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(+10&lt;span&gt;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;+1.1%)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;# Types&lt;span&gt;: &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;39 988 to 40 402&lt;/b&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(+414&lt;span&gt;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;+1%)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;# Methods:&lt;span&gt; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;387 421 to 385 253&lt;/b&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(-2 168&lt;span&gt;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;-0.6%)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;# Fields&lt;span&gt;: &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;241 567 to 246 320&lt;/b&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(+4 753&lt;span&gt;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;+2%)&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/PublicMethodsAdded.zip" target="_blank"&gt;636 new
public methods&lt;/a&gt;: &lt;span&gt;&amp;nbsp;&lt;/span&gt;
&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsPublic&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Was&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;Added&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/PublicTypesAdded.zip" target="_blank"&gt;57 new
public types&lt;/a&gt;: &lt;span&gt;&amp;nbsp;&lt;/span&gt;
&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TYPES&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsPublic&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Was&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;Added&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/PublicMethodsRemoved.zip" target="_blank"&gt;3.137 public
methods removed&lt;/a&gt; (this number is biased by the fact that a public methods can be
declared in an internal types):&amp;nbsp;
&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsPublic&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WasRemoved&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/PublicTypesRemoved.zip" target="_blank"&gt;8 public types
removed&lt;/a&gt;:&amp;nbsp;&lt;a href="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/PublicTypesRemoved.zip"&gt;&lt;/a&gt;
&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TYPES&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsPublic&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WasRemoved&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/MethodsChanged.zip" target="_blank"&gt;5.623 methods
where code was changed&lt;/a&gt;:&amp;nbsp;
&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;CodeWasChanged&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/MethodsChanged.zip" target="_blank"&gt;2.024 types
where code was changed&lt;/a&gt;:&amp;nbsp;&lt;a href="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/MethodsChanged.zip"&gt;&lt;/a&gt;
&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TYPES&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;CodeWasChanged&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;The list of
assemblies we consider is made of &lt;a href="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/AssembliesList.zip" target="_blank"&gt;112 assemblies&lt;/a&gt;.&amp;nbsp;
&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Here is a 9000x1200
poster where methods where code was changed are located in blue (we degraded
the quality to have a 2MB image file instead of 13MB):&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/MetricTreemapSnapshot.jpg" target="_blank"&gt;&lt;img src="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/MetricTreemapSnapshotSmall.jpg" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;And here is a list of coupling update for assemblies:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;A blue cell means: {&lt;i&gt;the X Assembly&lt;/i&gt;} is using {&lt;i&gt;the Y assembly&lt;/i&gt;}.&lt;/li&gt;&lt;li&gt;Weight of a blue cell means: W types of the &lt;i&gt;{the X Assembly&lt;/i&gt;} are used by {&lt;i&gt;the Y assembly&lt;/i&gt;}.&lt;/li&gt;&lt;li&gt;A green cell means: {&lt;i&gt;the Y Assembly&lt;/i&gt;} is used by {&lt;i&gt;the X assembly&lt;/i&gt;}.&lt;/li&gt;&lt;li&gt;Weight of a green cell means: W types of the {&lt;i&gt;the Y Assembly&lt;/i&gt;} are using {&lt;i&gt;the X assembly&lt;/i&gt;}.&lt;/li&gt;&lt;li&gt;A black cell means: {&lt;i&gt;the X Assembly&lt;/i&gt;} and {&lt;i&gt;the Y assembly&lt;/i&gt;} are using each others.&lt;/li&gt;&lt;li&gt;A red tick on a cell means: the coupling has been changed.&lt;/li&gt;&lt;li&gt;A red tick with a plus on a cell means: the dependency has been created.&lt;/li&gt;&lt;li&gt;A red tick with a minus on a cell means: the dependency has been removed.&lt;/li&gt;&lt;li&gt;An assembly name underlined means that its code has been changed.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/DependencyMatrixSnapshot.png" target="_blank"&gt;&lt;img src="http://codebetter.com/blogs/patricksmacchia/DotNet35SP1Beta/DependencyMatrixSnapshotSmall.png" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;img src="http://scrum.codebetter.com/aggbug.aspx?PostID=178154" width="1" height="1"&gt;</description></item><item><title>Write Active Conventions on your Code Base</title><link>http://scrum.codebetter.com/blogs/patricksmacchia/archive/2008/05/11/write-active-conventions-on-your-code-base.aspx</link><pubDate>Sun, 11 May 2008 20:10:00 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:178040</guid><dc:creator>Patrick Smacchia</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://scrum.codebetter.com/blogs/patricksmacchia/rsscomments.aspx?PostID=178040</wfw:commentRss><comments>http://scrum.codebetter.com/blogs/patricksmacchia/archive/2008/05/11/write-active-conventions-on-your-code-base.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&lt;span&gt;Recently,
both &lt;a href="http://codebetter.com/blogs/glenn.block/archive/2008/05/04/prismshouldnotreferenceunity.aspx" target="_blank"&gt;Glenn Block&lt;/a&gt;&lt;/span&gt;&lt;span&gt; &lt;span&gt;and &lt;a href="http://www.ayende.com/Blog/archive/2008/05/05/Actively-enforce-your-conventions.aspx" target="_blank"&gt;Ayende&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.ayende.com/Blog/archive/2008/05/05/Actively-enforce-your-conventions.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;wrote &lt;span&gt;about how to define
some sort of &lt;b&gt;active conventions about
the code base&lt;/b&gt;. The idea is great! The proposed implementation is based on the
framework &lt;b&gt;System.Reflection&lt;/b&gt; used from
some unit tests to assert some properties on some elements of the code base. Not
taking account the problems encountered with Reflection&lt;/span&gt;&lt;/span&gt;&lt;span&gt;, this approach suffers the same
problem than writing custom rules for &lt;b&gt;FxCop: &lt;/b&gt;there is a lot of noise/friction and it
takes dozens of minutes just to write a single convention and make sure it is
working correctly.&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;The
language &lt;a href="http://www.ndepend.com/Features.aspx#CQL" target="_blank"&gt;&lt;b&gt;Code Query Language&lt;/b&gt;&lt;/a&gt;&lt;a href="http://www.ndepend.com/Features.aspx#CQL" target="_blank"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;
supported by &lt;a href="http://www.NDepend.com" target="_blank"&gt;&lt;b&gt;NDepend&lt;/b&gt;&amp;nbsp;&lt;/a&gt;&lt;a href="http://www.NDepend.com" target="_blank"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;has
been especially designed to write active &lt;i&gt;conventions
/ rules/ constraints&lt;/i&gt; in a frictionless way. The purpose of this post is to enumerate
popular active code conventions written with CQL. These conventions are related
to a rich set of area including: Dependencies, Structure, Quality,
Metrics, Evolution, Diff / Changes, Coverage, Purity / Side-Effects /
Immutability, Encapsulation, Call Graph, Separation of Concerns,
Componentization, Layering, Coupling / Dead / Unused Code, Naming Conventions…&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Dependencies / Structure&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;As the name
&lt;i&gt;NDepend&lt;/i&gt; suggests, dependencies is a
major concern of the tool. CQL lets write all sorts of conventions about
which part of the code is allowed to use or not which other part. Suppose you
are in charge of writing conventions on &lt;b&gt;mscorlib&lt;/b&gt;
and you don’t want that the namespace &lt;b&gt;Microsoft.Win32&lt;/b&gt;
uses the namespace &lt;b&gt;System.Collections&lt;/b&gt;.
You just have to write the CQL rule:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;NAMESPACES&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsDirectlyUsing&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;System.Collections.Generic&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;NameIs&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;Microsoft.Win32&amp;quot;&lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;I hope that
the syntax is slick and concise enough to not require any additional comments.
The &lt;i&gt;VisualNDepend&lt;/i&gt; UI lets generate such a rule directly from the &lt;i&gt;Dependencies
Structure Matrix&lt;/i&gt;:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/CQLConventions_Dependencies.png"&gt;&lt;span&gt;&lt;img src="http://codebetter.com/blogs/patricksmacchia/CQLConventions_Dependencies.png" alt="" /&gt;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;From there,
you can write any constraints you can imagine in order to restrict (and thus
control) the evolution of the structure of your code base. For example the
following constraint warns if the assembly &lt;b&gt;Asm1&lt;/b&gt;
uses something else from the assembly &lt;b&gt;Asm2&lt;/b&gt;
than the class &lt;b&gt;MyNamespace.Foo&lt;/b&gt;:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TYPES FROM ASSEMBLIES &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;Asm2&amp;quot;&lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsDirectlyUsedBy&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;Asm1&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;!NameIs&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;MyNamespace.Foo&amp;quot;&lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;…and the
following rules warns if the class &lt;b&gt;MyNamespace.Foo&lt;/b&gt;
is used by a namespace which name doesn’t satisfy the regex ‘&lt;i&gt;begin with &lt;b&gt;MyNamespace.Internal&lt;/b&gt;&lt;/i&gt;’:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;NAMESPACES &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsDirectlyUsing&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;MyNamespace.Foo&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;!NameLike&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;^MyNamespace.Internal&amp;quot;&lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Related CQL
conditions: &lt;i&gt;IsDirectlyUsing&lt;/i&gt;, &lt;i&gt;IsDirectlyUsedBy&lt;/i&gt;, &lt;i&gt;NameIs&lt;/i&gt;, &lt;i&gt;FullNameIs&lt;/i&gt;, &lt;i&gt;NameLike&lt;/i&gt;, &lt;i&gt;FullNameLike&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on
this here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2007/11/26/keep-your-code-structure-clean.aspx" target="_blank"&gt;Keep your code structure clean&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2007/11/26/keep-your-code-structure-clean.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Quality / Metrics&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;CQL comes
with support for 80 code metrics + numerous facilities in &lt;i&gt;VisualNDepend&lt;/i&gt; to dig into abnormal values. Suppose that you don’t
want that a method have more than 25 &lt;a href="http://www.ndepend.com/Metrics.aspx#NbLinesOfCode" target="_blank"&gt;lines of code&lt;/a&gt;&lt;/span&gt;&lt;span&gt; except if it is a &lt;i&gt;Windows Form&lt;/i&gt; &lt;b&gt;InitializeComponent()&lt;/b&gt; generated method:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;NbLinesOfCode &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;25&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;!NameIs&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;InitializeComponent()&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Amongst
popular quality metrics supported by &lt;i&gt;NDepend&lt;/i&gt; let&amp;#39;s quote: &lt;a href="http://www.ndepend.com/Metrics.aspx#PercentageComment" target="_blank"&gt;&lt;i&gt;PercentageComment&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, &lt;a href="http://www.ndepend.com/Metrics.aspx#CC" target="_blank"&gt;&lt;i&gt;CyclomaticComplexity&lt;/i&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.ndepend.com/Metrics.aspx#CC"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;(computed from code source or &lt;a href="http://www.ndepend.com/Metrics.aspx#ILCC" target="_blank"&gt;IL&lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.ndepend.com/Metrics.aspx#ILCC"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;),&lt;span&gt;&amp;nbsp;
&lt;/span&gt;&lt;a href="http://www.ndepend.com/Metrics.aspx#ILNestingDepth" target="_blank"&gt;&lt;i&gt;IL Nesting Depth&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, &lt;a href="http://www.ndepend.com/Metrics.aspx#SizeOfInst" target="_blank"&gt;&lt;i&gt;Size of Instance&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, &lt;a href="http://www.ndepend.com/Metrics.aspx#NamespaceCe" target="_blank"&gt;&lt;i&gt;Efferent Coupling&lt;/i&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.ndepend.com/Metrics.aspx#NamespaceCe"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;…&lt;span&gt;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;The
exhaustive description of all metrics is available &lt;a href="http://www.ndepend.com/Metrics.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;a href="http://www.ndepend.com/Metrics.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Evolution / Changes&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;CQL can be
used to rule the diff between any 2 snapshots of a code base taken at
different points in time. In other words, one can continuously control the evolution of the
code. Suppose you want to avoid breaking changes such as a public
method in the older snapshot that doesn’t exist anymore in the newer snapshot:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsPublic &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;(&lt;span&gt;VisibilityWasChanged &lt;/span&gt;&lt;span style="color:blue;"&gt;OR &lt;/span&gt;&lt;span&gt;WasRemoved&lt;/span&gt;)&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on API
breaking changes rules here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/01/20/avoid-api-breaking-changes.aspx" target="_blank"&gt;Avoid API breaking changes&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/01/20/avoid-api-breaking-changes.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Mixing CQL code
changes conditions and other CQL conditions is a smart way to write rules that
should be applied only from a particular milestone. Suppose that from today,
all method refactored or added should have a cyclomatic complexity lower than
8:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;CyclomaticComplexity &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;8&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;(&lt;span&gt;CodeWasChanged &lt;/span&gt;&lt;span style="color:blue;"&gt;OR &lt;/span&gt;&lt;span&gt;WasAdded&lt;/span&gt;)&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on
this possibility here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/01/01/ensure-the-quality-of-the-code-that-will-be-developed-this-year.aspx" target="_blank"&gt;Ensure the quality of the code that will be developed
this year&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/01/01/ensure-the-quality-of-the-code-that-will-be-developed-this-year.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Related CQL
conditions: &lt;i&gt;WasAdded&lt;/i&gt;, &lt;i&gt;WasRemoved&lt;/i&gt;, &lt;i&gt;CodeWasChanged&lt;/i&gt;, &lt;i&gt;CommentsWereChanged&lt;/i&gt;,
&lt;i&gt;VisibilityWasChanged&lt;/i&gt;, &lt;i&gt;WasChanged&lt;/i&gt;, &lt;i&gt;BecameObsolete&lt;/i&gt;, &lt;i&gt;IsUsedRecently&lt;/i&gt;,
&lt;i&gt;IsNotUsedAnymore&lt;/i&gt;, &lt;i&gt;IsUsedDifferently&lt;/i&gt;, &lt;i&gt;IsInNewerBuild&lt;/i&gt;, &lt;i&gt;IsInOlderBuild&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Code Coverage by Tests&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span&gt;NDepend&lt;/span&gt;&lt;/i&gt;&lt;span&gt; can import code coverage metrics computed from
&lt;a href="http://www.ncover.com/" target="_blank"&gt;&lt;b&gt;NCover&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.ncover.com/"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; and &lt;a href="http://msdn.microsoft.com/fr-fr/teamsystem/default.aspx" target="_blank"&gt;&lt;b&gt;Microsoft Visual Studio Team System&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/teamsystem/default.aspx" target="_blank"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;. For example you can define an
attribute on types &lt;b&gt;YourNamespace.FullCoveredAttribute&lt;/b&gt;
and make sure that all types tagged with this attribute are and will remain
100% covered:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TYPES &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;PercentageCoverage &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;lt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;100&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;HasAttribute&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;YourNamespace.FullCoveredAttribute&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;You might
also want to make sure that code that was added or refactored since the last
released is 100% covered (a popular agile practice that so far, cannot be strictly
applied without CQL):&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;PercentageCoverage &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;lt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;100&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;(&lt;span&gt;CodeWasChanged
&lt;/span&gt;&lt;span style="color:blue;"&gt;OR &lt;/span&gt;&lt;span&gt;WasAdded&lt;/span&gt;)&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on
this here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/04/09/make-the-most-of-your-test-coverage-data.aspx" target="_blank"&gt;Make the most of your test coverage data&lt;/a&gt;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/04/09/make-the-most-of-your-test-coverage-data.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Related CQL
conditions: &lt;i&gt;PercentageCoverage&lt;/i&gt;, &lt;i&gt;PercentageBranchCoverage&lt;/i&gt;, &lt;i&gt;NbLinesOfCodeCovered&lt;/i&gt;, &lt;i&gt;NbLinesOfCodeNotCovered&lt;/i&gt;, &lt;i&gt;IsExcludedFromCoverage&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Purity / Side-Effects /
Immutability&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;One hot .NET
language topics actually is purity, meaning how / why / when states are changing at run-time. When states remain constants, there are no more side-effects and
as a result you can assert numerous cool things on your program, such as no
corrupted state in a multi-threaded environment. CQL lets write some conventions about the mutability. For example you can define an attribute on types &lt;b&gt;YourNamespace.ImmutableAttribute&lt;/b&gt; and
make sure that all types tagged with this attribute are immutable, meaning the
state of their instance objects won’t changed once created:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TYPES &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; !&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsImmutable &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;HasAttribute&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;YourNamespace.ImmutableAttribute&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;In the same
spirit, you might want to enforce that some methods are pure:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; (&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;ChangesObjectState &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;OR&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;ChangesTypeState&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;)&lt;span style="color:black;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;AND&lt;/span&gt;&lt;span style="color:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;HasAttribute&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;YourNamespace.PureAttribute&amp;quot;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;…or that all structure are immutable:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TYPES &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; !&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsImmutable &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsStructure&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;You can
also restrict write access to a particular field to certain methods:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsDirectlyWritingField&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;YourNamespace.YourClass.m_Field&amp;quot; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;!&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;FullNameIs &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;YourNamespace.YourClass.Method1()&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;!&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;FullNameIs &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;YourNamespace.YourClass.set_Field(Int32)&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on
this here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/04/09/make-the-most-of-your-test-coverage-data.aspx" target="_blank"&gt;Immutable Types:&lt;span&gt;&amp;nbsp; &lt;/span&gt;understand
their benefits and use them&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/04/09/make-the-most-of-your-test-coverage-data.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Related CQL
conditions: &lt;i&gt;ChangesObjectState&lt;/i&gt;, &lt;i&gt;ChangesTypeState&lt;/i&gt;, &lt;i&gt;IsImmutable&lt;/i&gt;, &lt;i&gt;IsWritingField&lt;/i&gt;,
&lt;i&gt;DepthOfIsWritingField&lt;/i&gt;, &lt;i&gt;IsDirectlyWritingField&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Optimal Encapsulation&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;CQL comes
with several conditions especially designed to pinpoint code elements not optimally
encapsulated, such as an internal methods that could be declared private without any compilation break:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsInternal &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;CouldBePrivate&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on
this here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2007/10/31/optimal-encapsulation.aspx" target="_blank"&gt;Optimal Encapsulation&lt;/a&gt;&lt;span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2007/10/31/optimal-encapsulation.aspx" target="_blank"&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2007/10/31/optimal-encapsulation.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Related CQL
conditions:&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;i&gt;CouldBeInternal&lt;/i&gt;, &lt;i&gt;CoulBeInternalProtected&lt;/i&gt;,&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;i&gt;CouldBeProtected&lt;/i&gt;,
&lt;i&gt;CouldBePrivate&lt;/i&gt;, &lt;i&gt;ShouldBePublic&lt;/i&gt;, &lt;i&gt;IsPublic&lt;/i&gt;,
&lt;i&gt;IsInternal&lt;/i&gt;, &lt;i&gt;IsProtected&lt;/i&gt;, &lt;i&gt;IsPrivate&lt;/i&gt;, &lt;i&gt;IsInternalAndProtected&lt;/i&gt;, &lt;i&gt;IsInternalOrProtected&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Coupling / Dead / Unused Code&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;With a bit
of astute, it is easy to write rules that detects &lt;i&gt;potentially&lt;/i&gt; dead code, i.e code that is not used anymore and that can
be safely removed. The word &lt;i&gt;potentially&lt;/i&gt; is used
here because a static analysis tool cannot mathematically detect the exact set of dead code
elements. The idea is to detect code elements with no afferent coupling,
meaning, not used anywhere in the code. We rely on the fact that the value of the metric &lt;i&gt;Ca&lt;/i&gt; (&lt;a href="http://www.ndepend.com/Metrics.aspx#MethodCa" target="_blank"&gt;Afferent Coupling&lt;/a&gt;) is equal to 0 in
such case. For example, to warn if some methods are potentially not used:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TOP&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-backgrou