<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.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>Desultory of an Architect - Christian Thilmany's Blog : Professional</title><link>http://blogs.msdn.com/christhi/archive/tags/Professional/default.aspx</link><description>Tags: Professional</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Bypassing Prompt using VSSConverter Utility When Converting From VSS to TFS</title><link>http://blogs.msdn.com/christhi/archive/2008/07/11/bypassing-prompt-using-vssconverter-utility-when-converting-from-vss-to-tfs.aspx</link><pubDate>Sat, 12 Jul 2008 06:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8722425</guid><dc:creator>Christian J. Thilmany</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/christhi/comments/8722425.aspx</comments><wfw:commentRss>http://blogs.msdn.com/christhi/commentrss.aspx?PostID=8722425</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;A href="http://www.epocalipse.com/blog/2006/04/05/vssconverter-tip/"&gt;&lt;FONT color=#0000ff&gt;http://www.epocalipse.com/blog/2006/04/05/vssconverter-tip/&lt;/FONT&gt;&lt;/A&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d; FONT-FAMILY: 'Verdana','sans-serif'"&gt;If you need to run &lt;A href="http://msdn2.microsoft.com/en-us/library/ms253090(VS.80).aspx"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;VSSConverter&lt;/SPAN&gt;&lt;/A&gt; (The command line utility to migrate SourceSafe projects to &lt;A href="http://msdn2.microsoft.com/en-US/library/ms181237(VS.80).aspx"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;Team Foundation Source Control&lt;/SPAN&gt;&lt;/A&gt; ) from a batch file and you don’t want the utility to prompt for the VSS admin password, you can set the environment variable SourceSCMPasswd to the admin password and set HATCONTESTING to “yes”&lt;BR&gt;&lt;BR&gt;vssconv.bat:&lt;BR&gt;set SourceSCMPasswd=VssPassword&lt;BR&gt;set HATCONTESTING=yes&lt;BR&gt;vssconverter.exe migrate settings.xml&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8722425" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/christhi/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.msdn.com/christhi/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://blogs.msdn.com/christhi/archive/tags/Professional/default.aspx">Professional</category></item><item><title>Third Party Security Code Analysis Options That Compliment VSTS 2008</title><link>http://blogs.msdn.com/christhi/archive/2008/07/11/third-party-security-code-analysis-options-that-compliment-vsts-2008.aspx</link><pubDate>Sat, 12 Jul 2008 05:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8722377</guid><dc:creator>Christian J. Thilmany</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/christhi/comments/8722377.aspx</comments><wfw:commentRss>http://blogs.msdn.com/christhi/commentrss.aspx?PostID=8722377</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=tahoma,arial,helvetica,sans-serif color=#000000&gt;These would be a good compliment to the general security code analysis in Team Developer won't&amp;nbsp;detect denial of service attacks and other more advanced security vunerabilities from the any GUI buffer so I've complied a list of tools that will...&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=tahoma,arial,helvetica,sans-serif color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=tahoma,arial,helvetica,sans-serif color=#000000&gt;&lt;A href="http://www.coverity.com/html/prevent-for-c-c++.html" mce_href="http://www.coverity.com/html/prevent-for-c-c++.html"&gt;http://www.coverity.com/html/prevent-for-c-c++.html&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.fortify.com/products/" mce_href="http://www.fortify.com/products/"&gt;http://www.fortify.com/products/&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.ouncelabs.com/resources/code-analysis-faq.asp" mce_href="http://www.ouncelabs.com/resources/code-analysis-faq.asp"&gt;http://www.ouncelabs.com/resources/code-analysis-faq.asp&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.spydynamics.com/" mce_href="http://www.spydynamics.com/"&gt;http://www.spydynamics.com/&lt;/A&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Tahoma color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=tahoma,arial,helvetica,sans-serif color=#000000&gt;These tools protect applications (also discussed in Michael Howard’s book) from things like the following:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=tahoma,arial,helvetica,sans-serif color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=tahoma,arial,helvetica,sans-serif color=#000000&gt;Unvalidated sources of input &lt;BR&gt;Use of unvalidated input &lt;BR&gt;Unvalidated output streams&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=tahoma,arial,helvetica,sans-serif color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=tahoma,arial,helvetica,sans-serif color=#000000&gt;Design flaws consist of insecure implementation of security mechanisms, and they include:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=tahoma,arial,helvetica,sans-serif color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=tahoma,arial,helvetica,sans-serif color=#000000&gt;Flawed authorization and access control&lt;BR&gt;Flawed authorization and session management&lt;BR&gt;Native code and buffer overflows&lt;BR&gt;Dynamic code&lt;BR&gt;Weak encryption&lt;BR&gt;Application configuration&lt;BR&gt;Denial of service&lt;BR&gt;Network communications&lt;BR&gt;Unsupported application interfaces&lt;BR&gt;Improper administrative and exception handling&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8722377" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/christhi/archive/tags/Professional/default.aspx">Professional</category><category domain="http://blogs.msdn.com/christhi/archive/tags/Developers/default.aspx">Developers</category><category domain="http://blogs.msdn.com/christhi/archive/tags/Team+Suite/default.aspx">Team Suite</category></item><item><title>Microsoft Support for Team Foundation Server with Non-MS Virtualized S/W </title><link>http://blogs.msdn.com/christhi/archive/2008/07/11/microsoft-support-for-team-foundation-server-with-non-ms-virtualized-s-w.aspx</link><pubDate>Sat, 12 Jul 2008 05:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8722369</guid><dc:creator>Christian J. Thilmany</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/christhi/comments/8722369.aspx</comments><wfw:commentRss>http://blogs.msdn.com/christhi/commentrss.aspx?PostID=8722369</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;If&amp;nbsp;anyone are curious about what Microsoft’s official support policy for TFS in a non-MS virtualized environment (e.g. VMWare, etc.) here it is.&amp;nbsp;&amp;nbsp; Key points hightlighted.&amp;nbsp; Basically having premier services makes this better but either way they may have to duplicate the issue in a non-virtualized environment to get support. &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;A href="http://support.microsoft.com/kb/897615/en-gb"&gt;&lt;FONT face=Calibri size=3&gt;http://support.microsoft.com/kb/897615/en-gb&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 8.5pt; COLOR: black; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Except as described in this article, &lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;Microsoft does not test or support Microsoft software running together with non-Microsoft hardware virtualization software. For Microsoft customers who do not have a Premier-level support agreement, Microsoft will require that the issue to be reproduced independently from the non-Microsoft hardware virtualization software.&lt;/SPAN&gt; Where the issue is confirmed to be unrelated to the non-Microsoft hardware virtualization software, Microsoft will support its software in a manner that is consistent with support provided when that software is not running together with non-Microsoft hardware virtualization software. &lt;BR&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;For Microsoft Premier-level support customers running non-Microsoft hardware virtualization software from vendors with which Microsoft does not have an established support relationship that covers virtualization solutions, Microsoft will use commercially reasonable efforts to investigate potential issues with Microsoft software running together with non-Microsoft hardware virtualization software.&lt;/SPAN&gt; As part of that investigation, Microsoft may require the issue to be reproduced independently from the non-Microsoft hardware virtualization software. Where issues are confirmed to be unrelated to the non-Microsoft hardware virtualization software, Microsoft will support its software in a manner that is consistent with support provided when that software is not running together with non-Microsoft hardware virtualization software. &lt;/SPAN&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8722369" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/christhi/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://blogs.msdn.com/christhi/archive/tags/ALM+and+Java/default.aspx">ALM and Java</category><category domain="http://blogs.msdn.com/christhi/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://blogs.msdn.com/christhi/archive/tags/Java+TFS/default.aspx">Java TFS</category><category domain="http://blogs.msdn.com/christhi/archive/tags/Professional/default.aspx">Professional</category><category domain="http://blogs.msdn.com/christhi/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Custom Code Analysis Rule (Updated for VS2008 Team Developer)</title><link>http://blogs.msdn.com/christhi/archive/2008/07/11/custom-code-analysis-rule-updated-for-vs2008-team-developer.aspx</link><pubDate>Sat, 12 Jul 2008 04:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8722353</guid><dc:creator>Christian J. Thilmany</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/christhi/comments/8722353.aspx</comments><wfw:commentRss>http://blogs.msdn.com/christhi/commentrss.aspx?PostID=8722353</wfw:commentRss><description>&lt;P&gt;Ok I took upon myself to update an old sample I had&amp;nbsp;for VSTS 2005 so it would run in&amp;nbsp;the new VSTS 2008 since some things have changed such as the required assemblies and classes&amp;nbsp;that are needed to build a custom code analsys rule for Team Developer.&amp;nbsp; Writing a custom code analysss rule is actually quite simple.&amp;nbsp; What makes it difficult is it is undocumented.&amp;nbsp; This will hopefully change in the Rosario time frame but until then hopefully this sample will get your going.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;You can download the source code here: &lt;A href="http://www.codeplex.com/almspecialisttoolkit/Release/ProjectReleases.aspx?ReleaseId=14315"&gt;http://www.codeplex.com/almspecialisttoolkit/Release/ProjectReleases.aspx?ReleaseId=14315&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;This sample is a very basic rule that checks for the word "pass" as a data member of a class (ignoring) case -- if it isn't obvious already it is simply trying to see you have a data member that could be construed as a password thus it will ask that you do something about it such as encrypt it.&amp;nbsp; Like I said simple!&amp;nbsp; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;Your job is&amp;nbsp;create new class for every&amp;nbsp;rule and add it to the sample project&amp;nbsp;I gave you.&amp;nbsp; I've already&amp;nbsp;given you one&amp;nbsp;called CustomSecurityRule.cs.&amp;nbsp; Once you have that you need to add the rule to a self describing xml file that will be an embedded resource in the assembly that will eventually be deployed to good ole VSTS 2008.&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;To add a new rule you add a rule element to the Rules.xml file as so....&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;This should be self explanatory once you open up the rules.xml file included in the project&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = v /&gt;&lt;v:shapetype id=_x0000_t75 path="m@4@5l@4@11@9@11@9@5xe" stroked="f" filled="f" o:preferrelative="t" o:spt="75" coordsize="21600,21600"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"&gt;&lt;/v:path&gt;&lt;o:lock aspectratio="t" v:ext="edit"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;?&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;xml&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;&lt;FONT color=#ff0000&gt;version&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;1.0&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;&lt;FONT color=#ff0000&gt;encoding&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;utf-8&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt; ?&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Rules&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;&lt;FONT color=#ff0000&gt;FriendlyName&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;Custom Security Rule&lt;/FONT&gt;&lt;/FONT&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Rule&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;&lt;FONT color=#ff0000&gt;TypeName&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;PossiblePasswordDisclosure&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;&lt;FONT color=#ff0000&gt;Category&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;Custom&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;&lt;FONT color=#ff0000&gt;CheckId&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;JS0001&lt;/FONT&gt;&lt;/FONT&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Name&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;Possible Password Disclosure&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Name&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Description&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;The field '{0}' in your application may be a password field and could be vulnerable to password disclosure if the value is visible and unencrypted.&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Description&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Url&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&amp;lt;/&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Url&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Resolution&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;If the field "'{0}'" is a password field, it should be protected through encryption and obfuscation.&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Resolution&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Resolution&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;&lt;FONT color=#ff0000&gt;Name&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;Prefix&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;If the field "'{0}'" is a password field, it should be protected through encryption and obfuscation.&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Resolution&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;MessageLevel&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;&lt;FONT color=#ff0000&gt;Certainty&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;95&lt;/FONT&gt;&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;Error&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;MessageLevel&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;FixCategories&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;NonBreaking&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;FixCategories&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Email&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&amp;lt;/&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Email&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Owner&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&amp;lt;/&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515&gt;Owner&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;/&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515 size=1&gt;Rule&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;lt;/&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;&lt;FONT color=#a31515 size=1&gt;Rules&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&amp;nbsp;&lt;/FONT&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face="Times New Roman"&gt;&lt;STRONG&gt;Figure 1.1&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Rules.xml file&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Now you can create your rule in code.&amp;nbsp; See the example rule classes in the project for reference.&amp;nbsp; I've created a class called &lt;EM&gt;BaseRule&lt;/EM&gt; that inherits from &lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&lt;EM&gt;BaseIntrospectionRule&lt;/EM&gt; that allows you to pass in a rule name either statically or through a constant.&amp;nbsp;&amp;nbsp;You simply have to inherit your rule class from &lt;EM&gt;BaseRule&lt;/EM&gt; such as the following:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;public class PossiblePasswordDisclosure : BaseRule {&lt;/EM&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;public PossiblePasswordDisclosure() : base("PossiblePasswordDisclosure") { }&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;public override ProblemCollection Check(Member m) {&amp;nbsp;&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;Field field = m as Field;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (field != null) {&lt;/EM&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;string name = field.Name.Name;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string uppername = name.ToUpper();&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (uppername.IndexOf("PASS") != -1 ) {&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Problems.Add(new Problem(GetResolution(name)));&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Problems;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT face="Times New Roman"&gt;&lt;STRONG&gt;Figure 1.2&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;Rule&lt;/SPAN&gt; Class&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Next, figure out what scope the new rule applies to since&amp;nbsp;it can apply&amp;nbsp;to several different levels&amp;nbsp;(e.g. &lt;EM&gt;Field, Property, Parameter, Method&lt;/EM&gt;, etc.)&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;For whatever levels your rule applies, override the appropriate &lt;STRONG&gt;&lt;EM&gt;Visit&lt;/EM&gt;&lt;/STRONG&gt; methods from the &lt;EM&gt;BaseIntrospectionRule&lt;/EM&gt; class.&amp;nbsp;&amp;nbsp;The &lt;EM&gt;BaseRule&lt;/EM&gt; class extends the &lt;EM&gt;BaseIntrospectionRule&lt;/EM&gt; class, which in turn extends&amp;nbsp;another class in the FxCop framework.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;There are over 140 Visit methods (we use the &lt;EM&gt;&lt;STRONG&gt;Check(Member m)&lt;/STRONG&gt;&lt;/EM&gt;&amp;nbsp;method) that the&amp;nbsp;base class calls during a rule check operation.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;What this means is that any Visit methods that are implemented in the new Rule class will be called by the rule framework.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;This&lt;/SPAN&gt; allows you&amp;nbsp;to&amp;nbsp;focus on the part of the code you care about e.g.&amp;nbsp;methods, or fields (such as our case), etc.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Finally, in order to trigger an error or warning to appear from a rule that has been broken, a call must be made to the &lt;EM&gt;BaseRule.AddProblem&lt;/EM&gt; method.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;In order to deploy the this rule, the &lt;EM&gt;CustomSecurityRule.dll&lt;/EM&gt; file must be copied to the &lt;EM&gt;C:\Program Files\Microsoft Visual Studio 9\Team Tools\Static Analysis Tools\FxCop\Rules&lt;/EM&gt; directory on each machine where the rules are to be run.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You can even have VStudio open when you deploy the rule - you simply need to re-open the project properties to see the rule in the rules list in the code analysis section.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Happy rule writing.....&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8722353" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/christhi/archive/tags/Professional/default.aspx">Professional</category><category domain="http://blogs.msdn.com/christhi/archive/tags/Developers/default.aspx">Developers</category></item><item><title>PDC Dates and Location Announced!!!</title><link>http://blogs.msdn.com/christhi/archive/2007/12/07/pdc-dates-and-location-announced.aspx</link><pubDate>Fri, 07 Dec 2007 20:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6695235</guid><dc:creator>Christian J. Thilmany</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/christhi/comments/6695235.aspx</comments><wfw:commentRss>http://blogs.msdn.com/christhi/commentrss.aspx?PostID=6695235</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 15pt 0in 7.5pt"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 15pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Save the Date!&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 3.75pt 0in 7.5pt"&gt;&lt;SPAN style="FONT-SIZE: 23pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Announcing PDC08&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 7.5pt 0in"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;October 27–30, 2008&lt;BR&gt;Pre-conference October 26, 2008&lt;BR&gt;Los Angeles, California&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 7.5pt 0in"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 7.5pt"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;OK, OK. We are delighted to announce the date and location of the next Microsoft Professional Developers Conference (PDC): October 27–30, 2008 at the Los Angeles Convention Center. PDC is the definitive Microsoft event for software developers and architects focused on the future of the Microsoft platform. Mark your calendars and save the date. More information coming soon.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;A href="http://msdn.microsoft.com/pdc2008"&gt;&lt;FONT face=Calibri size=3&gt;http://msdn.microsoft.com/pdc2008&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6695235" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/christhi/archive/tags/Conference/default.aspx">Conference</category><category domain="http://blogs.msdn.com/christhi/archive/tags/PDC/default.aspx">PDC</category><category domain="http://blogs.msdn.com/christhi/archive/tags/Professional/default.aspx">Professional</category><category domain="http://blogs.msdn.com/christhi/archive/tags/Developers/default.aspx">Developers</category></item></channel></rss>