<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://community.submain.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>SubMain Community</title><link>http://community.submain.com/blogs/default.aspx</link><description>A Support Community for &lt;a href="http://submain.com"&gt;SubMain&lt;/a&gt; Products</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>SubMain acquires Exact Magic's TestMatrix, CodeSpell and StudioTools</title><link>http://community.submain.com/blogs/news/archive/2010/03/08/submain-acquires-exactmagic-s-testmatrix-codespell-and-studiotools.aspx</link><pubDate>Tue, 09 Mar 2010 06:32:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:1144</guid><dc:creator>Serge B.</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;strong&gt;SubMain will continue development of TestMatrix, CodeSpell and StudioTools; adds to Code Quality developer tools Suite.&lt;/strong&gt; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Kirkland, WA, March 9, 2010&lt;/em&gt; - SubMain announced today that it has acquired TestMatrix, the popular Visual Studio .NET extension for unit testing and code coverage, as well as CodeSpell and StudioTools from Exact Magic Software.&lt;/p&gt;&lt;p&gt;&amp;quot;I&amp;#39;m happy to place TestMatrix and our other .NET products in the hands of SubMain,&amp;quot; says Duane Fields, Managing Partner at Exact Magic Software, the original owner and developer of TestMatrix. &amp;quot;Like their other acquisitions, SubMain will take good care of our TestMatrix and take it to the next level.&amp;quot;&lt;/p&gt;&lt;p&gt;&lt;a href="http://submain.com/testmatrix"&gt;TestMatrix&lt;/a&gt; (&lt;a href="http://submain.com/testmatrix"&gt;http://submain.com/testmatrix&lt;/a&gt;) adds support for unit testing, code coverage analysis, and test profiling to Visual Studio, seamlessly incorporating these critical development practices directly into the coding process itself; &lt;a href="http://submain.com/codespell"&gt;CodeSpell&lt;/a&gt; (&lt;a href="http://submain.com/codespell"&gt;http://submain.com/codespell&lt;/a&gt;) adds real-time, intelligent detection and correction of misspellings to Visual Studio; and &lt;a href="http://submain.com/studiotools"&gt;StudioTools&lt;/a&gt; (&lt;a href="http://submain.com/studiotools"&gt;http://submain.com/studiotools&lt;/a&gt;) is a rich collection of Visual Studio enhancements.&lt;/p&gt;&lt;p&gt;&amp;quot;TestMatrix has a well-deserved reputation for making test driven development painless and convenient by enabling unit testing tasks an integral part of the programming experience, not an occasional external exercise,&amp;quot; says Serge Baranovsky, President of SubMain. &amp;quot;It fits SubMain&amp;#39;s code quality tools line-up perfectly and we are proud to serve the .NET community by continuing the development of this valuable tool.&amp;quot;&lt;/p&gt;&lt;p&gt;SubMain has a track record for acquiring products, enhancing and integrating them in the product offering. Most recently, SubMain purchased GhostDoc and continues to improve and maintain it as a free tool for the .NET community.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;About SubMain&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SubMain, a Division of vbCity.com LLC, makes code quality tools for .NET developers. The company&amp;#39;s flagship product &lt;a href="http://submain.com/codeit.right"&gt;CodeIt.Right&lt;/a&gt; (&lt;a href="http://submain.com/codeit.right"&gt;http://submain.com/codeit.right&lt;/a&gt;) helps developers across the globe to follow team standards and best practices, improve code security and performance and find potential issues early in the development cycle. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;About Exact Magic Software, LLC&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Exact Magic Software, LLC specializes in building native applications for the Apple iPhone iPad, and iPod Touch. The company has shipped dozens of applications, but is best known for its top selling applications &lt;a href="http://www.exactmagic.com/products/weather-radar/"&gt;Weather Radar&lt;/a&gt;, &lt;a href="http://www2.exactmagic.com/products/business-phone-numbers/"&gt;Business Phone Numbers&lt;/a&gt;, and &lt;a href="http://www.exactmagic.com/products/infinite-maze/"&gt;Infinite Maze&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Media Contact&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Wendy Cavens&lt;br /&gt;Director of Marketing, SubMain&lt;br /&gt;Tel: 1(800) 936-2134&lt;br /&gt;Email: &lt;a href="mailto:wendyc@submain.com"&gt;wendyc@submain.com&lt;/a&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.submain.com/aggbug.aspx?PostID=1144" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/news/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/news/archive/tags/Press+Release/default.aspx">Press Release</category><category domain="http://community.submain.com/blogs/news/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/news/archive/tags/StudioTools/default.aspx">StudioTools</category><category domain="http://community.submain.com/blogs/news/archive/tags/CodeSpell/default.aspx">CodeSpell</category><category domain="http://community.submain.com/blogs/news/archive/tags/TestMatrix/default.aspx">TestMatrix</category></item><item><title>SubMain acquires Exact Magic's TestMatrix, CodeSpell and StudioTools</title><link>http://community.submain.com/blogs/submain/archive/2010/03/08/submain-acquires-exact-magic-s-testmatrix-codespell-and-studiotools.aspx</link><pubDate>Tue, 09 Mar 2010 00:03:02 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:1148</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>As announced earlier today we just closed the acquisition of the popular unti testing and code coverage product TestMatrix , as well as CodeSpell and StudioTools . We, SubMain, will continue to maintain and enhance these products. TestMatrix adds support for unit testing, code coverage analysis, and test profiling to Visual Studio, seamlessly incorporating these critical development practices directly into the coding process itself; CodeSpell adds real-time, intelligent detection and correction of...(&lt;a href="http://community.submain.com/blogs/submain/archive/2010/03/08/submain-acquires-exact-magic-s-testmatrix-codespell-and-studiotools.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=1148" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Releases/default.aspx">Releases</category><category domain="http://community.submain.com/blogs/submain/archive/tags/StudioTools/default.aspx">StudioTools</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeSpell/default.aspx">CodeSpell</category><category domain="http://community.submain.com/blogs/submain/archive/tags/TestMatrix/default.aspx">TestMatrix</category></item><item><title>Released: CodeIt.Right v1.9.10053</title><link>http://community.submain.com/blogs/submain/archive/2010/02/25/released-codeit-right-v1-9-10053.aspx</link><pubDate>Thu, 25 Feb 2010 16:31:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:1129</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>Today we released update for CodeIt.Right Standard and Enterprise Editions - v1.9.10053. As part of our 2010 Product Roadmap , this version changes include significantly improved performance, support for GlobalSuppressions, new rules and bug fixes. New in CodeIt.Right v1.9.10053: Major performance improvements throughout the rule base Added support for GlobalSuppressions - syntax is the same as the VSTS GlobalSuppressions file. This new feature is supported in both Standard and Enterprise editions....(&lt;a href="http://community.submain.com/blogs/submain/archive/2010/02/25/released-codeit-right-v1-9-10053.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=1129" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Rules/default.aspx">Rules</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Releases/default.aspx">Releases</category></item><item><title>2010 Product Roadmap</title><link>http://community.submain.com/blogs/submain/archive/2010/02/23/2010-product-roadmap.aspx</link><pubDate>Tue, 23 Feb 2010 09:13:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:1123</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>Code Quality developer tools is the direction we've been following since the introduction of CodeIt.Right and we are taking this commitment to the next level in 2010 with two new products and new features for our existing products. One of the new products to be released in 2010 will assist in unit testing, code coverage and test code profiling; the second new product will be complementary to CodeIt.Right. All three products together will comprise our new Code Quality Suite. Additionally, we will...(&lt;a href="http://community.submain.com/blogs/submain/archive/2010/02/23/2010-product-roadmap.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=1123" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Rules/default.aspx">Rules</category><category domain="http://community.submain.com/blogs/submain/archive/tags/GhostDoc/default.aspx">GhostDoc</category></item><item><title>How CodeIt.Right is better than FxCop?</title><link>http://community.submain.com/blogs/tutorials/archive/2010/02/03/how-codeit-right-is-better-than-fxcop.aspx</link><pubDate>Thu, 04 Feb 2010 06:52:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:1089</guid><dc:creator>Serge B.</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The biggest benefit of &lt;a href="http://submain.com/codeit.right"&gt;CodeIt.Right&lt;/a&gt; is the automatic code correction and refactoring to patterns. The alternative is you could manually spend hours or even days on some pesky violations rather CodeIt.Right do the work for you in a matter of minutes.&lt;/p&gt;  &lt;p&gt;You can also choose to follow Microsoft Guidelines or you own custom standards, group rule sets into profiles, generate your custom standard documentation, efficiently work with existing/legacy projects, avoid false positives.&lt;/p&gt;  &lt;p&gt;The Enterprise Edition adds Team features, Code Metrics, Statistics, enhanced reporting.&lt;/p&gt;  &lt;table cellpadding="2" cellspacing="0" class="thin_border" width="700"&gt;     &lt;tr&gt;       &lt;th width="25%"&gt;&amp;nbsp;&lt;/th&gt;        &lt;th width="40%"&gt;&lt;strong&gt;CodeIt.Right&lt;/strong&gt;&lt;/th&gt;        &lt;th width="35%"&gt;&lt;strong&gt;FxCop&lt;/strong&gt;&lt;/th&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="25%"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/td&gt;        &lt;td width="40%"&gt;Scans and analyzes source code&lt;/td&gt;        &lt;td width="35%"&gt;Runs on compiled assemblies (you have to compile code to use it)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Correction&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Corrects violations and code smells automatically&lt;/td&gt;        &lt;td&gt;N/A&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Refactoring to patterns&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Automatically implements and corrects most common coding patterns like Dispose/Finalize, ISerializable, Custom Serialization, etc&lt;/td&gt;        &lt;td&gt;N/A&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Visual Studio Integration&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Natively integrates into Visual Studio IDE; quick navigation to the violation source code; highlights modifications in the editor; safe Undo/Redo.&lt;/td&gt;        &lt;td&gt;Basic/Command line&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;ASP.NET&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;ASPX/ASCX/ASMX pages, in-page code, code behind source&lt;/td&gt;        &lt;td&gt;Only compiled code behind assemblies&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Local variables/constants&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Includes rules that are targeting local variables/constants and any data that is present in the source code&lt;/td&gt;        &lt;td&gt;Not possible in FxCop - the data is lost in the MSIL&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Follow your own standards&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Includes Microsoft Guidelines and best industry practices out of the box. Allows to define your own standard to follow - tweak the rule set to your needs without having to write custom rules (which is an option too). For example, go as crazy as enforce Hungarian naming conventions; or convert existing project with Hungarian notation to the new MS style conventions.&lt;/td&gt;        &lt;td&gt;Strictly enforces Microsoft Guidelines - inflexible and enforces the set with no options to configure&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Define custom rule set&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Profiles - configure multiple rule subsets and quickly switch between them. Share profiles between the Team members or (EE) push them to the Team.&lt;/td&gt;        &lt;td&gt;N/A&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Rule Instances&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Introduces Rule Instances - multiple instances of a single rule that are configured (via rule Properties) to your Team needs&lt;/td&gt;        &lt;td&gt;Only allows to turn off specific rule, cannot configure/tweak&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Reducing noise (false positives)&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;         &lt;ul&gt;           &lt;li&gt;Exclude violation in Project &lt;/li&gt;            &lt;li&gt;Exclude violation in source code &lt;/li&gt;            &lt;li&gt;Exclude Violation, Rule, File, Project &lt;/li&gt;            &lt;li&gt;Exclude code regions &lt;/li&gt;            &lt;li&gt;Custom Profiles &lt;/li&gt;            &lt;li&gt;Override default rule severity, target, scope, etc &lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;        &lt;td&gt;         &lt;ul&gt;           &lt;li&gt;Exclude violation in Project &lt;/li&gt;            &lt;li&gt;Exclude violation in source code &lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Severity Threshold&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Unique feature - Severity Threshold - allows to concentrate on most critical violations first and drill down from most severe issues to simple warnings.&lt;/td&gt;        &lt;td&gt;N/A&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;&lt;/strong&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;Scan entire solution, project, folder or individual file&lt;/td&gt;        &lt;td&gt;Scan projects only&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Create own guidelines documentation&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Generate Team Guidelines document within a mouse click, with description, code samples, etc - based on your custom configured Profile&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Team features&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;(EE) separate modules to (a) author / configure team standards and (b) run analysis and correction based on the team standard configured by Team Lead/Architect; publish and push (share) Team standard configuration to the Team members; Team usage statistics&lt;/td&gt;        &lt;td&gt;N/A&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Reporting&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Flexible reporting/pivot that can be exported and printed&lt;/td&gt;        &lt;td&gt;N/A&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Code Metrics&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Available (EE); can be exported, printed, emailed&lt;/td&gt;        &lt;td&gt;N/A&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Command line output&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Violations, Code Metrics (EE)&lt;/td&gt;        &lt;td&gt;Violations only&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Command line filtering&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Solution, Project, Profile, Severity Threshold&lt;/td&gt;        &lt;td&gt;Project, Assembly&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Command line delivery&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;File, Send via email&lt;/td&gt;        &lt;td&gt;File only&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Command line integration&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Command line tool, MsBuild and NAnt tasks&lt;/td&gt;        &lt;td&gt;Command line tool&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Update delivery&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;Rule Library auto-update - get new rules when we publish them&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;N/A&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;&lt;a href="http://submain.com/download/codeit.right/"&gt;Download&lt;/a&gt; trial copy of CodeIt.Right today and see the difference yourself!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.submain.com/aggbug.aspx?PostID=1089" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/tutorials/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/tutorials/archive/tags/FxCop/default.aspx">FxCop</category></item><item><title>XML Comment template: IntelliComment or XML Comment Stub?</title><link>http://community.submain.com/blogs/tutorials/archive/2010/01/28/xml-comment-template-intellicomment-or-xml-comment-stub.aspx</link><pubDate>Fri, 29 Jan 2010 00:39:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:1088</guid><dc:creator>Serge B.</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;One of the very helpful and important rules that we added in the past few months is the one that finds members that missing XML documents when these are required - &lt;em&gt;General&lt;/em&gt; / &lt;em&gt;Type, Member -&amp;gt; Should have XML comments&lt;/em&gt; (&lt;em&gt;Externally visible types and members should have XML comments&lt;/em&gt;). &lt;/p&gt;  &lt;p&gt;One of the most frequently asked question about the rule is why some users are not seeing the missing XML comment violation on select project. There are two possible reasons for that:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The rule will only trigger violation on &lt;em&gt;&lt;strong&gt;public&lt;/strong&gt;&lt;/em&gt; and &lt;strong&gt;&lt;em&gt;protected&lt;/em&gt;&lt;/strong&gt; members in its default configuration. If you choose to have it validate private and/or static members, you will need to edit the rule's &lt;strong&gt;Scope&lt;/strong&gt; property to include those as well. &lt;/li&gt;    &lt;li&gt;The option to generate XML documentation is turned OFF in&amp;#160; your project. In this case the rule doesn't the missing XML comment violation to reduce false positives since the project setting state it does not need XML documentation. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;To turn the option to generate documentation ON, in C# project, go to project &lt;strong&gt;Properties&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Build&lt;/strong&gt; -&amp;gt; &lt;strong&gt;XML documentation file&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="XMLComment1" border="0" alt="XMLComment1" src="http://community.submain.com/blogs/tutorials/XMLComment1_504EBB76.png" width="680" height="120" /&gt; &lt;/p&gt;  &lt;p&gt;In VB project, go to project &lt;strong&gt;Properties&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Compile&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Generate XML documentation file&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="XMLComment2" border="0" alt="XMLComment2" src="http://community.submain.com/blogs/tutorials/XMLComment2_360E5252.png" width="327" height="37" /&gt; &lt;/p&gt;  &lt;p&gt;In the spirit of CodeIt.Right the rule offers two automatic correction options - &lt;em&gt;IntelliComment&lt;/em&gt; and &lt;em&gt;XML Comment Stub&lt;/em&gt;. In the default configuration these are fairly similar, the difference is that IntelliComment will fill in the generated XML Comment using data from our GhostDoc engine, while the Stub template will create an empty XML Comment Stub.&lt;/p&gt;  &lt;p&gt;Here is example generated by IntelliComment template&lt;/p&gt;  &lt;pre style="overflow-x:auto;word-wrap:break-word;" class="code"&gt;    &lt;span style="color:gray;"&gt;/// &amp;lt;summary&amp;gt;
    /// &lt;/span&gt;&lt;span style="background:#ffff66;color:green;"&gt;Determines the size of the page buffer.&lt;/span&gt;
    &lt;span style="color:gray;"&gt;/// &amp;lt;/summary&amp;gt;
    /// &amp;lt;param name=&amp;quot;initialPageBufferSize&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="background:#ffff66;color:green;"&gt;Initial size of the page buffer.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;
    /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
    /// &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;
    &lt;/span&gt;&lt;span style="color:navy;"&gt;public int &lt;/span&gt;&lt;span style="color:maroon;"&gt;DeterminePageBufferSize&lt;/span&gt;(
                           &lt;span style="color:navy;"&gt;int &lt;/span&gt;&lt;span style="color:maroon;"&gt;initialPageBufferSize&lt;/span&gt;) {

        &lt;span style="color:green;"&gt;// Implement the method here
        &lt;/span&gt;&lt;span style="color:navy;"&gt;return 1&lt;/span&gt;;

    }&lt;/pre&gt;

