<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>FxCop on Marko Apfel</title><link>http://blog.marko-apfel.de/tags/fxcop/</link><description>Recent content in FxCop on Marko Apfel</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sun, 20 Nov 2011 11:35:00 +0100</lastBuildDate><atom:link href="http://blog.marko-apfel.de/tags/fxcop/index.xml" rel="self" type="application/rss+xml"/><item><title>@Microsoft: please provide universal and professional concepts</title><link>http://blog.marko-apfel.de/posts/microsoft-please-provide-universal-and-professional-concepts/</link><pubDate>Sun, 20 Nov 2011 11:35:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/microsoft-please-provide-universal-and-professional-concepts/</guid><description>&lt;p&gt;Why such constructs are included in the &lt;code&gt;.csproj&lt;/code&gt;-Files?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;CodeAnalysisRuleSetDirectories&amp;gt;&lt;/span&gt;;c:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets&lt;span class="nt"&gt;&amp;lt;/CodeAnalysisRuleSetDirectories&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;CodeAnalysisRuleDirectories&amp;gt;&lt;/span&gt;;c:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules&lt;span class="nt"&gt;&amp;lt;/CodeAnalysisRuleDirectories&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So it every projects needs some manual steps to clean the project file so the solution could be build on a continuous integration server. That annoying!&lt;/p&gt;</description></item><item><title>Suppressing FxCop/Code Analysis warnings in Config.Designer.cs of Esri Addins</title><link>http://blog.marko-apfel.de/posts/suppressing-fxcop-code-analysis-warnings-in-config-designer-cs-of-esri-addins/</link><pubDate>Wed, 11 May 2011 13:35:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/suppressing-fxcop-code-analysis-warnings-in-config-designer-cs-of-esri-addins/</guid><description>&lt;p&gt;Addins in ArcGIS Desktop 10 uses tool generated code of the &lt;code&gt;Config.esriaddinx&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;Have a look at the properties you will see this tool – named &lt;code&gt;ArcGISAddInHostGenerator&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/suppressing-fxcop-code-analysis-warnings-in-config-designer-cs-of-esri-addins/ConfigEsriaddinx.CustomTool.png" alt="Screenshot for Suppressing FxCop/Code Analysis warnings in Config.Designer.cs of Esri Addins" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&lt;/p&gt;</description></item><item><title>Searching the new FxCop-Release (10.0)</title><link>http://blog.marko-apfel.de/posts/searching-the-new-fxcop-release-10-0/</link><pubDate>Mon, 05 Jul 2010 14:45:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/searching-the-new-fxcop-release-10-0/</guid><description>&lt;p&gt;Today my FxCop-GUI stated, that a new release is available – but the link to this release is broken.&lt;/p&gt;
&lt;p&gt;After googling a little bit i realized, that the new release of FxCop ist actually only included in “Windows SDK for Windows 7.1”.&lt;/p&gt;</description></item><item><title>My own set of SuppressMessage-lines</title><link>http://blog.marko-apfel.de/posts/my-own-set-of-suppressmessage-lines/</link><pubDate>Mon, 05 Jul 2010 10:35:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/my-own-set-of-suppressmessage-lines/</guid><description>&lt;h2 id="stylecop-issues"&gt;StyleCop issues&lt;/h2&gt;
&lt;h3 id="inheritedoc-comment"&gt;inheritedoc-comment&lt;/h3&gt;
&lt;p&gt;Using &lt;!-- raw HTML omitted --&gt;-comment is not recognized by StyleCop. So this needs a suppression:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// &amp;lt;inheritdoc /&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.StyleCop.CSharp.DocumentationRules&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;SA1604:ElementDocumentationMustHaveSummary&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;InheritDoc&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="fxcop-issues"&gt;FxCop issues&lt;/h2&gt;
&lt;h3 id="too-few-namespaces"&gt;Too few namespaces&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[module: SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Design&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1020:AvoidNamespacesWithFewTypes&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Scope = &amp;#34;namespace&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Target = &amp;#34;EsriDE.Core.Service.Logging&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;We want to have this namespace, but do not have enough classes to go in it right now to satisfy the rule.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="resharper-only-supports-non-static-test-methods"&gt;ReSharper only supports non static test methods&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Performance&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1822:MarkMembersAsStatic&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;ReSharper could not handle static test methods.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="no-strong-name"&gt;No strong name&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[assembly: SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Design&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA2210:AssembliesShouldHaveValidStrongNames&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Strong name is not needed for this.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="catching-general-exception"&gt;Catching general exception&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Design&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1031:DoNotCatchGeneralExceptionTypes&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;We do not know which exceptions could be thrown.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="justification-for-samples-and-fixtures"&gt;Justification for samples and fixtures&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;For fixtures this is OK.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="setter-but-no-getter-for-example-in-ioc-or-nhibernate-context"&gt;Setter but no Getter (for example in IoC or NHibernate-context)&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Usage&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA2227:CollectionPropertiesShouldBeReadOnly&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Setter is needed for nhibernate, otherwise a NHibernate.PropertyNotFoundException will be thrown.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Xyz&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;We only need a setter for setter injection.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="instantiation-with-ioc"&gt;Instantiation with IoC&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Performance&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1811:AvoidUncalledPrivateCode&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;We need this for unit tests.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Performance&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1812:AvoidUninstantiatedInternalClasses&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Class would be instantiated by IoC framework.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="incorrect-naming"&gt;Incorrect naming&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.StyleCop.CSharp.NamingRules&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;SA1310:FieldNamesMustNotContainUnderscore&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Windows message constants are commonly named as WM\_xxxxx&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="incorrect-casing"&gt;Incorrect casing&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[module: SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Naming&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1709:IdentifiersShouldBeCasedCorrectly&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Scope = &amp;#34;type&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Target = &amp;#34;EsriDE.Data.Access.IDbFactory&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; MessageId = &amp;#34;&amp;lt;WrongCasedWord&amp;gt;&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[module: SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Naming&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1709:IdentifiersShouldBeCasedCorrectly&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Scope = &amp;#34;type&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; MessageId = &amp;#34;&amp;lt;WrongCasedWord&amp;gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="parametername-should-match-base-declaration"&gt;Parametername should match base declaration&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Naming&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1725:ParameterNamesShouldMatchBaseDeclaration&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Rule CA1725 has a bug when inspecting parameters from methods from interfaces. So suppress it with class.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="throwing-applicationexception"&gt;Throwing ApplicationException&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Usage&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA2201:DoNotRaiseReservedExceptionTypes&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;ApplicationException is OK.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="fxcop-is-too-strict"&gt;FxCop is too strict&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Microsoft.XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;We decide that this is OK.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[module: SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Scope = &amp;#34;resource&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Target = &amp;#34;EsriDE.PipelineManagement.Core.Properties.Messages.resources&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; MessageId = &amp;#34;Toolbar&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;We decide that this is OK.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;This is by design.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="code-from-untaught-colleagues"&gt;Code from untaught colleagues&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Currently, we do not have enough knowledge or experience to fix this.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Cowboy-coding colleagues.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Specify a project-specific custom dictionary for FxCop build tasks and Visual Studio Team System static code analysis</title><link>http://blog.marko-apfel.de/posts/specify-a-project-specific-custom-dictionary-for-fxcop-build-tasks-and-visual-studio-team-system-static-code-analysis/</link><pubDate>Fri, 02 Jul 2010 11:27:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/specify-a-project-specific-custom-dictionary-for-fxcop-build-tasks-and-visual-studio-team-system-static-code-analysis/</guid><description>&lt;p&gt;Using a project-specific custom dictionary for &lt;em&gt;FxCop&lt;/em&gt; and &lt;em&gt;FxCop build tasks&lt;/em&gt; is very simple. The &lt;em&gt;FxCopCmd&lt;/em&gt; call in the &lt;em&gt;FxCop&lt;/em&gt;-target offers the parameter &lt;code&gt;/dictionary:&amp;lt;DictionaryName&amp;gt;&lt;/code&gt; for that.&lt;/p&gt;
&lt;p&gt;But for &lt;em&gt;Visual Studio&lt;/em&gt; a little bit more steps are needed. And these steps must me gone for all projects.&lt;/p&gt;</description></item><item><title>Specify a custom dictionary for FxCop and Visual Studio source analysis</title><link>http://blog.marko-apfel.de/posts/specify-a-custom-dictionary-for-fxcop-and-visual-studio-source-analysis/</link><pubDate>Tue, 11 May 2010 17:46:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/specify-a-custom-dictionary-for-fxcop-and-visual-studio-source-analysis/</guid><description>&lt;p&gt;Renaming the default custom dictionary from &lt;code&gt;CustomDictionary.xml&lt;/code&gt; to an other name – for instance &lt;code&gt;FxCop.CustomDictionary.xml&lt;/code&gt; needs some additional changes to work in involved applications.&lt;/p&gt;
&lt;h2 id="visual-studio-team-system-code-analysis"&gt;Visual Studio Team System code analysis&lt;/h2&gt;
&lt;p&gt;For Visual Studio Team System code analysis this file should be added as a link to all projects and set to be the Build Action CodeAnalysisDirectory.&lt;/p&gt;</description></item><item><title>Visual Studio 2005/2008 Code Analysis Error</title><link>http://blog.marko-apfel.de/posts/visual-studio-2005-2008-code-analysis-error/</link><pubDate>Thu, 26 Nov 2009 12:52:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/visual-studio-2005-2008-code-analysis-error/</guid><description>&lt;p&gt;After installing VS2005 TE on my machine (which previously runs Visual Studio 2008 TE) all mixed projects (VS2005/VS2008 compatibility with TargetFramework=2.0 and ToolsVersion=2.0 options) thrown an error during compilation:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;C:\Program Files\MSBuild\Microsoft\VisualStudio\v8.0\CodeAnalysis\Microsoft.CodeAnalysis.targets(46,4):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;error : In order to perform Code Analysis on managed binaries, MSBuild needs to launch FxCop.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MSBuild is unable to locate the FxCop binaries.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Make sure Visual Studio Team Edition for Software Developers or Visual Studio Team Suite is installed
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;and run MSBuild from within the &amp;#34;Visual Studio Command Prompt&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;or specify the path to FxCop by setting the FXCOPDIR environment variable.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Specifying the &lt;code&gt;FXCOPDIR&lt;/code&gt;-variable brings up the next obscure errors.&lt;/p&gt;</description></item><item><title>Using a custom dictionary in code analysis</title><link>http://blog.marko-apfel.de/posts/using-a-custom-dictionary-in-code-analysis/</link><pubDate>Wed, 11 Nov 2009 09:22:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/using-a-custom-dictionary-in-code-analysis/</guid><description>&lt;p&gt;see also &lt;a href="http://blog.marko-apfel.de/posts/working-with-microsoft-fxcop/"&gt;Working with Microsoft FxCop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As described in the previous post a custom dictionary could be referenced in a FxCop-call of a target by using the option:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/dictionary:&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;quot;$(ProjectDir)..\FxCop.CustomDictionary.xml&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;quot;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But how is it possible to publish this custom dictionary for the Visual Studio integrated code analysis?&lt;/p&gt;</description></item><item><title>Working with Microsoft FxCop</title><link>http://blog.marko-apfel.de/posts/working-with-microsoft-fxcop/</link><pubDate>Wed, 11 Nov 2009 09:06:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/working-with-microsoft-fxcop/</guid><description>&lt;h2 id="run-fxcop-as-a-post-build-event"&gt;Run FxCop as a post build event&lt;/h2&gt;
&lt;p&gt;Since FxCop 1.36 it is possible to include FxCop in a post-build event.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/working-with-microsoft-fxcop/developingtools-fxcop-01.png" alt="Screenshot for Working with Microsoft FxCop" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;So FxCop runs after compiling in Visual Studio and allows you directly jumping to the warned line.&lt;/p&gt;</description></item></channel></rss>