&lt;p&gt;And example generated by XML Comment Stub template &lt;/p&gt;

&lt;pre style="overflow-x:auto;word-wrap:break-word;" class="code"&gt;    &lt;span style="color:gray;"&gt;/// &amp;lt;summary&amp;gt;
    /// &lt;span style="background:#ffff66;"&gt;&amp;#160;&lt;/span&gt;
    /// &amp;lt;/summary&amp;gt;
    /// &amp;lt;param name=&amp;quot;initialPageBufferSize&amp;quot;&amp;gt;&lt;span style="background:#ffff66;"&gt;&amp;#160;&lt;/span&gt;&amp;lt;/param&amp;gt;
    /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
    /// &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;
    &lt;/span&gt;&lt;span style="color:navy;"&gt;public int &lt;/span&gt;&lt;span style="color:maroon;"&gt;DeterminePageBufferSize&lt;/span&gt;(
                           &lt;span style="color:navy;"&gt;int &lt;/span&gt;&lt;span style="color:maroon;"&gt;initialPageBufferSize&lt;/span&gt;) {

        &lt;span style="color:green;"&gt;// Implement the method here
        &lt;/span&gt;&lt;span style="color:navy;"&gt;return 1&lt;/span&gt;;

    }&lt;/pre&gt;

&lt;p&gt;So, the rule offers two correction option - it is up to you to pick which template works best for your project.&lt;/p&gt;

&lt;p&gt;I notice that I keep using the word &amp;quot;template&amp;quot; when describing the two correction options. That is because these are true T4 templates that you can customize to fit your team requirements.&lt;/p&gt;

&lt;p&gt;Here is default IntelliComment template:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="overflow-x:auto;word-wrap:break-word;" class="code"&gt;&lt;span style="background:#ffff00;color:black;"&gt;&amp;lt;#@&lt;/span&gt; &lt;span style="color:maroon;"&gt;template &lt;/span&gt;&lt;span style="color:red;"&gt;language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;C#&amp;quot; &lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;
&lt;span style="background:#ffff00;"&gt;&amp;lt;#&lt;/span&gt;
    CodeElement codeElement = Context.CurrentCodeElement;
&lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span style="color:green;"&gt;/// &amp;lt;summary&amp;gt;
/// &lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#=&lt;/span&gt; codeElement.XmlComment.SummaryTagText &lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;    
&lt;/span&gt;&lt;span style="color:green;"&gt;/// &amp;lt;/summary&amp;gt;
&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#&lt;/span&gt;
    &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&lt;span style="color:black;"&gt;(codeElement.HasTypeParameters) 
    {
        &lt;/span&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt;&lt;span style="color:black;"&gt;(TypeParameter typeParameter &lt;/span&gt;&lt;span style="color:blue;"&gt;in &lt;/span&gt;&lt;span style="color:black;"&gt;codeElement.TypeParameters) {
&lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span style="color:green;"&gt;/// &amp;lt;typeparam name=&amp;quot;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#=&lt;/span&gt; typeParameter.Name &lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#=&lt;/span&gt; typeParameter.XmlComment.TypeParamTagText &lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;lt;/typeparam&amp;gt;
&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#&lt;/span&gt;
        }
    }
    
    &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&lt;span style="color:black;"&gt;(codeElement.HasParameters) 
    {
        &lt;/span&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt;&lt;span style="color:black;"&gt;(Parameter parameter &lt;/span&gt;&lt;span style="color:blue;"&gt;in &lt;/span&gt;&lt;span style="color:black;"&gt;codeElement.Parameters) {
&lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span style="color:green;"&gt;/// &amp;lt;param name=&amp;quot;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#=&lt;/span&gt; parameter.Name &lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#=&lt;/span&gt; parameter.XmlComment.ParaTagText &lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;lt;/param&amp;gt;
&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#&lt;/span&gt;
        }
    }
    
    &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&lt;span style="color:black;"&gt;(codeElement.HasReturnType) {
&lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span style="color:green;"&gt;/// &amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#=&lt;/span&gt; codeElement.XmlComment.ReturnsTagText &lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;lt;/returns&amp;gt;
&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#&lt;/span&gt;
    }
    
    &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&lt;span style="color:black;"&gt;(codeElement.IsProperty) {
&lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span style="color:green;"&gt;/// &amp;lt;value&amp;gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#=&lt;/span&gt; codeElement.XmlComment.ValueTagText &lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;lt;/value&amp;gt;
&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#&lt;/span&gt;
    }    
    
    &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&lt;span style="color:black;"&gt;(codeElement.IsMember) {
&lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span style="color:green;"&gt;/// &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;
&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    }    
&lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;As you can see it is very much self-explanatory and you can customize it to your needs. For example, in combination with the CodeIt.Right &lt;strong&gt;&lt;em&gt;Global Properties&lt;/em&gt;&lt;/strong&gt; feature, we can have &amp;lt;reviewed/&amp;gt; and &amp;lt;copyright/&amp;gt; data automatically when we add the following at the very end of the template:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="overflow-x:auto;word-wrap:break-word;" class="code"&gt;&lt;span style="color:black;"&gt;&lt;span style="color:green;"&gt;/// &amp;lt;reviewed&amp;gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#=&lt;/span&gt; Context.GetGlobalProperty(&lt;span style="color:brown;"&gt;&amp;quot;UserName&amp;quot;&lt;/span&gt;) &lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;lt;/reviewed&amp;gt;
&lt;span style="color:black;"&gt;&lt;span style="color:green;"&gt;/// &amp;lt;copyright&amp;gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#=&lt;/span&gt; Context.GetGlobalProperty(&lt;span style="color:brown;"&gt;&amp;quot;CompanyName&amp;quot;&lt;/span&gt;) &lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:green;"&gt; Copyright &lt;span style="color:black;"&gt;&lt;span style="background:#ffff00;"&gt;&amp;lt;#=&lt;/span&gt; System.DateTime.Now.Year.ToString() &lt;span style="background:#ffff00;"&gt;#&amp;gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;/copyright&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pretty powerful stuff, huh?&lt;/p&gt;&lt;img src="http://community.submain.com/aggbug.aspx?PostID=1088" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/tutorials/archive/tags/Tutorial/default.aspx">Tutorial</category><category domain="http://community.submain.com/blogs/tutorials/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/tutorials/archive/tags/Rules/default.aspx">Rules</category><category domain="http://community.submain.com/blogs/tutorials/archive/tags/GhostDoc/default.aspx">GhostDoc</category></item><item><title>Released: CodeIt.Right Enterprise v1.9.09355</title><link>http://community.submain.com/blogs/submain/archive/2009/12/22/released-codeit-right-enterprise-v1-9-09355.aspx</link><pubDate>Tue, 22 Dec 2009 22:55:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:1048</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>New version of CodeIt.Right Enterprise Edition - build 1.9.09355 - is available for download now. This version introduces new feature Merge Profiles that allows to compare and merge user configured profiles, enhances VSTS integration with the new "Add WorkItem" feature, adds command line version parameters and ability to load/unload CodeIt.Right in the menu and Add-In Manager. This update is free for all users who are current on their Software Assurance and Gold Support Subscription New in CodeIt.Right...(&lt;a href="http://community.submain.com/blogs/submain/archive/2009/12/22/released-codeit-right-enterprise-v1-9-09355.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=1048" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Rules/default.aspx">Rules</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Releases/default.aspx">Releases</category></item><item><title>5+1=3 or 10+1=6 Promotion - Save up to 50%!</title><link>http://community.submain.com/blogs/submain/archive/2009/12/14/5-1-3-or-10-1-6-promotion-save-up-to-50.aspx</link><pubDate>Mon, 14 Dec 2009 16:01:03 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:1034</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>1</slash:comments><description>For two weeks - December 15 to December 29th - we are running the best volume license promotion we have had to date! This promotion is aimed at small and medium businesses. 5+1=3 6 Standard Edition licenses for the price of 3: 5 user licenses + 1 server license + 1 Year maintenance subscription = $1050 Learn More » 10+1=6 11 Enterprise Edition licenses for the price of 6: 10 user licenses + 1 server license + 1 Year maintenance subscription = $4500 Learn More » Hurry and save money - this offer will...(&lt;a href="http://community.submain.com/blogs/submain/archive/2009/12/14/5-1-3-or-10-1-6-promotion-save-up-to-50.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=1034" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category></item><item><title>Tutorial: Extending Existing Rules</title><link>http://community.submain.com/blogs/tutorials/archive/2009/10/29/tutorial-extending-existing-rules.aspx</link><pubDate>Thu, 29 Oct 2009 08:05:52 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:964</guid><dc:creator>Serge B.</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;You already know how you can &lt;a href="http://community.submain.com/blogs/tutorials/archive/2008/03/16/tutorial-creating-custom-rules.aspx"&gt;create new custom rules using CodeIt.Right SDK&lt;/a&gt;, of not, you may want to read &lt;a href="http://community.submain.com/blogs/tutorials/archive/2008/03/16/tutorial-creating-custom-rules.aspx"&gt;this article&lt;/a&gt; first.&lt;/p&gt;  &lt;p&gt;In this tutorial we will show how to extend existing rules using the new SDK features &lt;a href="http://submain.com/blog/ReleasedCodeItRightVersion1809300NowCompatibleWithVS2010Beta2.aspx"&gt;introduced in CodeIt.Right v1.8.09300&lt;/a&gt;. The new technique is derive the custom rule from a base rule and override only the methods that need to be modified.&lt;/p&gt;  &lt;p&gt;Let's extend the rule &amp;quot;Avoid single line If statement&amp;quot; (RuleID: CD0002; base class &lt;em&gt;AvoidSingleLineIfStatement&lt;/em&gt;) in the Coding Style category:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.submain.com/blogs/tutorials/ExtendingRules1_4F50690D.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="ExtendingRules1" border="0" alt="ExtendingRules1" src="http://community.submain.com/blogs/tutorials/ExtendingRules1_thumb_6D4E7701.png" width="504" height="393" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The base rule above will trigger a violation when find a code pattern like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;div style="font-family:courier new;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (x &amp;gt; &lt;span style="color:maroon;"&gt;0&lt;/span&gt;) y = &lt;span style="color:maroon;"&gt;0&lt;/span&gt;;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;When the rule default correction action &amp;quot;Split &lt;b&gt;&lt;i&gt;If&lt;/i&gt;&lt;/b&gt; block into a multiline statement&amp;quot; is used it will modify the code into:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;div style="font-family:courier new;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (x &amp;gt; &lt;span style="color:maroon;"&gt;0&lt;/span&gt;)       &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; y = &lt;span style="color:maroon;"&gt;0&lt;/span&gt;;       &lt;br /&gt;}&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;That is what comes in the box. &lt;/p&gt;  &lt;p&gt;Our team may have an internal guideline that requires a single line conditional to be split into two lines without the squiggly brackets:&lt;/p&gt;  &lt;blockquote&gt;   &lt;div style="font-family:courier new;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (x &amp;gt; &lt;span style="color:maroon;"&gt;0&lt;/span&gt;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; y = &lt;span style="color:maroon;"&gt;0&lt;/span&gt;;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Hey, not all teams are created equal :)&lt;/p&gt;  &lt;p&gt;In this case correction option that comes with the base rule AvoidSingleLineIfStatement is not very useful and we need to extend the rule with our custom correction.&lt;/p&gt;  &lt;p&gt;So, let's start.&lt;/p&gt;  &lt;p&gt;We will skip the list of required referenced&amp;#160; assemblies - you will find them in the complete code sample at the end of the post.&lt;/p&gt;  &lt;p&gt;Declare new class that inherits from the base rule class:&lt;/p&gt;  &lt;div style="font-family:courier new;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; CustomRuleLibrary.CodingStyle&amp;#160; &lt;br /&gt;{&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Serializable]&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [ModificationDate(&lt;span style="color:maroon;"&gt;&amp;quot;10/14/2009&amp;quot;&lt;/span&gt;)]&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Category(&lt;span style="color:maroon;"&gt;&amp;quot;CustomRuleLibrary.CodingStyle&amp;quot;&lt;/span&gt;)]&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;class&lt;/span&gt; AvoidSingleLineIfStatement2 : AvoidSingleLineIfStatement&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; { &lt;/div&gt;  &lt;p&gt;In the code above we also set the Category attribute to &amp;quot;CustomRuleLibrary.CodingStyle&amp;quot; so we could easier find the custom in the Profile.&lt;/p&gt;  &lt;p&gt;We override ID property and use GUID for the new RuleID value. Some of the CodeIt.Right functions, for example, help pages are handled differently for custom rules. Using GUID for RuleID hits CodeIt.Right that the rule is custom.&lt;/p&gt;  &lt;div style="font-family:courier new;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;override&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;string&lt;/span&gt; ID&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;get&lt;/span&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Override the RuleID value with own GUID (recommended) &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;#160;&lt;span style="color:maroon;"&gt;&amp;quot;6C832235-0B02-4227-911A-156F0B1FAC71&amp;quot;&lt;/span&gt;;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;/div&gt;  &lt;p&gt;Property AutoCorrectionOptions needs to be overridden to add new correction action &amp;quot;Split &lt;strong&gt;&lt;em&gt;If&lt;/em&gt;&lt;/strong&gt; block into a multiline statement without block&amp;quot;:&lt;/p&gt;  &lt;div style="font-family:courier new;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;summary&amp;gt; &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &lt;font color="#008000"&gt;Returns list of auto correction options&lt;/font&gt;&amp;#160;&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;/summary&amp;gt; &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;override&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] AutoCorrectionOptions&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;get&lt;/span&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IMethodInfo methodInfo = Element &lt;span style="color:blue;"&gt;as&lt;/span&gt; IMethodInfo;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (methodInfo != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Get the base class list of available corrections &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt;[] baseOptions = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.AutoCorrectionOptions;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt;[] options = (&lt;span style="color:blue;"&gt;string&lt;/span&gt;[])Array.CreateInstance(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;), baseOptions.Length + &lt;span style="color:maroon;"&gt;1&lt;/span&gt;);&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Add new correction action to the list &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Array.Copy(baseOptions, &lt;span style="color:maroon;"&gt;0&lt;/span&gt;, options, &lt;span style="color:maroon;"&gt;0&lt;/span&gt;, baseOptions.Length);&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; options[options.Length - &lt;span style="color:maroon;"&gt;1&lt;/span&gt;] = &lt;span style="color:maroon;"&gt;&amp;quot;Split \&amp;quot;If\&amp;quot; block into a multiline statement without block&amp;quot;&lt;/span&gt;;&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; options;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] { };&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/div&gt;  &lt;p&gt;The base rule correction option:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="ExtendingRules2" border="0" alt="ExtendingRules2" src="http://community.submain.com/blogs/tutorials/ExtendingRules2_453BC7E2.png" width="480" height="44" /&gt;&lt;/p&gt;  &lt;p&gt;Our custom rule correction options with the new action added in the AutoCorrectionOptions above:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="ExtendingRules3" border="0" alt="ExtendingRules3" src="http://community.submain.com/blogs/tutorials/ExtendingRules3_2FDE127A.png" width="480" height="71" /&gt; &lt;/p&gt;  &lt;p&gt;Now we implement our new custom correction action just the way we like it to work:&lt;/p&gt;  &lt;div style="font-family:courier new;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;summary&amp;gt; &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &lt;font color="#008000"&gt;Implementation of our custom correction action&lt;/font&gt;&amp;#160; &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;/summary&amp;gt; &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;bool&lt;/span&gt; Correct_1(IElementInfo elementInfo)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IMethodInfo methodInfo = Element &lt;span style="color:blue;"&gt;as&lt;/span&gt; IMethodInfo;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (methodInfo != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; StatementCollection statements = RuleUtilities.GetMethodStatements(methodInfo);&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IStatement statement = SearchForSingleLineIfStatement(statements);&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (statement != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt; codeToInsertAfter = Environment.NewLine;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt; codeToInsertBefore = Environment.NewLine;&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IRegion ifBlockRegion = GetIfBlockRegion(statement);&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (ifBlockRegion != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt; ifBlockText = GetIfBlockText(statement, ifBlockRegion);&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (ifBlockText != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; methodInfo.ReplaceCodeBlock(ifBlockRegion,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; codeToInsertBefore + ifBlockText + codeToInsertAfter);&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;#160;&lt;span style="color:maroon;"&gt;true&lt;/span&gt;;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;#160;&lt;span style="color:maroon;"&gt;false&lt;/span&gt;;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/div&gt;  &lt;p&gt;And we tie it all together in the method Correct - for correction action with index 0 we execute the base rule correction and for the index 1 (that we added) execute method Correct_1 that implements our custom correction:&lt;/p&gt;  &lt;div style="font-family:courier new;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;summary&amp;gt; &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &lt;font color="#008000"&gt;Execute the specified correction action&lt;/font&gt;&amp;#160;&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;/summary&amp;gt; &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;param name=&amp;quot;correctionOptionIndex&amp;quot;&amp;gt;Index of the correction action&amp;lt;/param&amp;gt; &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;override&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;bool&lt;/span&gt; Correct(&lt;span style="color:blue;"&gt;int&lt;/span&gt; correctionOptionIndex)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;bool&lt;/span&gt; result = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Correct(correctionOptionIndex);&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;switch&lt;/span&gt; (correctionOptionIndex)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;case&lt;/span&gt;&amp;#160;&lt;span style="color:maroon;"&gt;0&lt;/span&gt;:&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// For correction action 0 execute the base class correction &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; result;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;case&lt;/span&gt;&amp;#160;&lt;span style="color:maroon;"&gt;1&lt;/span&gt;:&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// For correction action 1 execute our custom correction &lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; Correct_1(Element);&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;default&lt;/span&gt;:&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;break&lt;/span&gt;;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;#160;&lt;span style="color:maroon;"&gt;false&lt;/span&gt;;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/div&gt;  &lt;p&gt;And we are done! &lt;/p&gt;  &lt;p&gt;The final steps are to compile the new rule, drop the assembly to Program Files\SubMain\CodeIt.Right\Rules\ and we can now add the rule to a profile:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.submain.com/blogs/tutorials/ExtendingRules4_765B0282.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="ExtendingRules4" border="0" alt="ExtendingRules4" src="http://community.submain.com/blogs/tutorials/ExtendingRules4_thumb_5C1A995E.png" width="504" height="225" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Here is the complete code for our custom rule:&lt;/p&gt;  &lt;div style="font-family:courier new;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.IO;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Collections;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Collections.Specialized;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Runtime.Serialization;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Globalization;     &lt;br /&gt;    &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; SubMain.CodeObjectModel.Reflection;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; SubMain.Core.Services;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; SubMain.CodeItRight.Sdk;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; SubMain.CodeItRight.Sdk.Core.Collections;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; SubMain.CodeItRight.Sdk.Core.Reflection;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; SubMain.CodeItRight.Sdk.Core.Rules;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; SubMain.CodeItRight.Sdk.Core.Utils;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; SubMain.CodeItRight.Sdk.Rules;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; SubMain.CodeItRight.Sdk.Utils;     &lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; SubMain.CodeItRight.Rules.CodingStyle;     &lt;br /&gt;    &lt;br /&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; CustomRuleLibrary.CodingStyle     &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Serializable]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [ModificationDate(&lt;span style="color:maroon;"&gt;&amp;quot;10/14/2009&amp;quot;&lt;/span&gt;)]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Category(&lt;span style="color:maroon;"&gt;&amp;quot;CustomRuleLibrary.CodingStyle&amp;quot;&lt;/span&gt;)]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;class&lt;/span&gt; AvoidSingleLineIfStatement2 : AvoidSingleLineIfStatement     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &lt;font color="#008000"&gt;Returns list of auto correction options&lt;/font&gt;&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;override&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] AutoCorrectionOptions     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;get&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IMethodInfo methodInfo = Element &lt;span style="color:blue;"&gt;as&lt;/span&gt; IMethodInfo;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (methodInfo != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Get the base class list of available corrections &lt;/span&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt;[] baseOptions = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.AutoCorrectionOptions;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt;[] options = (&lt;span style="color:blue;"&gt;string&lt;/span&gt;[])Array.CreateInstance(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;), baseOptions.Length + &lt;span style="color:maroon;"&gt;1&lt;/span&gt;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Add new correction action to the list&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Array.Copy(baseOptions, &lt;span style="color:maroon;"&gt;0&lt;/span&gt;, options, &lt;span style="color:maroon;"&gt;0&lt;/span&gt;, baseOptions.Length);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; options[options.Length - &lt;span style="color:maroon;"&gt;1&lt;/span&gt;] = &lt;span style="color:maroon;"&gt;&amp;quot;Split \&amp;quot;If\&amp;quot; block into a multiline statement without block&amp;quot;&lt;/span&gt;;     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; options;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] { };     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &lt;font color="#008000"&gt;Implementation of our custom correction action&lt;/font&gt;&amp;#160;&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;bool&lt;/span&gt; Correct_1(IElementInfo elementInfo)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IMethodInfo methodInfo = Element &lt;span style="color:blue;"&gt;as&lt;/span&gt; IMethodInfo;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (methodInfo != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; StatementCollection statements = RuleUtilities.GetMethodStatements(methodInfo);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IStatement statement = SearchForSingleLineIfStatement(statements);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (statement != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt; codeToInsertAfter = Environment.NewLine;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt; codeToInsertBefore = Environment.NewLine;     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IRegion ifBlockRegion = GetIfBlockRegion(statement);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (ifBlockRegion != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt; ifBlockText = GetIfBlockText(statement, ifBlockRegion);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (ifBlockText != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; methodInfo.ReplaceCodeBlock(ifBlockRegion,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; codeToInsertBefore + ifBlockText + codeToInsertAfter);     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;#160;&lt;span style="color:maroon;"&gt;true&lt;/span&gt;;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;#160;&lt;span style="color:maroon;"&gt;false&lt;/span&gt;;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;override&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;string&lt;/span&gt; ID     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;get&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Override the RuleID value with own GUID (recommended)&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;#160;&lt;span style="color:maroon;"&gt;&amp;quot;6C832235-0B02-4227-911A-156F0B1FAC71&amp;quot;&lt;/span&gt;;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &lt;font color="#008000"&gt;Execute the specified correction action&lt;/font&gt;&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:gray;"&gt;/// &amp;lt;param name=&amp;quot;correctionOptionIndex&amp;quot;&amp;gt;Index of the correction action&amp;lt;/param&amp;gt;&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;override&lt;/span&gt;&amp;#160;&lt;span style="color:blue;"&gt;bool&lt;/span&gt; Correct(&lt;span style="color:blue;"&gt;int&lt;/span&gt; correctionOptionIndex)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;bool&lt;/span&gt; result = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Correct(correctionOptionIndex);     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;switch&lt;/span&gt; (correctionOptionIndex)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;case&lt;/span&gt;&amp;#160;&lt;span style="color:maroon;"&gt;0&lt;/span&gt;:     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// For correction action 0 execute the base class correction&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; result;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;case&lt;/span&gt;&amp;#160;&lt;span style="color:maroon;"&gt;1&lt;/span&gt;:     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// For correction action 1 execute our custom correction&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; Correct_1(Element);     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;default&lt;/span&gt;:     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;break&lt;/span&gt;;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;#160;&lt;span style="color:maroon;"&gt;false&lt;/span&gt;;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;}     &lt;br /&gt;&lt;/div&gt;&lt;img src="http://community.submain.com/aggbug.aspx?PostID=964" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/tutorials/archive/tags/SDK/default.aspx">SDK</category><category domain="http://community.submain.com/blogs/tutorials/archive/tags/Custom+Rules/default.aspx">Custom Rules</category><category domain="http://community.submain.com/blogs/tutorials/archive/tags/Tutorial/default.aspx">Tutorial</category><category domain="http://community.submain.com/blogs/tutorials/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category></item><item><title>Released: CodeIt.Right version 1.8.09300 - now compatible with VS2010 Beta 2!</title><link>http://community.submain.com/blogs/submain/archive/2009/10/27/released-codeit-right-version-1-8-09300-now-compatible-with-vs2010-beta-2.aspx</link><pubDate>Wed, 28 Oct 2009 01:57:01 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:963</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>Today we are releasing new version of CodeIt.Right - build 1.8.09300. This version features complete ASP.NET support, it is compatible with VS2010 Beta 2 (in addition to VS2008, VS2005, VS2003), Add Rule dialog improvements - "Hide Rules in the Profile" and "Quick Search", 10+ new rules including new category "CodingStyle". Those of you who are using CodeIt.Right with very large solutions may know of the memory limitation issue for the tools that live in the Visual Studio address space, aka "Out...(&lt;a href="http://community.submain.com/blogs/submain/archive/2009/10/27/released-codeit-right-version-1-8-09300-now-compatible-with-vs2010-beta-2.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=963" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Updates/default.aspx">Updates</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Rules/default.aspx">Rules</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Releases/default.aspx">Releases</category></item><item><title>How to Assign Visual Studio Shortcut for GhostDoc</title><link>http://community.submain.com/blogs/howto/archive/2009/07/01/how-to-assign-visual-studio-shortcut-for-ghostdoc.aspx</link><pubDate>Thu, 02 Jul 2009 00:03:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:829</guid><dc:creator>Serge B.</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Sometimes you may reset default GhostDoc shortcut in Visual Studio or want to assign your own custom shortcut.&lt;/p&gt;  &lt;p&gt;Here is how you do that:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="GhostDoc_Assign_Shortcut1_pub" border="0" alt="GhostDoc_Assign_Shortcut1_pub" src="http://community.submain.com/blogs/howto/GhostDoc_Assign_Shortcut1_pub_32A57EF2.png" width="652" height="390" /&gt; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In Visual Studio go to &lt;em&gt;Tools -&amp;gt; Options&lt;/em&gt;, then select &lt;em&gt;Environment -&amp;gt; Keyboard        &lt;br /&gt;&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;Filter commands by &amp;quot;GhostDoc&amp;quot; in the &lt;em&gt;Show commands containing&lt;/em&gt; text box       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Select &lt;strong&gt;Tools.SubMain.GhostDoc.DocumentThis&lt;/strong&gt; in the list       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Select &amp;quot;Text Editor&amp;quot; in the &lt;em&gt;Use new shortcut in&lt;/em&gt; drop down       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Choose the hotkey you want to invoke the &lt;strong&gt;DocumentThis&lt;/strong&gt; command (Ctrl+Shift+D in this example)       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Press &lt;em&gt;Assign&lt;/em&gt; and &lt;em&gt;OK&lt;/em&gt; to close the dialog and save. You are all set. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;While you are in the Options dialog you may want also assign shortcut to another less known but very useful GhostDoc command &lt;strong&gt;Rebuild Documentation&lt;/strong&gt;. This command will rebuild your existing XML comment using the changed signature information. &lt;em&gt;Be careful with this command though - it will reset your custom edited XML comment&lt;/em&gt;. In the example below we assigned command &lt;strong&gt;RebuildDocumentation&lt;/strong&gt; to sequence Ctrl+Shift+D, Ctrl+Shift+R&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="GhostDoc_Assign_Shortcut2_pub" border="0" alt="GhostDoc_Assign_Shortcut2_pub" src="http://community.submain.com/blogs/howto/GhostDoc_Assign_Shortcut2_pub_2DC2CB36.png" width="652" height="390" /&gt;&lt;/p&gt;&lt;img src="http://community.submain.com/aggbug.aspx?PostID=829" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/howto/archive/tags/Howto/default.aspx">Howto</category><category domain="http://community.submain.com/blogs/howto/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://community.submain.com/blogs/howto/archive/tags/GhostDoc/default.aspx">GhostDoc</category></item><item><title>SubMain acquires GhostDoc, releases new version, integrates it with CodeIt.Right</title><link>http://community.submain.com/blogs/submain/archive/2009/06/01/submain-acquires-ghostdoc-releases-new-version-integrates-it-with-codeit-right.aspx</link><pubDate>Mon, 01 Jun 2009 15:25:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:723</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>As announced earlier today we just closed the acquisition of the popular XML Comment helper tool GhostDoc. We, SubMain, will continue to evolve the tool and distribute it as a free product . We are also announcing today the availability of the new version of GhostDoc v2.5.09150 which improves the user setup experience, adds support for Visual Studio 2010 Beta 1 and full support for Visual Basic. Additionally, today we are making available a new version of CodeIt.Right (v1.6.09151) that adds the IntelliComment...(&lt;a href="http://community.submain.com/blogs/submain/archive/2009/06/01/submain-acquires-ghostdoc-releases-new-version-integrates-it-with-codeit-right.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=723" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Rules/default.aspx">Rules</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Releases/default.aspx">Releases</category><category domain="http://community.submain.com/blogs/submain/archive/tags/GhostDoc/default.aspx">GhostDoc</category></item><item><title>What's in the shop for GhostDoc?</title><link>http://community.submain.com/blogs/news/archive/2009/06/01/Whats-in-the-shop-for-GhostDoc.aspx</link><pubDate>Mon, 01 Jun 2009 07:25:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:720</guid><dc:creator>Serge B.</dc:creator><slash:comments>7</slash:comments><description>&lt;p&gt;SubMain Director of Marketing Wendy Cavens interviewed Serge Baranovsky and Roland Weigelt about the &lt;a href="http://community.submain.com/blogs/news/archive/2009/06/01/SubMain-acquires-GhostDoc.aspx"&gt;recent announcement of SubMain&amp;#39;s acquisition of GhostDoc&lt;/a&gt;, which the company will continue to offer as a free product.&lt;/p&gt;

&lt;p&gt;Roland Weigelt is working as a Software Developer at Comma Soft AG in Bonn, Germany. In his spare time he is the leader of the local .NET user group &amp;quot;Bonn-to-Code.Net&amp;quot; (pun intended) and also enjoys writing software as a hobby. Among his hobby projects is GhostDoc, one of the most popular tools for .NET developers.&lt;/p&gt;

&lt;p&gt;Serge Baranovsky is President of SubMain. He has extensive programming experience and is a recognized community leader and founder of vbCity Developer Community. Serge is a Microsoft MVP and ASP Insider.&lt;/p&gt;

&lt;dl&gt;

&lt;dt&gt;WendyC:&lt;/dt&gt;
&lt;dd&gt;&lt;em&gt;&amp;quot;To start with, please explain what is GhostDoc?&amp;quot;&lt;/em&gt;&lt;/dd&gt;
&lt;dt&gt;RolandW:&lt;/dt&gt;
&lt;dd&gt;&amp;quot;GhostDoc is a Visual Studio extension that generates XML documentation comments for methods and properties based on their type, parameters, name, and other contextual information. &amp;quot;&lt;/dd&gt;
&lt;dt&gt;SergeB:&lt;/dt&gt;
&lt;dd&gt;&amp;quot;What is also great about GhostDoc that when generating documentation for class derived from a base class or for interface implementation (e.g. .NET Framework or your custom framework), GhostDoc will use the documentation that Microsoft or the framework vendor has already written for the base class or interface.&amp;quot;&lt;/dd&gt;

&lt;dt&gt;WendyC:&lt;/dt&gt;
&lt;dd&gt;&lt;em&gt;&amp;quot;Roland, GhostDoc regularly made it on the lists of essential .NET developer tools, and was listed as #2 on &amp;quot;10 Must-Have Add-Ins&amp;quot; in MSDN Magazine. Please describe how you came up with the idea.&amp;quot;&lt;/em&gt;&lt;/dd&gt;
&lt;dt&gt;RolandW:&lt;/dt&gt;
&lt;dd&gt;&amp;quot;I&amp;#39;ve always stressed high importance of writing good API documentation for my code starting in my C programming years as a student in the early 90&amp;#39;s. For me this is also a check for the quality of a method - if I&amp;#39;m not able to explain in a few sentences what it does, there may be something wrong with the method to begin with.&lt;br /&gt;
&lt;br /&gt;
	With .NET and its long identifier naming style I often felt that writing this kind of documentation was a bit dull. Many times, in order to write an actually helpful piece of additional information, I first had to repeat in the summary almost exactly what the name of the method or property was already saying. One day in November 2003 I was so tired with documenting Boolean properties (&amp;quot;Gets or sets a value indicating whether ...&amp;quot;) that I wrote a macro to help me with some of the repetitive tasks.&lt;br /&gt;
&lt;br /&gt;
	What followed were a few half-hearted false starts to turn this into a more general tool, until the announcement of Roy Osherove&amp;#39;s Visual Studio Add-in competition in spring 2004 motivated me to turn my experiments into a fully-featured add-in that would be useful to others. In the end the hard work paid off; GhostDoc won the competition. Even though the feature set of GhostDoc 1.0 was limited (for instance, re-using existing documentation didn&amp;#39;t make it until version 1.3), it turned out to be a success almost immediately.&amp;quot;&lt;/dd&gt;

&lt;dt&gt;WendyC:&lt;/dt&gt;
&lt;dd&gt;&lt;em&gt;&amp;quot;What has your experience been since?&amp;quot;&lt;/em&gt;&lt;/dd&gt;
&lt;dt&gt;RolandW:&lt;/dt&gt;
&lt;dd&gt;&amp;quot;Working on GhostDoc has always been both rewarding and frustrating. Visual Studio Extensibility in general is not without problems and even though things got a bit better with each version of Visual Studio, there were many roadblocks that took a lot of time to circumvent.&lt;br /&gt;
&lt;br /&gt;
	On the other hand, it&amp;#39;s always amazing at conferences or user group meetings when people recognize my name, come up to me and tell me that GhostDoc is one of the first tools they install on a new developer machine. And last but not least I&amp;#39;m a GhostDoc user myself so I benefit from this tool everyday! &amp;quot;&lt;/dd&gt;

&lt;dt&gt;WendyC:&lt;/dt&gt;
&lt;dd&gt;&lt;em&gt;&amp;quot;How did this deal come about?&amp;quot;&lt;/em&gt;&lt;/dd&gt;
&lt;dt&gt;SergeB:&lt;/dt&gt;
&lt;dd&gt;&amp;quot;Our CodeIt.Right product has a feature that enforces XML Comments where required and automatically adds a comment stub. Some time ago I demoed this feature to Scott Hanselman and he suggested it would be great to integrate this with GhostDoc and have the comment content generated based on the name. So I contacted Roland, we met at the last PDC to discuss the integration options; one thing led to another and I offered to buy GhostDoc. That seemed to me like an easy way to integrate! &amp;quot;&lt;/dd&gt;
&lt;dt&gt;RolandW:&lt;/dt&gt;
&lt;dd&gt;&amp;quot;The offer from SubMain came at a crucial point of time when I had to make a decision on the future development of GhostDoc. Other activities besides GhostDoc were already eating up my spare time, and it was clear that going open source wouldn&amp;#39;t magically reduce my workload immediately.&lt;br /&gt;
&lt;br /&gt;
	Having full-time developers take GhostDoc to the next level seemed like the best solution. Serge and I were on the same page that a free-of-charge version of GhostDoc should be available in the future. From my experience of working with the people at SubMain in the recent weeks I can say that this was the right decision.&amp;quot;&lt;/dd&gt;

&lt;dt&gt;WendyC:&lt;/dt&gt;
&lt;dd&gt;&lt;em&gt;&amp;quot;Serge, what are the plans of how GhostDoc will evolve?&amp;quot;&lt;/em&gt;&lt;/dd&gt;
&lt;dt&gt;SergeB:&lt;/dt&gt;
&lt;dd&gt;&amp;quot;The future of GhostDoc starts today - we just released a new version of the tool with improved user setup experience, added support for Visual Studio 2010 Beta 1 and full support for Visual Basic. We also added IntelliComment feature to our CodeIt.Right product based on the GhostDoc algorithm - the version of this tool is also available today.&lt;br /&gt;
&lt;br /&gt;
	As for the future, you know, the usual product life stuff - bug fixing, feature enhancements. We have our own ideas and also are encouraging the community to give us feedback. &amp;quot;&lt;/dd&gt;

&lt;dt&gt;WendyC:&lt;/dt&gt;
&lt;dd&gt;&lt;em&gt;&amp;quot;Roland, will you continue to be involved with GhostDoc?&amp;quot;&lt;/em&gt;&lt;/dd&gt;
&lt;dt&gt;RolandW:&lt;/dt&gt;
&lt;dd&gt;&amp;quot;I will continue using GhostDoc both at work and at home every day; and I will definitely keep track of what the guys at SubMain are up to; and I will do what every GhostDoc user should do - swamp them with feature requests! &amp;quot;&lt;/dd&gt;
&lt;dt&gt;SergeB:&lt;/dt&gt;
&lt;dd&gt;&amp;quot;Over the last few weeks of the transition our team has enjoyed working with Roland and we look forward to his continued feedback. We also hope that the community at large will do so as well.&amp;quot;&lt;/dd&gt;

&lt;/dl&gt;&lt;img src="http://community.submain.com/aggbug.aspx?PostID=720" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/news/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/news/archive/tags/GhostDoc/default.aspx">GhostDoc</category></item><item><title>SubMain acquires GhostDoc</title><link>http://community.submain.com/blogs/news/archive/2009/06/01/SubMain-acquires-GhostDoc.aspx</link><pubDate>Mon, 01 Jun 2009 07:15:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:719</guid><dc:creator>Serge B.</dc:creator><slash:comments>4</slash:comments><description>&lt;h3&gt;SubMain maintains GhostDoc as a free tool for .NET developers; releases new version; seeks input from the community on product enhancements&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Kirkland, WA, June 1, 2009&lt;/em&gt; - An agreement between SubMain and Roland Weigelt, author of GhostDoc, will place future development of GhostDoc in the hands of SubMain.  &lt;a href="http://submain.com/ghostdoc"&gt;GhostDoc&lt;/a&gt; (&lt;a href="http://submain.com/ghostdoc"&gt;http://submain.com/ghostdoc&lt;/a&gt;) is the popular XML Comments and documentation helper tool which SubMain will continue to maintain as a free product.&lt;/p&gt;

&lt;p&gt;&amp;quot;I&amp;#39;m happy to transfer GhostDoc to SubMain,&amp;quot; says Roland. &amp;quot;SubMain has extensive experience with similar projects and can use their development team expertise to evolve the tool.&amp;quot;&lt;/p&gt;

&lt;p&gt;Serge Baranovsky, President of SubMain, understands the importance of GhostDoc to the .NET community and welcomes ideas on the product improvement.&lt;/p&gt;

&lt;p&gt;&amp;quot;We are very excited about taking over the future of an excellent tool such as GhostDoc,&amp;quot; says Serge. &amp;quot;We have great respect for what Roland has done. The tool is very easy to use and it just works! We are committed to maintaining this wonderful free tool; we welcome the community feedback and suggestions.&amp;quot;&lt;/p&gt;

&lt;p&gt;SubMain has a track record of supporting the development community:  publishing SmartOutline for .NET, the company&amp;#39;s own free development tool; a free 100+ page .NET Coding Guidelines eBook; vbCity.com, a VB and .NET developer community, which it founded 10 years ago; dev.net.ua, which it founded in the last 5 years, the premier Ukrainian .NET developer community; and VBFeeds, an aggregation service for Visual Basic related blogs and publications.&lt;/p&gt;

&lt;p&gt;SubMain would also like to announce today the &lt;a href="http://submain.com/blog/SubMainAcquiresGhostDocReleasesNewVersionIntegratesItWithCodeItRight.aspx"&gt;availability of the new version of GhostDoc (v2.5)&lt;/a&gt; which improves user setup experience, adds support for Visual Studio 2010 Beta 1 and full support for Visual Basic.&lt;/p&gt;

&lt;p&gt;Additionally, today SubMain is making available a new version of &lt;a href="http://submain.com/codeit.right"&gt;CodeIt.Right&lt;/a&gt; (&lt;a href="http://submain.com/codeit.right"&gt;http://submain.com/codeit.right&lt;/a&gt;) that adds IntelliComment feature based on the GhostDoc algorithm and offers improved and automated generation of XML Comments.&lt;/p&gt;

&lt;p&gt;For more on the agreement, please see the interview with Roland Weigelt and Serge Baranovsky - &lt;a href="http://submain.com/ghostdoc/future"&gt;What&amp;#39;s in the shop for GhostDoc?&lt;/a&gt; (&lt;a href="http://submain.com/ghostdoc/future"&gt;http://submain.com/ghostdoc/future&lt;/a&gt;)&lt;/p&gt;

&lt;h4&gt;About SubMain&lt;/h4&gt;

&lt;p&gt;SubMain, a Division of vbCity.com LLC, makes productivity tools for .NET developers. The company&amp;#39;s flagship product CodeIt.Right helps developers across the globe to follow team standards and best practices, improve code security and performance, find potential issues early in the development cycle. SubMain is a Microsoft Certified Partner.&lt;/p&gt;

&lt;h4&gt;Media Contact&lt;/h4&gt;
&lt;p&gt;
Wendy Cavens&lt;br /&gt;
Director of Marketing, SubMain&lt;br /&gt;
Tel: 1(800) 936-2134&lt;br /&gt;
Email: &lt;a href="mailto:wendyc@submain.com"&gt;wendyc@submain.com&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;&lt;img src="http://community.submain.com/aggbug.aspx?PostID=719" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/news/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/news/archive/tags/Press+Release/default.aspx">Press Release</category><category domain="http://community.submain.com/blogs/news/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/news/archive/tags/GhostDoc/default.aspx">GhostDoc</category></item><item><title>How to Backup and Restore Visual Studio settings</title><link>http://community.submain.com/blogs/howto/archive/2009/05/30/how-to-backup-and-restore-visual-studio-settings.aspx</link><pubDate>Sun, 31 May 2009 06:57:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:721</guid><dc:creator>Serge B.</dc:creator><slash:comments>2</slash:comments><description>
&lt;p&gt;If you need to preserve your Visual Studio settings, there is a tool built into VS that allows to backup and restore the settings. In this tutorial we are assuming that you are saving a copy of ALL settings to use by you personally as a backup.&lt;br /&gt;
&lt;/p&gt;
&lt;h4&gt;Make a backup&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;In Visual Studio use &lt;em&gt;Tools / Import and Export Settings&amp;hellip;&lt;/em&gt; menu to open&amp;nbsp; &lt;em&gt;Import and Export Settings Wizard&lt;/em&gt;.&lt;br /&gt;
&lt;img height="582" src="http://community.submain.com/files/Images/Tutorials/VSSettings-Export1.png" width="617" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;em&gt;Export selected environment settings&lt;/em&gt; and click &lt;em&gt;Next&lt;/em&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;To include ALL settings make sure the &lt;em&gt;All Settings&lt;/em&gt; box is checked. Then click &lt;em&gt;Next&lt;/em&gt;.&lt;br /&gt;
&lt;img src="http://community.submain.com/files/Images/Tutorials/VSSettings-Export2.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Choose the file name for the settings backup file.&lt;br /&gt;
&lt;img src="http://community.submain.com/files/Images/Tutorials/VSSettings-Export3.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Then click &lt;em&gt;Finish&lt;/em&gt;. The wizard will store settings in the file.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Restore from a backup&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Use &lt;em&gt;Tools / Import and Export Settings&amp;hellip;&lt;/em&gt; menu to open&amp;nbsp; &lt;em&gt;Import and Export Settings Wizard&lt;/em&gt;. &lt;br /&gt;
&lt;img src="http://community.submain.com/files/Images/Tutorials/VSSettings-Import1.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;em&gt;Export selected environment settings&lt;/em&gt; and click &lt;em&gt;Next&lt;/em&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Choose whether you want to make backup current settings.&lt;br /&gt;
&lt;img src="http://community.submain.com/files/Images/Tutorials/VSSettings-Import2.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Choose your backup and click &lt;em&gt;Next.&lt;br /&gt;
&lt;img src="http://community.submain.com/files/Images/Tutorials/VSSettings-Import3.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;To include ALL settings make sure the &lt;em&gt;All Settings&lt;/em&gt; box is checked. Then click &lt;em&gt;Finish.&lt;br /&gt;
&lt;img src="http://community.submain.com/files/Images/Tutorials/VSSettings-Import4.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;The wizard will restore settings from the backup.&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;&lt;img src="http://community.submain.com/aggbug.aspx?PostID=721" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/howto/archive/tags/Howto/default.aspx">Howto</category><category domain="http://community.submain.com/blogs/howto/archive/tags/Settings/default.aspx">Settings</category><category domain="http://community.submain.com/blogs/howto/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://community.submain.com/blogs/howto/archive/tags/GhostDoc/default.aspx">GhostDoc</category></item><item><title>Released: CodeIt.Right version 1.6.09139 - now fully compatible with VS2010 Beta 1!</title><link>http://community.submain.com/blogs/submain/archive/2009/05/19/released-codeit-right-version-1-6-09139-now-fully-compatible-with-vs2010-beta-1.aspx</link><pubDate>Tue, 19 May 2009 10:08:02 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:718</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>As you may know yesterday Microsoft released VS2010 Beta 1 to MSDN Subscribers. The Beta will also be publicly available for the rest of the world on Wednesday. This is long expected and very exciting new version of Visual Studio; and we here at SubMain are fully prepared to support the new shiny version! While some companies make a big deal posting screenshots of the upcoming VS2010 versions and announcing availability of previews for their products within a month, we at SubMain have been working...(&lt;a href="http://community.submain.com/blogs/submain/archive/2009/05/19/released-codeit-right-version-1-6-09139-now-fully-compatible-with-vs2010-beta-1.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=718" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Updates/default.aspx">Updates</category><category domain="http://community.submain.com/blogs/submain/archive/tags/NET/default.aspx">NET</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Rules/default.aspx">Rules</category><category domain="http://community.submain.com/blogs/submain/archive/tags/.NET/default.aspx">.NET</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Releases/default.aspx">Releases</category></item><item><title>CodeIt.Right reviewed on MSDN Toolbox</title><link>http://community.submain.com/blogs/submain/archive/2008/12/29/codeit-right-reviewed-on-msdn-toolbox.aspx</link><pubDate>Tue, 30 Dec 2008 00:08:44 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:694</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>With just a couple of days left this year, I wanted to share with you a great article in the MSDN Magazine Toolbox column this month on Improving Software Quality with Static Code Analysis Tools where MS MVP Scott Mitchell is reviewing Static Analysis Tools For .NET . Scott is comparing FxCop, StyleCop and CodeIt.Right: While FxCop and StyleCop pinpoint rule violations, the developer is still responsible for implementing these tools' suggestions. CodeIt.Right from SubMain takes static code analysis...(&lt;a href="http://community.submain.com/blogs/submain/archive/2008/12/29/codeit-right-reviewed-on-msdn-toolbox.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=694" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Reviews/default.aspx">Reviews</category></item><item><title>Released: CodeIt.Right version 1.2.08357</title><link>http://community.submain.com/blogs/submain/archive/2008/12/22/released-codeit-right-version-1-2-08357.aspx</link><pubDate>Mon, 22 Dec 2008 09:26:40 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:685</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>Just before the holiday we are releasing new version of CodeIt.Right - build 1.2.08357. Download version 1.2.08357 today! This release features addition of spell checking engine to CodeIt.Right SDK, workaround for the Out of Memory error on large solutions, 12 new rules and many bugs fixed. Please share your feedback in the forums especially on the new spell checking rules - we are still working and improving them. Note: The new spelling rules are included with the built-in profile but they are turned...(&lt;a href="http://community.submain.com/blogs/submain/archive/2008/12/22/released-codeit-right-version-1-2-08357.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=685" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Updates/default.aspx">Updates</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Rules/default.aspx">Rules</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Releases/default.aspx">Releases</category></item><item><title>PDC 2008 CodeIt.Right License giveaway!</title><link>http://community.submain.com/blogs/submain/archive/2008/10/22/pdc-2008-codeit-right-license-giveaway.aspx</link><pubDate>Wed, 22 Oct 2008 22:08:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:625</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>by Serge Baranovsky The best and the biggest MS developer conference Microsoft PDC 2008 edition is just few days away. We, of course, wouldn&amp;#39;t miss the great opportunity to meet and network with potentially 10000 developers. This year we will be giving away free CodeIt.Right licenses for those who manage to spot me in the crowd and talk to me about your favorite CodeIt.Right feature, what you don&amp;#39;t like about the product or help to prioritize the upcoming features. Or talk about what&amp;#39;s...(&lt;a href="http://community.submain.com/blogs/submain/archive/2008/10/22/pdc-2008-codeit-right-license-giveaway.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=625" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/General/default.aspx">General</category></item><item><title>Released: CodeIt.Right Build 1.1.08262</title><link>http://community.submain.com/blogs/submain/archive/2008/09/19/released-codeit-right-build-1-1-08262.aspx</link><pubDate>Fri, 19 Sep 2008 23:55:47 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:614</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>New version of CodeIt.Right is out! You can download build 1.1.08262 today. This is a major release even though we only added ".1" to the version. It includes .NET 3.5 support, Guidelines document template generation, option to analyze single file, enhanced SDK documentation, new rules, new command line version parameters and more. Please share your feedback in the forums . This update is free for all users who are current on their Software Assurance and Gold Support Subscription Major changes in...(&lt;a href="http://community.submain.com/blogs/submain/archive/2008/09/19/released-codeit-right-build-1-1-08262.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=614" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Updates/default.aspx">Updates</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Rules/default.aspx">Rules</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Releases/default.aspx">Releases</category></item><item><title>VSX DevCon and a very amusing incident with a kebab</title><link>http://community.submain.com/blogs/submain/archive/2008/09/18/vsx-devcon-and-a-very-amusing-incident-with-a-kebab.aspx</link><pubDate>Thu, 18 Sep 2008 22:42:40 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:613</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>by Serge Baranovsky Earlier this week I attended VSX DevCon on Microsoft campus where I learned quite a bit about the changes coming to the upcoming version of Visual Studio (Dev10) and its Extensibility Model. This was very important for us to be abreast of the future Microsoft releases and stay ahead of the game with our products. I twittered some of the event. It was fun conference too. I talked to many MS VSX folks, first time saw Rico Mariani talking (he is excellent!), met new people and old...(&lt;a href="http://community.submain.com/blogs/submain/archive/2008/09/18/vsx-devcon-and-a-very-amusing-incident-with-a-kebab.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=613" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/General/default.aspx">General</category></item><item><title>Released: PrettyCode.Print for .NET v2.0 Build 2.0.08242</title><link>http://community.submain.com/blogs/submain/archive/2008/08/29/released-prettycode-print-for-net-v2-0-build-2-0-08242.aspx</link><pubDate>Fri, 29 Aug 2008 22:43:50 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:605</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>As promised last week , new version of PrettyCode.Print for .NET is now available for download . The new version adds support for .NET Framework 3.5 and Visual Studio 2008 as well as many bug fixes since the last release. Although v2.0 (technically) marks a major version update, the upgrade is still free for current users. Here at SubMain we like to keep things simple :) Enjoy! More details at http://submain.com/pcp.net Download at http://submain.com/download Technorati Tags: PrettyCode.Print , PrettyCode...(&lt;a href="http://community.submain.com/blogs/submain/archive/2008/08/29/released-prettycode-print-for-net-v2-0-build-2-0-08242.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=605" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Updates/default.aspx">Updates</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Releases/default.aspx">Releases</category><category domain="http://community.submain.com/blogs/submain/archive/tags/PrettyCode.Print/default.aspx">PrettyCode.Print</category></item><item><title>Status update - new versions of CodeIt.Right and PrettyCode.Print for .NET are in the works</title><link>http://community.submain.com/blogs/submain/archive/2008/08/21/status-update-new-versions-of-codeit-right-and-prettycode-print-for-net-are-in-the-works.aspx</link><pubDate>Thu, 21 Aug 2008 18:28:58 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:601</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>A quick update - we've been a little quiet lately. That's because we are working on two updates - new version of PrettyCode.Print for .NET with .NET 3.5 and VS 2008 support as well as CodeIt.Right v1.1 - beta available here - http://tinyurl.com/cir11-beta PCP.NET will be available first week of September and CodeIt.Right v1.1 the following week. Technorati Tags: CodeIt.Right , Coding Guidelines , Naming Conventions , Best Practices , .NET , NET...(&lt;a href="http://community.submain.com/blogs/submain/archive/2008/08/21/status-update-new-versions-of-codeit-right-and-prettycode-print-for-net-are-in-the-works.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=601" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Updates/default.aspx">Updates</category><category domain="http://community.submain.com/blogs/submain/archive/tags/PrettyCode.Print/default.aspx">PrettyCode.Print</category></item><item><title>New v1.1 is on the way - download CodeIt.Right Beta build 1.1.08198</title><link>http://community.submain.com/blogs/submain/archive/2008/07/22/new-v1-1-is-on-the-way-download-codeit-right-beta-build-1-1-08198.aspx</link><pubDate>Tue, 22 Jul 2008 22:31:18 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:587</guid><dc:creator>SubMain.Blog()</dc:creator><slash:comments>0</slash:comments><description>by Serge Baranovsky New version of CodeIt.Right is almost out. We have a beta build 1.1.08198 for you today. Please download and give it a try, let us know what work and what doesn't. This is pretty big release that includes .NET 3.5 support, Guidelines document template generation, new command line version parameters and more. Please share your feedback in the forums . If you get an unhandled error dialog, please enter your email address so we could let you know when we resolved the issue or if...(&lt;a href="http://community.submain.com/blogs/submain/archive/2008/07/22/new-v1-1-is-on-the-way-download-codeit-right-beta-build-1-1-08198.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.submain.com/aggbug.aspx?PostID=587" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/submain/archive/tags/News/default.aspx">News</category><category domain="http://community.submain.com/blogs/submain/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Updates/default.aspx">Updates</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Beta/default.aspx">Beta</category><category domain="http://community.submain.com/blogs/submain/archive/tags/Rules/default.aspx">Rules</category></item><item><title>How to submit CodeIt.Right Log file to SubMain support</title><link>http://community.submain.com/blogs/howto/archive/2008/06/21/how-to-submit-codeit-right-log-file-to-submain-support.aspx</link><pubDate>Sun, 22 Jun 2008 05:43:00 GMT</pubDate><guid isPermaLink="false">e6092f25-edd1-48d7-b80f-8bdb13d630d6:560</guid><dc:creator>Serge B.</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;CodeIt.Right Log file contains detailed debug information that allows us to troubleshoot most every issue on you experience with the product.&lt;/p&gt;
&lt;p&gt;These are the steps to email the log file to us:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Visual Studio &lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;In the menu bar, click &lt;strong&gt;CodeIt.Right&lt;/strong&gt;, then click &lt;strong&gt;Help &amp;amp; Support&lt;/strong&gt;, and then click &lt;strong&gt;Email Log File&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://community.submain.com/photos/howto/images/559/original.aspx" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Attach file from the location in the email body - in the screenshot above is &amp;quot;&lt;span style="background-color:#ffff99;"&gt;C:\Users\sergeb\Documents\SubMain\CodeIt.Right for VS2008\CodeIt.Right.log&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click &lt;strong&gt;Send&lt;/strong&gt; to email the attached file to us.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;&lt;img src="http://community.submain.com/aggbug.aspx?PostID=560" width="1" height="1"&gt;</description><category domain="http://community.submain.com/blogs/howto/archive/tags/Howto/default.aspx">Howto</category><category domain="http://community.submain.com/blogs/howto/archive/tags/CodeIt.Right/default.aspx">CodeIt.Right</category><category domain="http://community.submain.com/blogs/howto/archive/tags/Support/default.aspx">Support</category></item></channel></rss>