Jekyll2021-10-21T21:05:03+00:00http://www.finnangelo.com/feed.xmlJon Finn AngeloLooking at .Net, Tomfoolery and JapesSonarAnalyzer.CSharp and a monster GlobalSuppressions2021-05-11T00:00:00+00:002021-05-11T00:00:00+00:00http://www.finnangelo.com/sonarqube/dotnet/2021/05/11/SonarAnalyzer.CSharp-and-a-monster-GlobalSuppressions<p>I’ve been working with a new codebase and to ensure that it stays nice we are using <code class="language-plaintext highlighter-rouge">SonarAnalyser.CSharp</code> which is <em>frekkin’ awesome!</em></p>
<hr />
<h2 id="tldr">TL;DR</h2>
<ul>
<li><a href="#Links">Links</a></li>
<li><a href="#add-directorybuildprops-with-references-to-sonaranalysercsharp-and-the-shared-globalsupressionscs-file">Add <code class="language-plaintext highlighter-rouge">Directory.Build.props</code> with references to <code class="language-plaintext highlighter-rouge">SonarAnalyser.CSharp</code> and the shared <code class="language-plaintext highlighter-rouge">GlobalSupressions.cs</code> file</a></li>
<li><a href="#Generate-the-GlobalSupressionscs-file">Generate the <code class="language-plaintext highlighter-rouge">GlobalSupressions.cs</code> file</a></li>
<li><a href="#add-globalsupressioncs-file">Add <code class="language-plaintext highlighter-rouge">GlobalSupression.cs</code> file</a></li>
<li><a href="#Credits">Credits</a></li>
</ul>
<hr />
<h2 id="links">Links</h2>
<ul>
<li><a href="https://docs.sonarqube.org/latest/user-guide/rules/">SonarQube docs</a></li>
<li><a href="https://github.com/SonarSource">SonarSource Github repo</a></li>
<li><a href="https://rules.sonarsource.com/csharp">SonarSource csharp rules</a></li>
</ul>
<hr />
<h2 id="add-directorybuildprops-with-references-to-sonaranalysercsharp-and-the-shared-globalsupressionscs-file">Add <code class="language-plaintext highlighter-rouge">Directory.Build.props</code> with references to <code class="language-plaintext highlighter-rouge">SonarAnalyser.CSharp</code> and the shared <code class="language-plaintext highlighter-rouge">GlobalSupressions.cs</code> file</h2>
<p>Put this <code class="language-plaintext highlighter-rouge">Directory.Build.props</code> file in the same directory as the solution file</p>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><?xml version="1.0" encoding="utf-8"?></span>
<span class="nt"><Project></span>
<span class="c"><!-- Static Analysis --></span>
<span class="nt"><PropertyGroup></span>
<span class="nt"><TreatWarningsAsErrors></span>True<span class="nt"></TreatWarningsAsErrors></span>
<span class="nt"><WarningsAsErrors</span> <span class="nt">/></span>
<span class="nt"></PropertyGroup></span>
<span class="nt"><ItemGroup></span>
<span class="nt"><PackageReference</span> <span class="na">Include=</span><span class="s">"SonarAnalyzer.CSharp"</span> <span class="na">Version=</span><span class="s">"8.22.0.31243"</span><span class="nt">></span>
<span class="nt"><PrivateAssets></span>all<span class="nt"></PrivateAssets></span>
<span class="nt"><IncludeAssets></span>runtime; build; native; contentfiles; analyzers; buildtransitive<span class="nt"></IncludeAssets></span>
<span class="nt"></PackageReference></span>
<span class="nt"><Compile</span> <span class="na">Include=</span><span class="s">"$(SolutionDir)/GlobalSuppressions.cs"</span> <span class="na">Link=</span><span class="s">"GlobalSuppressions.cs"</span> <span class="nt">/></span>
<span class="nt"></ItemGroup></span>
<span class="nt"></Project></span>
</code></pre></div></div>
<hr />
<h2 id="generate-the-globalsupressionscs-file">Generate the <code class="language-plaintext highlighter-rouge">GlobalSupressions.cs</code> file</h2>
<p>I generated the code for the <code class="language-plaintext highlighter-rouge">GlobalSupressions.cs</code> file from the <a href="https://github.com/SonarSource/sonar-dotnet/blob/master/analyzers/src/SonarAnalyzer.CSharp/RspecStrings.resx">SonarAnalyzer.CSharp resource strings on GitHub</a>…<br />
Only a crazy person would have done that manually!</p>
<p>TBH, its a bit rougher than my usual code, but theoretically it should only be run once… 😆</p>
<p>TODO: Add a filter so only the rules that are currently being broken are suppressed; the broken rules are found in the build output - I put it into Notepad++ and do a search for <code class="language-plaintext highlighter-rouge">error: s</code></p>
<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">using</span> <span class="nn">System</span><span class="p">;</span>
<span class="k">using</span> <span class="nn">System.IO</span><span class="p">;</span>
<span class="k">using</span> <span class="nn">System.Linq</span><span class="p">;</span>
<span class="k">using</span> <span class="nn">System.Text.RegularExpressions</span><span class="p">;</span>
<span class="k">using</span> <span class="nn">System.Xml.Linq</span><span class="p">;</span>
<span class="k">namespace</span> <span class="nn">TrashMe.MakeSionarAnalyserSuppressions</span>
<span class="p">{</span>
<span class="k">static</span> <span class="k">class</span> <span class="nc">Program</span>
<span class="p">{</span>
<span class="k">private</span> <span class="k">const</span> <span class="kt">string</span> <span class="n">SOLUTION_DIR</span> <span class="p">=</span> <span class="s">@"C:\Path\To\My\SonarSource\"</span><span class="p">;</span>
<span class="k">static</span> <span class="k">void</span> <span class="nf">Main</span><span class="p">(</span><span class="kt">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
<span class="p">{</span>
<span class="kt">string</span> <span class="n">xmlString</span> <span class="p">=</span> <span class="n">File</span><span class="p">.</span><span class="nf">ReadAllText</span><span class="p">(</span><span class="n">SOLUTION_DIR</span> <span class="p">+</span> <span class="s">"RspecStrings.resx"</span><span class="p">);</span>
<span class="n">XDocument</span> <span class="n">XDoc</span> <span class="p">=</span> <span class="n">XDocument</span><span class="p">.</span><span class="nf">Parse</span><span class="p">(</span><span class="n">xmlString</span><span class="p">);</span>
<span class="kt">var</span> <span class="n">descriptionNodes</span> <span class="p">=</span> <span class="p">(</span>
<span class="k">from</span> <span class="n">xEl</span> <span class="k">in</span> <span class="n">XDoc</span><span class="p">.</span><span class="nf">Descendants</span><span class="p">(</span><span class="s">"data"</span><span class="p">)</span>
<span class="k">where</span> <span class="n">xEl</span><span class="p">.</span><span class="n">FirstAttribute</span><span class="p">.</span><span class="n">Value</span><span class="p">.</span><span class="nf">EndsWith</span><span class="p">(</span><span class="s">"_Description"</span><span class="p">)</span>
<span class="k">select</span> <span class="k">new</span>
<span class="p">{</span>
<span class="n">CheckId</span> <span class="p">=</span> <span class="n">xEl</span><span class="p">.</span><span class="n">FirstAttribute</span><span class="p">.</span><span class="n">Value</span><span class="p">.</span><span class="nf">Replace</span><span class="p">(</span><span class="s">"_Description"</span><span class="p">,</span> <span class="kt">string</span><span class="p">.</span><span class="n">Empty</span><span class="p">).</span><span class="nf">Trim</span><span class="p">(),</span>
<span class="n">Description</span> <span class="p">=</span> <span class="n">Regex</span><span class="p">.</span><span class="nf">Replace</span><span class="p">(</span>
<span class="n">xEl</span><span class="p">.</span><span class="n">Value</span><span class="p">.</span><span class="nf">Substring</span><span class="p">(</span><span class="m">0</span><span class="p">,</span> <span class="n">Math</span><span class="p">.</span><span class="nf">Min</span><span class="p">(</span><span class="n">xEl</span><span class="p">.</span><span class="n">Value</span><span class="p">.</span><span class="n">Length</span><span class="p">,</span> <span class="m">150</span><span class="p">)),</span>
<span class="s">@"\p{C}+"</span><span class="p">,</span>
<span class="kt">string</span><span class="p">.</span><span class="n">Empty</span>
<span class="p">).</span><span class="nf">Replace</span><span class="p">(</span><span class="s">@""""</span><span class="p">,</span> <span class="s">@"\"""</span><span class="p">)</span>
<span class="p">.</span><span class="nf">Trim</span><span class="p">(),</span>
<span class="n">xEl</span>
<span class="p">}</span>
<span class="p">).</span><span class="nf">ToList</span><span class="p">();</span>
<span class="kt">var</span> <span class="n">categoryNodes</span> <span class="p">=</span> <span class="p">(</span>
<span class="k">from</span> <span class="n">xEl</span> <span class="k">in</span> <span class="n">XDoc</span><span class="p">.</span><span class="nf">Descendants</span><span class="p">(</span><span class="s">"data"</span><span class="p">)</span>
<span class="k">where</span> <span class="n">xEl</span><span class="p">.</span><span class="n">FirstAttribute</span><span class="p">.</span><span class="n">Value</span><span class="p">.</span><span class="nf">EndsWith</span><span class="p">(</span><span class="s">"_Category"</span><span class="p">)</span>
<span class="k">select</span> <span class="k">new</span>
<span class="p">{</span>
<span class="n">CheckId</span> <span class="p">=</span> <span class="n">xEl</span><span class="p">.</span><span class="n">FirstAttribute</span><span class="p">.</span><span class="n">Value</span><span class="p">.</span><span class="nf">Replace</span><span class="p">(</span><span class="s">"_Category"</span><span class="p">,</span> <span class="kt">string</span><span class="p">.</span><span class="n">Empty</span><span class="p">).</span><span class="nf">Trim</span><span class="p">(),</span>
<span class="n">Category</span> <span class="p">=</span> <span class="n">xEl</span><span class="p">.</span><span class="n">Value</span><span class="p">.</span><span class="nf">Trim</span><span class="p">(),</span>
<span class="n">xEl</span>
<span class="p">}</span>
<span class="p">).</span><span class="nf">ToList</span><span class="p">();</span>
<span class="kt">var</span> <span class="n">typeNodes</span> <span class="p">=</span> <span class="p">(</span>
<span class="k">from</span> <span class="n">xEl</span> <span class="k">in</span> <span class="n">XDoc</span><span class="p">.</span><span class="nf">Descendants</span><span class="p">(</span><span class="s">"data"</span><span class="p">)</span>
<span class="k">where</span> <span class="n">xEl</span><span class="p">.</span><span class="n">FirstAttribute</span><span class="p">.</span><span class="n">Value</span><span class="p">.</span><span class="nf">EndsWith</span><span class="p">(</span><span class="s">"_Type"</span><span class="p">)</span>
<span class="k">select</span> <span class="k">new</span>
<span class="p">{</span>
<span class="n">CheckId</span> <span class="p">=</span> <span class="n">xEl</span><span class="p">.</span><span class="n">FirstAttribute</span><span class="p">.</span><span class="n">Value</span><span class="p">.</span><span class="nf">Replace</span><span class="p">(</span><span class="s">"_Type"</span><span class="p">,</span> <span class="kt">string</span><span class="p">.</span><span class="n">Empty</span><span class="p">).</span><span class="nf">Trim</span><span class="p">(),</span>
<span class="n">Type</span> <span class="p">=</span> <span class="n">xEl</span><span class="p">.</span><span class="n">Value</span><span class="p">.</span><span class="nf">Trim</span><span class="p">(),</span>
<span class="n">xEl</span>
<span class="p">}</span>
<span class="p">).</span><span class="nf">ToList</span><span class="p">();</span>
<span class="kt">var</span> <span class="n">resultNodes</span> <span class="p">=</span>
<span class="k">from</span> <span class="n">d</span> <span class="k">in</span> <span class="n">descriptionNodes</span>
<span class="k">join</span> <span class="n">c</span> <span class="k">in</span> <span class="n">categoryNodes</span>
<span class="k">on</span> <span class="n">d</span><span class="p">.</span><span class="n">CheckId</span> <span class="k">equals</span> <span class="n">c</span><span class="p">.</span><span class="n">CheckId</span>
<span class="k">join</span> <span class="n">t</span> <span class="k">in</span> <span class="n">typeNodes</span>
<span class="k">on</span> <span class="n">d</span><span class="p">.</span><span class="n">CheckId</span> <span class="k">equals</span> <span class="n">t</span><span class="p">.</span><span class="n">CheckId</span>
<span class="k">orderby</span> <span class="n">t</span><span class="p">.</span><span class="n">Type</span><span class="p">,</span> <span class="n">c</span><span class="p">.</span><span class="n">Category</span><span class="p">,</span> <span class="n">d</span><span class="p">.</span><span class="n">CheckId</span><span class="p">,</span> <span class="n">d</span><span class="p">.</span><span class="n">Description</span>
<span class="k">select</span> <span class="k">new</span>
<span class="p">{</span>
<span class="n">c</span><span class="p">.</span><span class="n">Category</span><span class="p">,</span>
<span class="n">d</span><span class="p">.</span><span class="n">CheckId</span><span class="p">,</span>
<span class="n">d</span><span class="p">.</span><span class="n">Description</span><span class="p">,</span>
<span class="n">Suppression</span> <span class="p">=</span> <span class="s">$"[assembly: SuppressMessage(\"</span><span class="p">{</span><span class="n">c</span><span class="p">.</span><span class="n">Category</span><span class="p">}</span><span class="s">\", \"</span><span class="p">{</span><span class="n">d</span><span class="p">.</span><span class="n">CheckId</span><span class="p">}</span><span class="s">: </span><span class="p">{</span><span class="n">d</span><span class="p">.</span><span class="n">Description</span><span class="p">}</span><span class="s">\", Justification = \"<Pending>\")]"</span>
<span class="p">};</span>
<span class="kt">var</span> <span class="n">result</span> <span class="p">=</span> <span class="kt">string</span><span class="p">.</span><span class="nf">Join</span><span class="p">(</span>
<span class="n">Environment</span><span class="p">.</span><span class="n">NewLine</span><span class="p">,</span>
<span class="n">resultNodes</span><span class="p">.</span><span class="nf">Select</span><span class="p">(</span><span class="n">r</span> <span class="p">=></span> <span class="n">r</span><span class="p">.</span><span class="n">Suppression</span><span class="p">)</span>
<span class="p">);</span>
<span class="n">Console</span><span class="p">.</span><span class="nf">WriteLine</span><span class="p">(</span><span class="n">result</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
<hr />
<h2 id="add-globalsupressioncs-file">Add <code class="language-plaintext highlighter-rouge">GlobalSupression.cs</code> file</h2>
<p>Put this monster <code class="language-plaintext highlighter-rouge">GlobalSupression.cs</code> file in the same directory as the solution file</p>
<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// This file is used by Code Analysis to maintain SuppressMessage</span>
<span class="c1">// attributes that are applied to this project.</span>
<span class="c1">// Project-level suppressions either have no target or are given</span>
<span class="c1">// a specific target and scoped to a namespace, type, member, etc.</span>
<span class="k">using</span> <span class="nn">System.Diagnostics.CodeAnalysis</span><span class="p">;</span>
<span class="err">```</span><span class="n">csharp</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Bug"</span><span class="p">,</span> <span class="s">"S1048: If Finalize or an override of Finalize throws an exception, and the runtime is not hosted by an application that overrides the default policy, th"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Bug"</span><span class="p">,</span> <span class="s">"S2190: Recursion happens when control enters a loop that has no exit. This can happen a method invokes itself, when a pair of methods invoke each other,"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Bug"</span><span class="p">,</span> <span class="s">"S2275: Because composite format strings are interpreted at runtime, rather than validated by the compiler, they can contain errors that lead to unexpect"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Bug"</span><span class="p">,</span> <span class="s">"S2857: Badly formed SQL is likely to cause errors at runtime."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Bug"</span><span class="p">,</span> <span class="s">"S2930: When writing managed code, you don't need to worry about allocating or freeing memory: The garbage collector takes care of it. For efficiency rea"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Bug"</span><span class="p">,</span> <span class="s">"S2931: An IDisposable object should be disposed (there are some rare exceptions where not disposing is fine, most notably Task). If a class has an IDisp"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Bug"</span><span class="p">,</span> <span class="s">"S3464: Recursion is acceptable in methods, where you can break out of it. But with class types, you end up with code that will compile but not run if yo"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Bug"</span><span class="p">,</span> <span class="s">"S3693: It may be a good idea to raise an exception in a constructor if you're unable to fully flesh the object in question, but not in an exception cons"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Bug"</span><span class="p">,</span> <span class="s">"S3869: Not surprisingly, the SafeHandle.DangerousGetHandle method is dangerous. That's because it may not return a valid handle. Using it can lead to le"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Bug"</span><span class="p">,</span> <span class="s">"S3889: Thread.Suspend and Thread.Resume can give unpredictable results, and both methods have been deprecated. Indeed, if Thread.Suspend is not used ver"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Bug"</span><span class="p">,</span> <span class="s">"S4159: In the Attributed Programming Model, the ExportAttribute declares that a part \"exports\", or provides to the composition container, an object that"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Bug"</span><span class="p">,</span> <span class="s">"S2551: Shared resources should not be used for locking as it increases the chance of deadlocks. Any other thread could acquire (or attempt to acquire) t"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Bug"</span><span class="p">,</span> <span class="s">"S2952: It is possible in an IDisposable to call Dispose on class members from any method, but the contract of Dispose is that it will clean up all unman"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Bug"</span><span class="p">,</span> <span class="s">"S3449: Numbers can be shifted with the << and >> operators, but the right operand of the operation needs to be an int or a type that has an implicit con"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Bug"</span><span class="p">,</span> <span class="s">"S4275: Properties provide a way to enforce encapsulation by providing public, protected or internal methods that give controlled access to private field"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Bug"</span><span class="p">,</span> <span class="s">"S4277: Marking a class with PartCreationPolicy(CreationPolicy.Shared), which is part of Managed Extensibility Framework (MEF), means that a single, shar"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Bug"</span><span class="p">,</span> <span class="s">"S4583: Calling the BeginInvoke method of a delegate will allocate some resources that are only freed-up when EndInvoke is called. This is why you should"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Bug"</span><span class="p">,</span> <span class="s">"S4586: Returning null from a non-async Task/Task<T> method will cause a NullReferenceException at runtime. This problem can be avoided by returning Task"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S1145: if statements with conditions that are always false have the effect of making blocks of code non-functional. if statements with conditions that a"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S1244: Floating point math is imprecise because of the challenges of storing such values in a binary representation. Even worse, floating point math is"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S1656: There is no reason to re-assign a variable to itself. Either this statement is redundant and should be removed, or the re-assignment is a mistake"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S1697: When either the equality operator in a null test or the logical operator that follows it is reversed, the code has the appearance of safely null-"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S1751: A loop with at most one iteration is equivalent to the use of an if statement to conditionally execute one piece of code. If the initial intentio"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S1764: Using the same value on either side of a binary operator is almost always a mistake. In the case of logical operators, it is either a copy/paste"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S1848: There is no good reason to create a new object to not do anything with it. Most of the time, this is due to a missing piece of code and so could"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S1862: A chain of if/else if statements is evaluated from top to bottom. At most, only one branch will be executed: the first one with a condition that"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2114: Passing a collection as an argument to the collection's own method is either an error - some other argument was intended - or simply nonsensical"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2123: A value that is incremented or decremented and then not stored is at best wasted code and at worst a bug."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2201: When the call to a function doesn't have any side effects, what is the point of making the call if the results are ignored? In such case, either"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2225: Calling ToString() on an object should always return a string. Returning null instead contravenes the method's implicit contract."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2251: A for loop with a counter that moves in the wrong direction is not an infinite loop. Because of wraparound, the loop will eventually reach its st"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2252: If a for loop's condition is false before the first loop iteration, the loop will never be executed. Such loops are almost always bugs, particula"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2259: A reference to null should never be dereferenced/accessed. Doing so will cause a NullReferenceException to be thrown. At best, such an exception"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2583: Conditional expressions which are always true or false can lead to dead code. Such code is always buggy and should never be used in production."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2688: NaN is not equal to anything, even itself. Testing for equality or inequality against NaN will yield predictable results, but probably not the on"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2757: The use of operators pairs ( =+, =- or =! ) where the reversed, single operator was meant (+=, -= or !=) will compile and run, but not produce th"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2758: When the second and third operands of a ternary operator are the same, the operator will always return the same value regardless of the condition"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2761: Calling the ! or ~ prefix operator twice does nothing: the second invocation undoes the first. Such mistakes are typically caused by accidentally"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2995: Using Object.ReferenceEquals to compare the references of two value types simply won't return the expected results most of the time because such"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2996: When an object has a field annotated with ThreadStatic, that field is shared within a given thread, but unique across threads. Since a class' sta"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S2997: Typically you want to use using to create a local IDisposable variable; it will trigger disposal of the object when control passes out of the blo"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3005: When a non-static class field is annotated with ThreadStatic, the code seems to show that the field can have different values for different calli"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3168: An async method with a void return type is a \"fire and forget\" method best reserved for event handlers because there's no way to wait for the met"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3172: In C#, delegates can be added together to chain their execution, and subtracted to remove their execution from the chain."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3244: It is possible to subscribe to events with anonymous delegates, but having done so, it is impossible to unsubscribe from them. That's because the"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3249: Making a base call in an overriding method is generally a good idea, but not in GetHashCode and Equals for classes that directly extend object be"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3263: Static field initializers are executed in the order in which they appear in the class from top to bottom. Thus, placing a static field in a class"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3343: Caller information attributes (CallerFilePathAttribute, CallerLineNumberAttribute, and CallerMemberNameAttribute) provide a way to get informatio"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3346: An assertion is a piece of code that's used during development when the compilation debug mode is activated. It allows a program to check itself"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3453: A class with only private constructors can't be instantiated, thus, it seems to be pointless code."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3466: Generally, writing the least code that will readably do the job is a good thing, so omitting default parameter values seems to make sense. Unfort"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3598: When declaring a Windows Communication Foundation (WCF) OperationContract method one-way, that service method won't return any result, not even a"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3603: Marking a method with the Pure attribute specifies that the method doesn't make any visible changes; thus, the method should return a result, oth"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3610: Calling GetType() on a nullable object returns the underlying value type. Thus, comparing the returned Type object to typeof(Nullable<SomeType>)"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3655: Nullable value types can hold either a value or null. The value held in the nullable type can be accessed with the Value property, but .Value thr"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3903: Types are declared in namespaces in order to prevent name collisions and as a way to organize them into the object hierarchy. Types that are defi"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3923: Having all branches in a switch or if chain with the same implementation is an error. Either a copy-paste error was made and something different"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3926: Fields marked with System.Runtime.Serialization.OptionalFieldAttribute are serialized just like any other field. But such fields are ignored on d"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3927: Serialization event handlers that don't have the correct signature will simply not be called, thus bypassing any attempts to augment the automate"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3949: Numbers are infinite, but the types that hold them are not. Each numeric type has hard upper and lower bounds. Try to calculate or assign numbers"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3981: The size of a collection and the length of an array are always greater than or equal to zero. So testing that a size or length is greater than or"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S3984: Creating a new Exception without actually throwing it is useless and is probably due to a mistake."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S4143: It is highly suspicious when a value is saved for a key or index and then unconditionally overwritten. Such replacements are likely errors."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S4210: When an assembly uses Windows Forms (classes and interfaces from the System.Windows.Forms namespace) its entry point should be marked with the ST"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S4260: When creating a custom Markup Extension that accepts parameters in WPF, the ConstructorArgument markup must be used to identify the discrete prop"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Bug"</span><span class="p">,</span> <span class="s">"S4428: The PartCreationPolicyAttribute attribute, which is part of the Managed Extensibility Framework (MEF), is used to specify how the exported object"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S1206: There is a contract between Equals(object) and GetHashCode(): If two objects are equal according to the Equals(object) method, then calling GetHa"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S1226: While it is technically correct to assign to parameters from within method bodies, doing so before the parameter value is read is likely a bug. I"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S2183: Shifting an integral number by 0 is equivalent to doing nothing but makes the code confusing for maintainers."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S2184: When division is performed on ints, the result will always be an int. You can assign that result to a double, float or decimal with automatic typ"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S2328: GetHashCode is used to file an object in a Dictionary or Hashtable. If GetHashCode uses non-readonly fields and those fields change after the obj"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S2345: Flags enumerations should not rely on the language to initialize the values of their members. Implicit initialization will set the first member t"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S2674: You cannot assume that any given stream reading call will fill the byte[] passed in to the method with the number of bytes requested. Instead, yo"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S2934: While the properties of a readonly reference type field can still be changed after initialization, those of a readonly value field, such as a str"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S2955: When constraints have not been applied to restrict a generic type parameter to be a reference type, then a value type, such as a struct, could al"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S3397: object.Equals() overrides can be optimized by checking first for reference equality between this and the parameter. This check can be implemented"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S3456: ToCharArray can be omitted when the operation on the array could have been done directly on the string, such as when iterating over the character"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S3887: Using the readonly keyword on a field means that it can't be changed after initialization. However, when applied to collections or arrays, that's"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Bug"</span><span class="p">,</span> <span class="s">"S4158: When a collection is empty it makes no sense to access or iterate it. Doing so anyway is surely an error; either population was accidentally omit"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S1147: Calling Environment.Exit(exitCode) or Application.Exit() terminates the process and returns an exit code to the operating system.."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S1451: Each source file should start with a header stating file ownership and the license which must be used to distribute the application."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S2178: The use of non-short-circuit logic in a boolean context is likely a mistake - one that could cause serious program errors as conditions are evalu"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S2187: There's no point in having a test class without any test methods.This could lead a maintainer to assume a class is covered by tests even though i"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S2306: Since C# 5.0, async and await are contextual keywords. Contextual keywords do have a particular meaning in some contexts, but can still be used a"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S2368: Exposing methods with multidimensional array parameters requires developers to have advanced knowledge about the language in order to be able to"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S2387: Having a variable with the same name in two unrelated classes is fine, but do the same thing within a class hierarchy and you'll get confusion at"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S2437: Certain bit operations are just silly and should not be performed because their results are predictable."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S2699: A test case without assertions ensures only that no exceptions are thrown. Beyond basic runnability, it ensures nothing about the behavior of the"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S2953: Dispose as a method name should be used exclusively to implement IDisposable.Dispose to prevent any confusion."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S3060: There's no valid reason to test this with is. The only plausible explanation for such a test is that you're executing code in a parent class cond"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S3237: In property and indexer set methods, and in event add and remove methods, the implicit value parameter holds the value the accessor was called wi"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S3427: The rules for method resolution are complex and perhaps not properly understood by all coders. Having overloads with optional parameter values ma"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S3433: A method is detected as test method if marked with one of the following attributes [TestMethod] or [DataTestMethod] (for mstest), [Fact] or [Theo"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S3443: If you call GetType() on a Type variable, the return value will always be typeof(System.Type). So there's no real point in making that call. The"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S3875: The use of == to compare two objects is expected to do a reference comparison. That is, it is expected to return true if and only if they are the"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S3877: It is expected that some methods should be called with caution, but others, such as ToString, are expected to \"just work\". Throwing an exception"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Code Smell"</span><span class="p">,</span> <span class="s">"S4462: Making blocking calls to async methods transforms something that was intended to be asynchronous into a synchronous block. Doing so can cause dea"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S1006: Default arguments are determined by the static type of the object. If a default argument is different for a parameter in an overriding method, th"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S1067: The complexity of an expression is defined by the number of &&, || and condition ? ifTrue : ifFalse operators it contains."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S1163: Throwing an exception from within a finally block will mask any exception which was previously thrown in the try or catch block, and the masked's"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S1186: There are several reasons for a method not to have a method body:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S121: While not technically incorrect, the omission of curly braces can be misleading, and may lead to the introduction of errors during maintenance."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S1215: Calling GC.Collect is rarely necessary, and can significantly affect application performance. That's because it triggers a blocking operation tha"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S126: This rule applies whenever an if statement is followed by one or more else if statements; the final else if should be followed by an else stateme"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S131: The requirement for a final default clause is defensive programming. The clause should either take appropriate action, or contain a suitable comm"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S134: Nested if, switch, for, foreach, while, do, and try statements are key ingredients for making what's known as \"Spaghetti code\"."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S1541: The cyclomatic complexity of methods and properties should not exceed a defined threshold. Complex code can perform poorly and will in any case b"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S1699: Calling an overridable method from a constructor could result in failures or strange behaviors when instantiating a subclass which overrides the"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S1821: Nested switch structures are difficult to understand because you can easily confuse the cases of an inner switch as belonging to an outer stateme"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S1944: Inappropriate casts are issues that will lead to unexpected behavior or runtime errors, such as InvalidCastExceptions. The compiler will catch ba"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S1994: It can be extremely confusing when a for loop's counter is incremented outside of its increment clause. In such cases, the increment should be mo"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2197: When the modulus of a negative number is calculated, the result will either be negative or zero. Thus, comparing the modulus of a variable for eq"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2223: A static field that is neither constant nor read-only is not thread-safe. Correctly accessing these fields from different threads needs synchroni"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2290: Field-like events are events that do not have explicit add and remove methods. The compiler generates a private delegate field to back the event,"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2291: Enumerable.Sum() always executes addition in a checked context, so an OverflowException will be thrown if the value exceeds MaxValue even if an u"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2302: Because parameter names could be changed during refactoring, they should not be spelled out literally in strings. Instead, use nameof(), and the"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2330: Array covariance is the principle that if an implicit or explicit reference conversion exits from type A to B, then the same conversion exists fr"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2339: Constant members are copied at compile time to the call sites, instead of being fetched at runtime."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2346: Consistent use of \"None\" in flags enumerations indicates that all flag values are cleared. The value 0 should not be used to indicate any other s"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2360: The overloading mechanism should be used in place of optional parameters for several reasons:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2365: Most developers expect property access to be as efficient as field access. However, if a property returns a copy of an array or collection, it wi"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2479: Non-encoded control characters and whitespace characters are often injected in the source code because of a bad manipulation. They are either inv"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2692: Most checks against an IndexOf value compare it with -1 because 0 is a valid index. Any checks which look for values > 0 ignore the first element"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2696: Correctly updating a static field from a non-static method is tricky to get right and could easily lead to bugs if there are multiple class insta"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S2701: There's no reason to use literal boolean values in assertions. Doing so is at best confusing for maintainers, and at worst a bug."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3215: Needing to cast from an interface to a concrete type indicates that something is wrong with the abstractions in use, likely that something is mis"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3216: After an awaited Task has executed, you can continue execution in the original, calling thread or any arbitrary thread. Unless the rest of the co"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3217: The foreach statement was introduced in the C# language prior to generics to make it easier to work with the non-generic collections available at"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3218: It's possible to name the members of an inner class the same as the static members of its enclosing class - possible, but a bad idea. That's beca"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3265: enums are usually used to identify distinct elements in a set of values. However enums can be treated as bit fields and bitwise operations can be"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3353: Marking a variable that is unchanged after initialization const is an indication to future maintainers that \"no this isn't updated, and it's not"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3447: The use of ref or out in combination with [Optional] is both confusing and contradictory. [Optional] indicates that the parameter doesn't have to"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3451: The use of [DefaultValue] with [Optional] has no more effect than [Optional] alone. That's because [DefaultValue] doesn't actually do anything; i"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3600: Adding params to a method override has no effect. The compiler accepts it, but the callers won't be able to benefit from the added modifier."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3776: Cognitive Complexity is a measure of how hard the control flow of a method is to understand. Methods with high Cognitive Complexity will be diffi"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3871: The point of having custom exception types is to convey more information than is available in standard types. But custom exception types must be"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3874: Passing a parameter by reference, which is what happens when you use the out or ref parameter modifiers, means that the method will receive a poi"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3904: If no AssemblyVersionAttribute is provided, the same default version will be used for every build. Since the version number is used by The .NET F"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3937: The use of punctuation characters to separate subgroups in a number can make the number more readable. For instance consider 1,000,000,000 versus"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3972: Code is clearest when each statement has its own line. Nonetheless, it is a common pattern to combine on the same line an if and its resulting th"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3973: In the absence of enclosing curly braces, the line immediately after a conditional is the one that is conditionally executed. By both convention"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S3998: A thread acquiring a lock on an object that can be accessed across application domain boundaries runs the risk of being blocked by another thread"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S4000: The IntPtr and UIntPtr types are used to access unmanaged memory, usually in order to use C or C++ libraries. If such a pointer is not secured by"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S4015: Changing an inherited member to private will not prevent access to the base class implementation."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S4019: When a method in a derived class has the same name as a method in the base class but with a signature that only differs by types that are weakly"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S4025: Having a field in a child class with a name that differs from a parent class' field only by capitalization is sure to cause confusion. Such child"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S4039: When a base type explicitly implements a public interface method, that method is only accessible in derived types through a reference to the curr"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S4487: Private fields only used to store values without reading them later is a case of dead store. So changing the value of such field is useless and m"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S4524: switch can contain a default clause for various reasons: to handle unexpected values, to show that all the cases were properly considered."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S4635: Looking for a given substring starting from a specified offset can be achieved by such code: str.Substring(startIndex).IndexOf(char1). This works"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S5034: ValueTask<TResult> was introduced in .NET Core 2.0 to optimize memory allocation when functions return their results synchronously."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Code Smell"</span><span class="p">,</span> <span class="s">"S927: The name of a parameter in an externally visible. This rule raises an issue when method override does not match the name of the parameter in the"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Info Code Smell"</span><span class="p">,</span> <span class="s">"S1135: TODO tags are commonly used to mark places where some more code is required, but which the developer wants to implement later."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Info Code Smell"</span><span class="p">,</span> <span class="s">"S1309: This rule allows you to track the usage of the SuppressMessage attributes and #pragma warning disable mechanism."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S103: Having to scroll horizontally makes it harder to get a quick overview and understanding of any piece of code."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S104: A source file that grows too much tends to aggregate too many responsibilities and inevitably becomes harder to understand and therefore to maint"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S106: When logging a message there are several important requirements which must be fulfilled:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1066: Merging collapsible if statements increases the code's readability."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S107: A long parameter list can indicate that a new structure should be created to wrap the numerous parameters or that the function is doing too many"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S108: Most of the time a block of code is empty when a piece of code is really missing. So such empty block must be either filled or removed."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S109: A magic number is a number that comes out of nowhere, and is directly used in a statement. Magic numbers are often used, for instance to limit th"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S110: Inheritance is certainly one of the most valuable concepts in object-oriented programming. It's a way to compartmentalize and reuse code by creat"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1110: The use of parentheses, even those not required to enforce a desired order of operations, can clarify the intent behind a piece of code. But redu"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1117: Overriding or shadowing a variable declared in an outer scope can strongly impact the readability, and therefore the maintainability, of a piece"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1118: Utility classes, which are collections of static members, are not meant to be instantiated."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S112: Throwing such general exceptions as Exception, SystemException, ApplicationException, IndexOutOfRangeException, NullReferenceException, OutOfMemo"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1121: Assignments within sub-expressions are hard to spot and therefore make the code less readable. Ideally, sub-expressions should not have side-effe"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1123: The Obsolete attribute can be applied with or without arguments, but marking something Obsolete without including advice as to why it's obsolete"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1134: FIXME tags are commonly used to mark places where a bug is suspected, but which the developer wants to deal with later."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1144: private or internal types or private members that are never executed or referenced are dead code: unnecessary, inoperative code that should be re"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1151: The switch statement should be used only to clearly define some new branches in the control flow. As soon as a case clause contains too many stat"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1168: Returning null instead of an actual array or collection forces callers of the method to explicitly test for nullity, making them more complex and"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1172: Unused parameters are misleading. Whatever the values passed to such parameters, the behavior will be the same."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1200: According to the Single Responsibility Principle, introduced by Robert C. Martin in his book \"Principles of Object Oriented Design\", a class shou"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S122: For better readability, do not put more than one statement on a single line."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S125: Programmers should not comment out code as it bloats programs and reduces readability."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S127: A for loop stop condition should test the loop counter against an invariant value (i.e. one that is true at both the beginning and ending of ever"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S138: A function that grows too large tends to aggregate too many responsibilities."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1479: When switch statements have large sets of case clauses, it is usually an attempt to map two sets of data. A Dictionary should be used instead to"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1607: When a test fails due, for example, to infrastructure issues, you might want to ignore it temporarily. But without some kind of notation about wh"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1696: NullReferenceException should be avoided, not caught. Any situation in which NullReferenceException is explicitly caught can easily be converted"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1854: A dead store happens when a local variable is assigned a value that is not read by any subsequent instruction. Calculating or retrieving a value"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S1871: Having two cases in the same switch statement or branches in the same if structure with the same implementation is at best duplicate code, and at"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S2234: When the names of parameters in a method call match the names of the method arguments, it contributes to clearer, more readable code. However, wh"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S2326: Type parameters that aren't used are dead code, which can only distract and possibly confuse developers during maintenance. Therefore, unused typ"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S2327: When multiple, adjacent try statements have duplicate catch and/or finally blocks, they should be merged to consolidate the catch/finally logic f"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S2357: Fields should not be part of an API, and therefore should always be private. Indeed, they cannot be added to an interface for instance, and valid"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S2372: Property getters should be simple operations that are always safe to call. If exceptions need to be thrown, it is best to convert the property to"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S2376: Properties with only setters are confusing and counterintuitive. Instead, a property getter should be added if possible, or the property should b"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S2436: A method or class with too many type parameters has likely aggregated too many responsibilities and should be split."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S2589: If a boolean expression doesn't change the evaluation of the condition, then it is entirely unnecessary, and can be removed. If it is gratuitous"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S2681: Curly braces can be omitted from a one-line block, such as with an if statement or for loop, but doing so can be misleading and induce bugs."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S2743: A static field in a generic type is not shared among instances of different closed constructed types, thus LengthLimitedSingletonCollection<int>."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S2933: readonly fields can only be assigned in a class constructor. If a class has a field that's not marked readonly but is only set in the constructor"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S2971: In the interests of readability, code that can be simplified should be simplified. To that end, there are several ways IEnumerable language integ"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3010: Assigning a value to a static field in a constructor could cause unreliable behavior at runtime since it will change the value for all instances"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3011: This rule raises an issue when reflection is used to change the visibility of a class, method or field, and when it is used to directly update a"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3169: There's no point in chaining multiple OrderBy calls in a LINQ; only the last one will be reflected in the result because each subsequent call com"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3246: In the interests of making code as usable as possible, interfaces and delegates with generic parameters should use the out and in modifiers when"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3262: Overriding methods automatically inherit the params behavior. To ease readability, this modifier should be explicitly used in the overriding meth"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3264: Events that are not invoked anywhere are dead code, and there's no good reason to keep them in the source."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3358: Just because you can do something, doesn't mean you should, and that's the case with nested ternary operations. Nesting ternary operators results"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3366: In single-threaded environments, the use of this in constructors is normal, and expected. But in multi-threaded environments, it could expose par"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3415: The standard assertions library methods such as AreEqual and AreSame in MSTest and NUnit, or Equal and Same in XUnit, expect the first argument t"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3431: It should be clear to a casual reader what code a test is testing and what results are expected. Unfortunately, that's not usually the case with"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3442: Since abstract classes can't be instantiated, there's no point in their having public or internal constructors. If there is basic initialization"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3445: When rethrowing an exception, you should do it by simply calling throw; and not throw exc;, because the stack trace is reset with the second synt"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3457: Because composite format strings are interpreted at runtime, rather than validated by the compiler, they can contain errors that lead to unexpect"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3597: The ServiceContract attribute specifies that a class or interface defines the communication contract of a Windows Communication Foundation (WCF)"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3880: Finalizers come with a performance cost due to the overhead of tracking the life cycle of objects. An empty one is consequently costly with no be"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3881: The IDisposable interface is a mechanism to release unmanaged resources, if not implemented correctly this could result in resource leaks or more"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3885: The parameter to Assembly.Load includes the full specification of the dll to be loaded. Use another method, and you might end up with a dll other"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3898: If you're using a struct, it is likely because you're interested in performance. But by failing to implement IEquatable<T> you're loosing perform"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3900: A publicly accessible method can be called from anywhere, which means you should validate parameters to be within the expected constraints. In ge"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3902: Using Type.Assembly to get the current assembly is nearly free in terms of performance; it's a simple property access. On the other hand, Assembl"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3906: Delegate event handlers (i.e. delegates used as type of an event) should have a very specific signature:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3908: Since .Net Framework version 2.0 it is not necessary to declare a delegate that specifies a class derived from System.EventArgs. The System.Event"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3909: The NET Framework 2.0 introduced the generic interface System.Collections.Generic.IEnumerable<T> and it should be preferred over the older, non g"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3925: The ISerializable interface is the mechanism to control the type serialization process. If not implemented correctly this could result in an inva"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3928: Some constructors of the ArgumentException, ArgumentNullException, ArgumentOutOfRangeException and DuplicateWaitObjectException classes must be f"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3956: System.Collections.Generic.List<T> is a generic collection that is designed for performance and not inheritance. For example, it does not contain"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3966: Disposing an object twice, either with the using keyword or by calling Dispose directly, in the same method is at best confusing and at worst err"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3971: GC.SuppressFinalize requests that the system not call the finalizer for the specified object. This should only be done when implementing Dispose"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3990: Assemblies should conform with the Common Language Specification (CLS) in order to be usable across programming languages. To be compliant an ass"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3992: Assemblies should explicitly indicate whether they are meant to be COM visible or not. If the ComVisibleAttribute is not present, the default is"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3993: When defining custom attributes, System.AttributeUsageAttribute must be used to indicate where the attribute can be applied. This will determine"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3994: String representations of URIs or URLs are prone to parsing and encoding errors which can lead to vulnerabilities. The System.Uri class is a safe"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3995: String representations of URIs or URLs are prone to parsing and encoding errors which can lead to vulnerabilities. The System.Uri class is a safe"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3996: String representations of URIs or URLs are prone to parsing and encoding errors which can lead to vulnerabilities. The System.Uri class is a safe"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S3997: String representations of URIs or URLs are prone to parsing and encoding errors which can lead to vulnerabilities. The System.Uri class is a safe"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4002: This rule raises an issue when a disposable type contains fields of the following types and does not implement a finalizer:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4004: A writable collection property can be replaced by a completely different collection. Making it readonly prevents that while still allowing indivi"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4005: String representations of URIs or URLs are prone to parsing and encoding errors which can lead to vulnerabilities. The System.Uri class is a safe"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4016: If an enum member's name contains the word \"reserved\" it implies it is not currently used and will be change in the future. However changing an e"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4017: A nested type is a type argument that is also a generic type. Calling a method with such a nested type argument requires complicated and confusin"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4035: When a class implements the IEquatable<T> interface, it enters a contract that, in effect, states \"I know how to compare two instances of type T"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4050: When implementing operator overloads, it is very important to make sure that all related operators and methods are consistent in their implementa"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4055: String literals embedded in the source code will not be localized properly."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4057: When you create a DataTable or DataSet, you should set the locale explicitly. By default, the locale for these types is the current culture. For"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4059: Properties and Get method should have names that makes them clearly distinguishable."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4070: This rule raises an issue when an externally visible enumeration is marked with FlagsAttribute and one, or more, of its values is not a power of"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4142: There are valid cases for passing a variable multiple times into the same method call, but usually doing so is a mistake, and something else was"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4144: When two methods have the same implementation, either it was a mistake - something else was intended - or the duplication was intentional, but ma"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4200: Native methods are functions that reside in libraries outside the virtual machine. Being able to call them is useful for interoperability with ap"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4214: Methods marked with the System.Runtime.InteropServices.DllImportAttribute attribute use Platform Invocation Services to access unmanaged code and"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4220: When raising an event, two arguments are expected by the EventHandler delegate: Sender and event-data. There are three guidelines regarding these"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4456: Because of the way yield methods are rewritten by the compiler (they become lazily evaluated state machines) any exceptions thrown during the par"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4457: Because of the way async/await methods are rewritten by the compiler, any exceptions thrown during the parameters check will happen only when the"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S4581: When the syntax new Guid() (i.e. parameterless instantiation) is used, it must be that one of three things is wanted:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S881: The use of increment and decrement operators in method calls or in combination with other arithmetic operators is not recommended, because:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Code Smell"</span><span class="p">,</span> <span class="s">"S907: goto is an unstructured control flow statement. It makes code less readable and maintainable. Structured control flow statements such as if, for,"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S100: Shared naming conventions allow teams to collaborate efficiently. This rule checks whether or not method and property names are PascalCased. To r"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S101: Shared naming conventions allow teams to collaborate efficiently. This rule checks whether or not type names are using PascalCase. To reduce nois"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S105: Developers should not need to configure the tab width of their text editors in order to be able to read source code."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1075: Hardcoding a URI makes it difficult to test a program: path literals are not always portable across operating systems, a given absolute path may"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1104: Public fields in public classes do not respect the encapsulation principle and has three main disadvantages:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1109: Shared coding conventions make it possible for a team to efficiently collaborate. This rule makes it mandatory to place a close curly brace at th"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1116: Empty statements, i.e. ;, are usually introduced by mistake, for example because:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1125: Redundant Boolean literals should be removed from expressions to improve readability."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1128: Although unnecessary using won't change anything to the produced application, removing them:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S113: Some tools work better when files end with an empty line."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1155: Using .Count() to test for emptiness works, but using .Any() makes the intent clearer, and the code more readable. However, there are some cases"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1185: Overriding a method just to call the same method from the base class without performing any other actions is useless and misleading. The only tim"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1192: Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1199: Nested code blocks can be used to create a new scope and restrict the visibility of the variables defined inside it. Using this feature in a meth"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1210: When you implement IComparable or IComparable<T> on a class you should also override Equals(object) and overload the comparison operators (==, !="</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1227: break; is an unstructured control flow statement which makes code harder to read."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1264: When only the condition expression is defined in a for loop, and the initialization and increment expressions are missing, a while loop should be"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1301: switch statements and expressions are useful when there are many different cases depending on the value of the same expression."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1449: string.ToLower(), ToUpper, IndexOf, LastIndexOf, and Compare are all culture-dependent, as are some (floating point number and DateTime-related)"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1450: When the value of a private field is always assigned to in a class' methods before being read, then it is not being used to store class informati"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1481: If a local variable is declared but not used, it is dead code and should be removed. Doing so will improve maintainability because developers wil"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1643: StringBuilder is more efficient than string concatenation, especially when the operator is repeated over and over as in loops."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1659: Declaring multiple variable on one line is difficult to read."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1694: The purpose of an abstract class is to provide some heritable behaviors while also defining methods which must be implemented by sub-classes."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1698: Using the equality == and inequality != operators to compare two objects generally works. The operators can be overloaded, and therefore the comp"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1858: Invoking a method designed to return a string representation of an object which is already a string is a waste of keystrokes. Similarly, explicit"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1905: Unnecessary casting expressions make the code harder to read and understand."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1939: An inheritance list entry is redundant if:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S1940: It is needlessly complex to invert the result of a boolean comparison. The opposite comparison should be made instead."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2148: Beginning with C# 7, it is possible to add underscores ('_') to numeric literals to enhance readability. The addition of underscores in this mann"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2156: The difference between private and protected visibility is that child classes can see and use protected members, but they cannot see private ones"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2219: To check the type of an object there are several options:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2221: Catching System.Exception seems like an efficient way to handle multiple possible exceptions. Unfortunately, it traps all exception types, includ"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2292: Trivial properties, which include no logic but setting and getting a backing field should be converted to auto-implemented properties, yielding c"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2325: Methods and properties that don't access instance data can be static to prevent any misunderstanding about the contract of the method."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2333: Unnecessary keywords simply clutter the code and should be removed. Specifically:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2342: Shared naming conventions allow teams to collaborate efficiently. This rule checks that all enum names match a provided regular expression."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2344: The information that an enumeration type is actually an enumeration or a set of flags should not be duplicated in its name."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2386: public static mutable fields of classes which are accessed directly should be protected to the degree possible. This can be done by reducing the"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2486: When exceptions occur, it is usually a bad idea to simply ignore them. Instead, it is better to handle them properly, or at least to log them."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2737: A catch clause that only rethrows the caught exception has the same effect as omitting the catch altogether and letting it bubble up automaticall"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S2760: When the same condition is checked twice in a row, it is either confusing - why have separate checks? - or an error - some other condition should"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3052: The compiler automatically initializes class fields, auto-properties and events to their default values before setting them with any initializati"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3220: The rules for method resolution are complex and perhaps not properly understood by all coders. The params keyword can make method declarations ov"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3234: GC.SuppressFinalize asks the Common Language Runtime not to call the finalizer of an object. This is useful when implementing the dispose pattern"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3235: Redundant parentheses are simply wasted keystrokes, and should be removed."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3236: Caller information attributes: CallerFilePathAttribute and CallerLineNumberAttribute provide a way to get information about the caller of a metho"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3240: In the interests of keeping code clean, the simplest possible conditional syntax should be used. That means"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3241: Private methods are clearly intended for use only within their own scope. When such methods return values that are never used by any of their cal"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3242: When a derived type is used as a parameter instead of the base type, it limits the uses of the method. If the additional functionality that is pr"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3247: Because the is operator performs a cast if the object is not null, using is to check type and then casting the same argument to that type, necess"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3251: partial methods allow an increased degree of flexibility in programming a system. Hooks can be added to generated code by invoking methods that d"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3253: Since the compiler will automatically invoke the base type's no-argument constructor, there's no need to specify its invocation explicitly. Also,"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3254: Specifying the default parameter values in a method call is redundant. Such values should be omitted in the interests of readability."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3256: Using string.Equals to determine if a string is empty is significantly slower than using string.IsNullOrEmpty() or checking for string.Length =="</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3257: Unnecessarily verbose declarations and initializations make it harder to read the code, and should be simplified."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3261: Namespaces with no lines of code clutter a project and should be removed."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3376: Adherence to the standard naming conventions makes your code not only more readable, but more usable. For instance, class FirstAttribute : Attrib"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3400: There's no point in forcing the overhead of a method call for a method that always returns the same constant value. Even worse, the fact that a m"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3440: There's no point in checking a variable against the value you're about to assign it. Save the cycles and lines of code, and simply perform the as"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3441: When an anonymous type's properties are copied from properties or variables with the same names, it yields cleaner code to omit the new type's pr"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3444: When an interface inherits from two interfaces that both define a member with the same name, trying to access that member through the derived int"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3450: There is no point in providing a default value for a parameter if callers are required to provide a value for it anyway. Thus, [DefaultParameterV"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3458: Empty case clauses that fall through to the default are useless. Whether or not such a case is present, the default clause will be invoked. Such"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3459: Fields and auto-properties that are never assigned to hold the default values for their types. They are either pointless code or, more likely, mi"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3532: The default clause should take appropriate action. Having an empty default is a waste of keystrokes."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3604: Fields, properties and events can be initialized either inline or in the constructor. Initializing them inline and in the constructor at the same"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3626: Jump statements, such as return, yield break, goto, and continue let you change the default flow of program execution, but jump statements that d"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3717: NotImplementedException is often used to mark methods which must be implemented for the overall functionality to be complete, but which the devel"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3872: The name of a method should communicate what it does, and the names of its parameters should indicate how they're used. If a method and its param"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3876: Strings and integral types are typically used as indexers. When some other type is required, it typically indicates design problems, and potentia"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3897: The IEquatable<T> interface has only one method in it: Equals(<T>). If you've already written Equals(T), there's no reason not to explicitly impl"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3962: The value of a static readonly field is computed at runtime while the value of a const field is calculated at compile time, which improves perfor"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3963: When a static constructor serves no other purpose that initializing static fields, it comes with an unnecessary performance cost because the comp"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S3967: A jagged array is an array whose elements are arrays. It is recommended over a multidimensional array because the arrays that make up the element"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4018: The best way to determine the type of a generic method is by inference based on the type of argument that is passed to the method. This is not po"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4022: By default the storage type of an enum is Int32. In most cases it is not necessary to change this. In particular you will not achieve any perform"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4023: Empty interfaces are usually used as a marker or a way to identify groups of types. The preferred way to achieve this is to use custom attributes"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4026: It is important to inform the ResourceManager of the language used to display the resources of the neutral culture for an assembly. This improves"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4027: Exceptions types should provide the following constructors:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4040: Certain characters, once normalized to lowercase, cannot make a round trip. That is, they can not be converted from one locale to another and the"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4041: When a type name matches the name of a publicly defined namespace, for instance one in the .NET framework class library, it leads to confusion an"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4047: When a reference parameter (keyword ref) is used, the passed argument type must exactly match the reference parameter type. This means that to be"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4049: Properties are accessed like fields which makes them easier to use."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4052: With the advent of .NET framework version 2, certain practices have become obsolete."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4056: When a System.Globalization.CultureInfo or IFormatProvider object is not supplied, the default value that is supplied by the overloaded member mi"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4058: Many string operations, the Compare and Equals methods in particular, provide an overload that accepts a StringComparison enumeration value as a"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4060: The .NET framework class library provides methods for retrieving custom attributes. Sealing the attribute eliminates the search through the inher"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4061: A method using the VarArgs calling convention is not Common Language Specification (CLS) compliant and might not be accessible across programming"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4069: Operator overloading is convenient but unfortunately not portable across languages. To be able to access the same functionality from another lang"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4136: For clarity, all overloads of the same method should be grouped together. That lets both users and maintainers quickly understand all the current"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4201: There's no need to null test in conjunction with an is test. null is not an instance of anything, so a null check is redundant."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4225: Creating an extension method that extends object is not recommended because it makes the method available on every type. Extensions should be app"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4226: It makes little sense to create an extension method when it is possible to just add that method to the class itself."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S4261: According to the Task-based Asynchronous Pattern (TAP), methods returning either a System.Threading.Tasks.Task or a System.Threading.Tasks.Task<T"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Code Smell"</span><span class="p">,</span> <span class="s">"S818: Using upper case literal suffixes removes the potential ambiguity between \"1\" (digit 1) and \"l\" (letter el) for declaring literals."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Security Hotspot"</span><span class="p">,</span> <span class="s">"S2068: Because it is easy to extract strings from an application source code or binary, credentials should not be hard-coded. This is particularly true"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S2245: Using pseudorandom number generators (PRNGs) is security-sensitive. For example, it has led in the past to the following vulnerabilities:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S2257: The use of a non-standard algorithm is dangerous because a determined attacker may be able to break the algorithm and compromise whatever data ha"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S4502: A cross-site request forgery (CSRF) attack occurs when a trusted user of a web application can be forced, by an attacker, to perform sensitive ac"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S4784: Using regular expressions is security-sensitive. It has led in the past to the following vulnerabilities:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S4787: Encrypting data is security-sensitive. It has led in the past to the following vulnerabilities:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S4790: Cryptographic hash algorithms such as MD2, MD4, MD5, MD6, HAVAL-128, HMAC-MD5, DSA (which uses SHA-1), RIPEMD, RIPEMD-128, RIPEMD-160, HMACRIPEMD"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S4792: Configuring loggers is security-sensitive. It has led in the past to the following vulnerabilities:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S4818: Using sockets is security-sensitive. It has led in the past to the following vulnerabilities:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S4823: Using command line arguments is security-sensitive. It has led in the past to the following vulnerabilities:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S4829: Reading Standard Input is security-sensitive. It has led in the past to the following vulnerabilities:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S5042: Successful Zip Bomb attacks occur when an application expands untrusted archive files without controlling the size of the expanded data, which ca"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S5332: Clear-text protocols as ftp, telnet or non secure http are lacking encryption of transported data. They are also missing the capability to build"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Security Hotspot"</span><span class="p">,</span> <span class="s">"S5443: Operating systems have global directories where any user has write access. Those folders are mostly used as temporary storage areas like /tmp in"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Security Hotspot"</span><span class="p">,</span> <span class="s">"S1313: Hardcoding IP addresses is security-sensitive. It has led in the past to the following vulnerabilities:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Security Hotspot"</span><span class="p">,</span> <span class="s">"S2077: Formatted SQL queries can be difficult to maintain, debug and can increase the risk of SQL injection when concatenating untrusted values into the"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Security Hotspot"</span><span class="p">,</span> <span class="s">"S2612: In Unix, \"others\" class refers to all users except the owner of the file and the members of the group assigned to this file."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Security Hotspot"</span><span class="p">,</span> <span class="s">"S5693: Rejecting requests with significant content length is a good practice to control the network traffic intensity and thus resource consumption in o"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Security Hotspot"</span><span class="p">,</span> <span class="s">"S5753: ASP.NET 1.1+ comes with a feature called Request Validation, preventing the server to accept content containing un-encoded HTML. This feature com"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Security Hotspot"</span><span class="p">,</span> <span class="s">"S5766: Deserialization process extracts data from the serialized representation of an object and reconstruct it directly, without calling constructors."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Security Hotspot"</span><span class="p">,</span> <span class="s">"S2092: When a cookie is protected with the secure attribute set to true it will not be send by the browser over an unencrypted HTTP request and thus can"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Security Hotspot"</span><span class="p">,</span> <span class="s">"S2255: Using cookies is security-sensitive. It has led in the past to the following vulnerabilities:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Security Hotspot"</span><span class="p">,</span> <span class="s">"S3330: When a cookie is configured with the HttpOnly attribute set to true, the browser guaranties that no client-side script will be able to read it. I"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Security Hotspot"</span><span class="p">,</span> <span class="s">"S4036: When executing an OS command and unless you specify the full path to the executable, then the locations in your application's PATH environment va"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Security Hotspot"</span><span class="p">,</span> <span class="s">"S4507: Delivering code in production with debug features activated is security-sensitive. It has led in the past to the following vulnerabilities:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Security Hotspot"</span><span class="p">,</span> <span class="s">"S4834: The access control of an application must be properly implemented in order to restrict access to resources to authorized entities otherwise this"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Security Hotspot"</span><span class="p">,</span> <span class="s">"S5122: Having a permissive Cross-Origin Resource Sharing policy is security-sensitive. It has led in the past to the following vulnerabilities:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Vulnerability"</span><span class="p">,</span> <span class="s">"S2115: When relying on the password authentication mode for the database connection, a secure password should be chosen."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Vulnerability"</span><span class="p">,</span> <span class="s">"S2278: According to the US National Institute of Standards and Technology (NIST), the Data Encryption Standard (DES) is no longer considered secure:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Vulnerability"</span><span class="p">,</span> <span class="s">"S2755: XML specification allows the use of entities that can be internal or external (file system / network access ...) which could lead to vulnerabilit"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Blocker Vulnerability"</span><span class="p">,</span> <span class="s">"S3884: CoSetProxyBlanket and CoInitializeSecurity both work to set the permissions context in which the process invoked immediately after is executed. C"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Vulnerability"</span><span class="p">,</span> <span class="s">"S2053: In cryptography, a \"salt\" is an extra piece of data which is included when hashing a password. This makes rainbow-table attacks more difficult. U"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Vulnerability"</span><span class="p">,</span> <span class="s">"S2070: The MD5 algorithm and its successor, SHA-1, are no longer considered secure, because it is too easy to create hash collisions with them. That is,"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Vulnerability"</span><span class="p">,</span> <span class="s">"S3329: When encrypting data with the Cipher Block Chaining (CBC) mode an Initialization Vector (IV) is used to randomize the encryption, ie under a give"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Vulnerability"</span><span class="p">,</span> <span class="s">"S4423: Older versions of SSL/TLS protocol like \"SSLv3\" have been proven to be insecure."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Vulnerability"</span><span class="p">,</span> <span class="s">"S4426: Most of cryptographic systems require a sufficient key size to be robust against brute-force attacks."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Vulnerability"</span><span class="p">,</span> <span class="s">"S4432: Encryption algorithms can be used with various modes. Some combinations are not secured:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Vulnerability"</span><span class="p">,</span> <span class="s">"S4433: An LDAP client authenticates to an LDAP server with a \"bind request\" which provides, among other, a simple authentication method."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Vulnerability"</span><span class="p">,</span> <span class="s">"S4830: Validation of X.509 certificates is essential to create secure SSL/TLS sessions not vulnerable to man-in-the-middle attacks."</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Vulnerability"</span><span class="p">,</span> <span class="s">"S5445: Creating temporary files using insecure methods exposes the application to race conditions on filenames: a malicious user can try to create a fil"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Vulnerability"</span><span class="p">,</span> <span class="s">"S5542: Encryption operation mode and the padding scheme should be chosen appropriately to guarantee data confidentiality, integrity and authenticity:"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Vulnerability"</span><span class="p">,</span> <span class="s">"S5547: Strong cipher algorithms are cryptographic systems resistant to cryptanalysis, they are not vulnerable to well-known attacks like brute force att"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Critical Vulnerability"</span><span class="p">,</span> <span class="s">"S5659: If a JSON Web Token (JWT) is not signed with a strong cipher algorithm (or not signed at all) an attacker can forge it and impersonate user ident"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Vulnerability"</span><span class="p">,</span> <span class="s">"S4211: Transparency attributes, SecurityCriticalAttribute and SecuritySafeCriticalAttribute are used to identify code that performs security-critical op"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Vulnerability"</span><span class="p">,</span> <span class="s">"S4212: Because serialization constructors allocate and initialize objects, security checks that are present on regular constructors must also be present"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Vulnerability"</span><span class="p">,</span> <span class="s">"S4564: ASP.Net has a feature to validate HTTP requests to prevent potentially dangerous content to perform a cross-site scripting (XSS) attack. There is"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Major Vulnerability"</span><span class="p">,</span> <span class="s">"S5773: During the deserialization process, the state of an object will be reconstructed from the serialized data stream which can contain dangerous oper"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
<span class="p">[</span><span class="n">assembly</span><span class="p">:</span> <span class="nf">SuppressMessage</span><span class="p">(</span><span class="s">"Minor Vulnerability"</span><span class="p">,</span> <span class="s">"S2228: Debug statements are always useful during development. But include them in production code - particularly in code that runs client-side - and you"</span><span class="p">,</span> <span class="n">Justification</span> <span class="p">=</span> <span class="s">"<Pending>"</span><span class="p">)]</span>
</code></pre></div></div>
<hr />
<h2 id="credits">Credits</h2>
<p>As I said, SonarQube, SonarAnalyser and SonarLint are brilliant.</p>
<p>If you find this useful, go be nice to someone. Pay it forward.</p>
<p><em>Cheers!</em></p>I’ve been working with a new codebase and to ensure that it stays nice we are using SonarAnalyser.CSharp which is frekkin’ awesome!Updating Jekyll in GitHub Pages2021-04-25T00:00:00+00:002021-04-25T00:00:00+00:00http://www.finnangelo.com/jekyll/2021/04/25/Updating-Jekyll-in-GitHub-Pages<p>I was getting security warnings from my github pages commits from the dependabot about a kramdown dependency.<br />
I thought it would be easy to fix, but nah, it was easier to just reinstall everything.</p>
<p>I don’t have time to learn the ins-and-outs of Ruby and Jekyll, so here is my dirty (but long winded) fix…</p>
<hr />
<h2 id="tldr">TL;DR</h2>
<ul>
<li><a href="#Setup-a-Jekyll-Sandbox">Setup a Jekyll Sandbox</a></li>
<li><a href="#Setup-GIT-with-Chocolatey">Setup GIT with Chocolatey</a></li>
<li><a href="#Install-Ruby-Dev-tools-and-Jekyll">Install Ruby Dev tools and Jekyll</a></li>
<li><a href="#Clone-and-backup-your-website">Clone and backup your website</a></li>
<li><a href="#Make-a-new-jekyll-website">Make a new jekyll website</a></li>
<li><a href="#Restore-your-blogs-and-stuff">Restore your blogs and stuff</a></li>
<li><a href="#Credits">Credits</a></li>
</ul>
<hr />
<h2 id="setup-a-jekyll-sandbox">Setup a Jekyll Sandbox</h2>
<p>I do this in a sandbox on Windows 10 because I dont really want Ruby on my day-to-day pc when I only use it every 18 months or so…<br />
I am absolutely sure that this could be done in a Github-Codespace-container-thing and I’m really looking forward to updating this someday.</p>
<ol>
<li>Make sure you have Win10 and Sandboxes enabled.</li>
<li>Make a file called <code class="language-plaintext highlighter-rouge">SandBox.wsb</code> with this content:</li>
</ol>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><Configuration></span>
<span class="nt"><MappedFolders></span>
<span class="nt"><MappedFolder></span>
<span class="nt"><HostFolder></span>C:\Users\Jon\Desktop\GIT\Sandbox-Jekyll<span class="nt"></HostFolder></span>
<span class="nt"><ReadOnly></span>false<span class="nt"></ReadOnly></span>
<span class="nt"></MappedFolder></span>
<span class="nt"></MappedFolders></span>
<span class="nt"></Configuration></span>
</code></pre></div></div>
<hr />
<h2 id="setup-git-with-chocolatey">Setup GIT with Chocolatey</h2>
<p>In the sandbox, run this in the Powershell ISE as steps</p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Set-ExecutionPolicy</span><span class="w"> </span><span class="nx">Unrestricted</span><span class="w">
</span><span class="n">Set-ExecutionPolicy</span><span class="w"> </span><span class="nx">Bypass</span><span class="w"> </span><span class="nt">-Scope</span><span class="w"> </span><span class="nx">Process</span><span class="w"> </span><span class="nt">-Force</span><span class="p">;</span><span class="w"> </span><span class="p">[</span><span class="n">System.Net.ServicePointManager</span><span class="p">]::</span><span class="n">SecurityProtocol</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">System.Net.ServicePointManager</span><span class="p">]::</span><span class="n">SecurityProtocol</span><span class="w"> </span><span class="o">-bor</span><span class="w"> </span><span class="nx">3072</span><span class="p">;</span><span class="w"> </span><span class="n">iex</span><span class="w"> </span><span class="p">((</span><span class="n">New-Object</span><span class="w"> </span><span class="nx">System.Net.WebClient</span><span class="p">)</span><span class="o">.</span><span class="nf">DownloadString</span><span class="p">(</span><span class="s1">'https://chocolatey.org/install.ps1'</span><span class="p">))</span><span class="w">
</span></code></pre></div></div>
<p>Then install Git</p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">choco</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">notepadplusplus</span><span class="w"> </span><span class="nt">-y</span><span class="w">
</span><span class="n">choco</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">git</span><span class="w"> </span><span class="nt">-y</span><span class="w">
</span><span class="n">choco</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">tortoisegit</span><span class="w"> </span><span class="nt">-y</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="install-ruby-dev-tools-and-jekyll">Install Ruby Dev tools and Jekyll</h2>
<ul>
<li><a href="https://jekyllrb.com/docs/installation/windows/">https://jekyllrb.com/docs/installation/windows/</a></li>
<li><a href="https://rubyinstaller.org/">https://rubyinstaller.org/</a></li>
</ul>
<ol>
<li>Install Ruby from the installer - I used <code class="language-plaintext highlighter-rouge">rubyinstaller-devkit-3.0.1-1-x64.exe</code></li>
<li>Run <code class="language-plaintext highlighter-rouge">ridk install</code> to setup MSYS2 and dev toolchain
<ul>
<li>This is option 3 on the cmd window installer</li>
</ul>
</li>
<li>Install Jekyll with <code class="language-plaintext highlighter-rouge">gem install jekyll bundler</code> in a new cmd window
<ul>
<li>Check with <code class="language-plaintext highlighter-rouge">jekyll -v</code></li>
</ul>
</li>
</ol>
<hr />
<h2 id="clone-and-backup-your-website">Clone and backup your website</h2>
<ul>
<li><a href="https://stackoverflow.com/questions/52344102/upgrading-jekyll-and-dependencies-for-github-pages">https://stackoverflow.com/questions/52344102/upgrading-jekyll-and-dependencies-for-github-pages</a></li>
</ul>
<ol>
<li>Clone to sandbox
<ul>
<li>I use TortoiseGit</li>
</ul>
</li>
<li>Delete everything except:
<ul>
<li><code class="language-plaintext highlighter-rouge">.git</code> folder!!</li>
<li><code class="language-plaintext highlighter-rouge">_posts</code> folder</li>
<li><code class="language-plaintext highlighter-rouge">CNAME</code> file</li>
<li><code class="language-plaintext highlighter-rouge">_config.yml</code></li>
<li><code class="language-plaintext highlighter-rouge">FinnAngelo.github.io.code-workspace</code> file</li>
<li><code class="language-plaintext highlighter-rouge">about.markdown</code> and <code class="language-plaintext highlighter-rouge">index.markdown</code> if you have changed them</li>
</ul>
</li>
<li>Move everything except the <code class="language-plaintext highlighter-rouge">.git</code> folder out</li>
</ol>
<hr />
<h2 id="make-a-new-jekyll-website">Make a new jekyll website</h2>
<p><a href="https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll">https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll</a></p>
<ol>
<li>Navigate the cmd window to the website folder</li>
<li>Make a new jekyll website with <code class="language-plaintext highlighter-rouge">jekyll new .</code></li>
<li>Replace the <code class="language-plaintext highlighter-rouge">gem "jekyll"</code>with <code class="language-plaintext highlighter-rouge">gem "github-pages"</code> in the gemfile as per instructions on link
<ul>
<li>Dont forget the version bit</li>
</ul>
</li>
<li>Run <code class="language-plaintext highlighter-rouge">bundle update</code></li>
</ol>
<hr />
<h2 id="restore-your-blogs-and-stuff">Restore your blogs and stuff</h2>
<ol>
<li>Put everything back except the <code class="language-plaintext highlighter-rouge">_config.yml</code></li>
<li>Put all the missing bits back into the <code class="language-plaintext highlighter-rouge">_config.yml</code> from the backup</li>
<li>Commit
<ul>
<li>Check renames</li>
</ul>
</li>
<li>Push</li>
</ol>
<hr />
<h2 id="credits">Credits</h2>
<p>If you find this useful, go be nice to someone. Pay it forward.</p>
<p><em>Cheers!</em></p>I was getting security warnings from my github pages commits from the dependabot about a kramdown dependency. I thought it would be easy to fix, but nah, it was easier to just reinstall everything. I don’t have time to learn the ins-and-outs of Ruby and Jekyll, so here is my dirty (but long winded) fix… TL;DR Setup a Jekyll Sandbox Setup GIT with Chocolatey Install Ruby Dev tools and Jekyll Clone and backup your website Make a new jekyll website Restore your blogs and stuff Credits Setup a Jekyll Sandbox I do this in a sandbox on Windows 10 because I dont really want Ruby on my day-to-day pc when I only use it every 18 months or so… I am absolutely sure that this could be done in a Github-Codespace-container-thing and I’m really looking forward to updating this someday. Make sure you have Win10 and Sandboxes enabled. Make a file called SandBox.wsb with this content: <Configuration> <MappedFolders> <MappedFolder> <HostFolder>C:\Users\Jon\Desktop\GIT\Sandbox-Jekyll</HostFolder> <ReadOnly>false</ReadOnly> </MappedFolder> </MappedFolders> </Configuration> Setup GIT with Chocolatey In the sandbox, run this in the Powershell ISE as steps Set-ExecutionPolicy Unrestricted Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) Then install Git choco install notepadplusplus -y choco install git -y choco install tortoisegit -y Install Ruby Dev tools and Jekyll https://jekyllrb.com/docs/installation/windows/ https://rubyinstaller.org/ Install Ruby from the installer - I used rubyinstaller-devkit-3.0.1-1-x64.exe Run ridk install to setup MSYS2 and dev toolchain This is option 3 on the cmd window installer Install Jekyll with gem install jekyll bundler in a new cmd window Check with jekyll -v Clone and backup your website https://stackoverflow.com/questions/52344102/upgrading-jekyll-and-dependencies-for-github-pages Clone to sandbox I use TortoiseGit Delete everything except: .git folder!! _posts folder CNAME file _config.yml FinnAngelo.github.io.code-workspace file about.markdown and index.markdown if you have changed them Move everything except the .git folder out Make a new jekyll website https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll Navigate the cmd window to the website folder Make a new jekyll website with jekyll new . Replace the gem "jekyll"with gem "github-pages" in the gemfile as per instructions on link Dont forget the version bit Run bundle update Restore your blogs and stuff Put everything back except the _config.yml Put all the missing bits back into the _config.yml from the backup Commit Check renames Push Credits If you find this useful, go be nice to someone. Pay it forward. Cheers!SQL tricks and things2020-06-29T00:00:00+00:002020-06-29T00:00:00+00:00http://www.finnangelo.com/sql/2020/06/29/SQL-tricks-and-things<figure style="float:right; margin-left:3em; width:50%;display:none;">
<a href="http://SomeGif">
<img src="https://github.com/FinnAngelo/FinnAngelo.github.io/raw/master/_posts/images/NeedAGif.jpg" alt="ToDo - get a gif" />
</a>
<figcaption>Needs a gif</figcaption>
</figure>
<p>I have <a href="http://www.finnangelo.com/2019/05/24/Powershell_Snippets.html">Powershell Snippets</a>, so let’s get somewhere for my SQL bits as well</p>
<hr />
<h2 id="toc">TOC</h2>
<ul>
<li><a href="#See-table-values-in-Debug-on-SQL">See table values in Debug on SQL</a></li>
<li><a href="#Get-a-CSV-Report-from-SSRS-with-an-URL">Get a CSV Report from SSRS with an URL</a></li>
<li><a href="#Get-Column-types-from-a-SELECT-into-a-TEMP-table">Get Column types from a SELECT into a TEMP table</a></li>
<li><a href="#Create-model-from-TEMP-table">Create model from TEMP table</a></li>
<li><a href="#Sync-tables-using-MERGE">Sync tables using MERGE</a></li>
<li><a href="#List-ConnectionPools">List ConnectionPools</a></li>
<li><a href="#Truncate-all-tables-in-DB">Truncate all tables in DB</a></li>
<li><a href="#Credits">Credits</a></li>
</ul>
<hr />
<h2 id="see-table-values-in-debug-on-sql">See table values in Debug on SQL</h2>
<p>When debugging in <abbr title="SQL Server Management Studio">SSMS</abbr>, it actually has a locals watch window… that doesn’t show table values.<br />
Unless you do this:</p>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">-- <tablename> can be an @table variable</span>
<span class="c1">-- Can then view @v in locals window; OK for small amounts of data</span>
<span class="k">DECLARE</span> <span class="o">@</span><span class="n">v</span> <span class="n">XML</span> <span class="o">=</span> <span class="p">(</span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="o"><</span><span class="n">tablename</span><span class="o">></span> <span class="k">FOR</span> <span class="n">XML</span> <span class="n">AUTO</span><span class="p">)</span>
</code></pre></div></div>
<hr />
<h2 id="get-a-csv-report-from-ssrs-with-an-url">Get a CSV Report from SSRS with an URL</h2>
<p>Sometimes you need a lot of reports from <abbr title="SQL Server Reporting Server">SSRS</abbr>, where you are going to diff the csv or whatever</p>
<ul>
<li><a href="http://blogs.infosupport.com/modify-reporting-services-export-to-csv-behavior/">http://blogs.infosupport.com/modify-reporting-services-export-to-csv-behavior/</a></li>
<li><a href="http://stackoverflow.com/questions/1078863/passing-parameter-via-url-to-sql-server-reporting-service">http://stackoverflow.com/questions/1078863/passing-parameter-via-url-to-sql-server-reporting-service</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms155391.aspx">http://msdn.microsoft.com/en-us/library/ms155391.aspx</a></li>
</ul>
<p>The Url Format:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>http://<server>/reportserver?/<path>/<report>&rs:Command=Render&rs:Format=CSV&<parameter>=<value>&<parameter>=<value>
</code></pre></div></div>
<p>Example:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>http://blahblah.com/ReportServer?/Reports/GetThings&rs:Command=Render&rs:Format=CSV&StartDate=2014-01-01&EndDate=2015-01-01
</code></pre></div></div>
<hr />
<h2 id="get-column-types-from-a-select-into-a-temp-table">Get Column types from a Select into a temp table</h2>
<p>Sometimes you want a model from a sql <code class="language-plaintext highlighter-rouge">SELECT</code>, like for <a href="https://github.com/StackExchange/Dapper">Dapper</a> or something…</p>
<ul>
<li><a href="http://stackoverflow.com/questions/8976414/get-structure-of-temp-table-like-generate-sql-script-and-clear-temp-table-for">http://stackoverflow.com/questions/8976414/get-structure-of-temp-table-like-generate-sql-script-and-clear-temp-table-for</a></li>
</ul>
<p>(Note to self - I have had this sql for quite a while, it may have typos etc; probably needs its own posting too)</p>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="s1">'Have a nice day'</span> <span class="k">AS</span> <span class="n">Howdy</span>
<span class="p">,</span><span class="n">GETDATE</span><span class="p">()</span> <span class="k">AS</span> <span class="n">Nowby</span>
<span class="p">,</span><span class="o">*</span>
<span class="k">INTO</span> <span class="o">#</span><span class="n">myTempTable</span> <span class="c1">-- creates a new temp table</span>
<span class="k">FROM</span> <span class="n">tMyTable</span> <span class="c1">-- some table in your database</span>
<span class="k">EXEC</span> <span class="n">tempdb</span><span class="p">..</span><span class="n">sp_help</span> <span class="s1">'#myTempTable'</span>
<span class="k">DROP</span> <span class="k">TABLE</span> <span class="o">#</span><span class="n">myTempTable</span>
<span class="c1">------------------------------------------------------</span>
<span class="n">IF</span> <span class="n">OBJECT_ID</span><span class="p">(</span><span class="s1">'tempdb..#TEMP'</span><span class="p">)</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
<span class="k">BEGIN</span>
<span class="k">DROP</span> <span class="k">TABLE</span> <span class="o">#</span><span class="k">TEMP</span>
<span class="k">END</span>
<span class="k">SELECT</span> <span class="o">*</span>
<span class="k">INTO</span> <span class="o">#</span><span class="k">TEMP</span>
<span class="k">FROM</span> <span class="n">WHEREVER</span>
<span class="k">SELECT</span> <span class="c1">--*</span>
<span class="s1">','</span> <span class="o">+</span> <span class="k">c</span><span class="p">.</span><span class="k">COLUMN_NAME</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="k">UPPER</span><span class="p">(</span><span class="k">c</span><span class="p">.</span><span class="n">DATA_TYPE</span><span class="p">)</span> <span class="o">+</span> <span class="k">CASE</span>
<span class="k">WHEN</span> <span class="k">c</span><span class="p">.</span><span class="n">DATA_TYPE</span> <span class="k">IN</span> <span class="p">(</span>
<span class="s1">'char'</span>
<span class="p">,</span><span class="s1">'varchar'</span>
<span class="p">,</span><span class="s1">'nvarchar'</span>
<span class="p">)</span>
<span class="k">THEN</span> <span class="s1">'('</span> <span class="o">+</span> <span class="k">CAST</span><span class="p">(</span><span class="k">c</span><span class="p">.</span><span class="n">CHARACTER_MAXIMUM_LENGTH</span> <span class="k">AS</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span> <span class="o">+</span> <span class="s1">')'</span>
<span class="k">WHEN</span> <span class="k">c</span><span class="p">.</span><span class="n">DATA_TYPE</span> <span class="k">IN</span> <span class="p">(</span><span class="s1">'numeric'</span><span class="p">)</span>
<span class="k">THEN</span> <span class="s1">'('</span> <span class="o">+</span> <span class="k">CAST</span><span class="p">(</span><span class="k">c</span><span class="p">.</span><span class="n">NUMERIC_PRECISION</span> <span class="k">AS</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span> <span class="o">+</span> <span class="s1">','</span> <span class="o">+</span> <span class="k">CAST</span><span class="p">(</span><span class="k">c</span><span class="p">.</span><span class="n">NUMERIC_PRECISION_RADIX</span> <span class="k">AS</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span> <span class="o">+</span> <span class="s1">')'</span>
<span class="k">ELSE</span> <span class="s1">''</span>
<span class="k">END</span> <span class="o">+</span> <span class="k">CASE</span>
<span class="k">WHEN</span> <span class="k">c</span><span class="p">.</span><span class="n">IS_NULLABLE</span> <span class="o">=</span> <span class="s1">'no'</span>
<span class="k">THEN</span> <span class="s1">' NOT NULL'</span>
<span class="k">ELSE</span> <span class="s1">''</span>
<span class="k">END</span>
<span class="k">FROM</span> <span class="n">tempdb</span><span class="p">.</span><span class="n">INFORMATION_SCHEMA</span><span class="p">.</span><span class="n">TABLES</span> <span class="n">t</span>
<span class="k">INNER</span> <span class="k">JOIN</span> <span class="n">tempdb</span><span class="p">.</span><span class="n">INFORMATION_SCHEMA</span><span class="p">.</span><span class="n">COLUMNS</span> <span class="k">c</span> <span class="k">ON</span> <span class="n">t</span><span class="p">.</span><span class="k">TABLE_NAME</span> <span class="o">=</span> <span class="k">c</span><span class="p">.</span><span class="k">TABLE_NAME</span>
<span class="k">WHERE</span> <span class="n">t</span><span class="p">.</span><span class="k">TABLE_NAME</span> <span class="k">LIKE</span> <span class="s1">'%TEMP%'</span>
</code></pre></div></div>
<h2 id="create-model-from-temp-table">Create model from TEMP table</h2>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">---------------------------------------------------</span>
<span class="c1">-- Makes MODEL and MapToMODEL extension</span>
<span class="c1">---------------------------------------------------</span>
<span class="n">IF</span> <span class="n">OBJECT_ID</span><span class="p">(</span><span class="s1">'tempdb..#TEMP'</span><span class="p">)</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
<span class="k">BEGIN</span>
<span class="k">DROP</span> <span class="k">TABLE</span> <span class="o">#</span><span class="k">TEMP</span>
<span class="k">END</span>
<span class="k">SELECT</span> <span class="n">TOP</span> <span class="mi">1</span> <span class="o">*</span>
<span class="k">INTO</span> <span class="o">#</span><span class="k">TEMP</span>
<span class="k">FROM</span> <span class="n">SampleDB</span><span class="p">.</span><span class="n">dbo</span><span class="p">.</span><span class="n">TestTable</span>
<span class="c1">--select * from INFORMATION_SCHEMA.COLUMNS c where c.TABLE_NAME =</span>
<span class="c1">-- Don't forget to set RtClick > Query Options > Results > Text to 8192</span>
<span class="c1">-- http://msdn.microsoft.com/en-au/library/ms179334%28v=sql.105%29.aspx</span>
<span class="c1">-- http://stackoverflow.com/questions/1484147/get-list-of-computed-columns-in-database-table-sql-server</span>
<span class="k">DECLARE</span> <span class="o">@</span><span class="n">classType</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">50</span><span class="p">)</span> <span class="o">=</span> <span class="s1">'TestTable'</span>
<span class="k">DECLARE</span> <span class="o">@</span><span class="n">nameSpace</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">50</span><span class="p">)</span> <span class="o">=</span> <span class="s1">'Company.Module.Areas.HelloWorld.Models'</span>
<span class="k">DECLARE</span> <span class="o">@</span><span class="k">result</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="k">max</span><span class="p">)</span>
<span class="c1">---------------------------------------------------------------------</span>
<span class="k">DECLARE</span> <span class="o">@</span><span class="n">TypeMapping</span> <span class="k">TABLE</span> <span class="p">(</span>
<span class="n">SqlType</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
<span class="p">,</span> <span class="n">NetType</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
<span class="p">)</span>
<span class="k">INSERT</span> <span class="k">INTO</span> <span class="o">@</span><span class="n">TypeMapping</span>
<span class="k">SELECT</span> <span class="s1">'bigint'</span><span class="p">,</span> <span class="s1">'long'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'binary'</span><span class="p">,</span> <span class="s1">'byte[]'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'bit'</span><span class="p">,</span> <span class="s1">'bool'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'char'</span><span class="p">,</span> <span class="s1">'string'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'date'</span><span class="p">,</span> <span class="s1">'DateTime'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'datetime'</span><span class="p">,</span> <span class="s1">'DateTime'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'datetime2'</span><span class="p">,</span> <span class="s1">'DateTime'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'DATETIMEOFFSET'</span><span class="p">,</span> <span class="s1">'DateTimeOffset'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'decimal'</span><span class="p">,</span> <span class="s1">'decimal'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'float'</span><span class="p">,</span> <span class="s1">'double'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'int'</span><span class="p">,</span> <span class="s1">'int'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'money'</span><span class="p">,</span> <span class="s1">'decimal'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'nchar'</span><span class="p">,</span> <span class="s1">'string'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'ntext'</span><span class="p">,</span> <span class="s1">'string'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'numeric'</span><span class="p">,</span> <span class="s1">'decimal'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'nvarchar'</span><span class="p">,</span> <span class="s1">'string'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'real'</span><span class="p">,</span> <span class="s1">'single'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'rowversion'</span><span class="p">,</span> <span class="s1">'byte[]'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'smallint'</span><span class="p">,</span> <span class="s1">'short'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'smallmoney'</span><span class="p">,</span> <span class="s1">'decimal'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'sql_variant'</span><span class="p">,</span> <span class="s1">'object'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'text'</span><span class="p">,</span> <span class="s1">'string'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'time'</span><span class="p">,</span> <span class="s1">'TimeSpan'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'tinyint'</span><span class="p">,</span> <span class="s1">'byte'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'uniqueidentifier'</span><span class="p">,</span> <span class="s1">'Guid'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'varbinary'</span><span class="p">,</span> <span class="s1">'byte[]'</span>
<span class="k">UNION</span> <span class="k">SELECT</span> <span class="s1">'varchar'</span><span class="p">,</span> <span class="s1">'string'</span>
<span class="c1">---------------------------------------------------------------------</span>
<span class="c1">-- Name mapping</span>
<span class="k">DECLARE</span> <span class="o">@</span><span class="n">Fields</span> <span class="k">TABLE</span> <span class="p">(</span>
<span class="n">IsRequired</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
<span class="p">,</span> <span class="n">StringLength</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">30</span><span class="p">)</span>
<span class="p">,</span> <span class="n">NetType</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
<span class="p">,</span> <span class="n">ColumnName</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">30</span><span class="p">)</span>
<span class="p">,</span> <span class="n">FieldName</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">30</span><span class="p">)</span>
<span class="p">)</span>
<span class="k">INSERT</span> <span class="k">INTO</span> <span class="o">@</span><span class="n">Fields</span>
<span class="k">SELECT</span> <span class="k">CASE</span> <span class="n">ic</span><span class="p">.</span><span class="n">IS_NULLABLE</span>
<span class="k">WHEN</span> <span class="s1">'NO'</span>
<span class="k">THEN</span> <span class="s1">'[Required]'</span>
<span class="k">ELSE</span> <span class="s1">''</span>
<span class="k">END</span> <span class="k">AS</span> <span class="n">IsRequired</span>
<span class="p">,</span> <span class="k">CASE</span>
<span class="k">WHEN</span> <span class="n">ic</span><span class="p">.</span><span class="n">Data_type</span> <span class="k">IN</span> <span class="p">(</span><span class="s1">'char'</span><span class="p">,</span> <span class="s1">'nchar'</span><span class="p">,</span> <span class="s1">'nvarchar'</span><span class="p">,</span> <span class="s1">'varchar'</span><span class="p">)</span>
<span class="k">THEN</span> <span class="s1">'[StringLength('</span> <span class="o">+</span> <span class="k">cast</span><span class="p">(</span><span class="n">ic</span><span class="p">.</span><span class="n">CHARACTER_MAXIMUM_LENGTH</span> <span class="k">AS</span> <span class="nb">VARCHAR</span><span class="p">)</span> <span class="o">+</span> <span class="s1">')]'</span>
<span class="k">ELSE</span> <span class="s1">''</span>
<span class="k">END</span> <span class="k">AS</span> <span class="n">StringLength</span>
<span class="p">,</span> <span class="n">tm</span><span class="p">.</span><span class="n">NetType</span> <span class="o">+</span> <span class="k">CASE</span>
<span class="k">WHEN</span> <span class="n">ic</span><span class="p">.</span><span class="n">IS_NULLABLE</span> <span class="o">=</span> <span class="s1">'YES'</span>
<span class="k">AND</span> <span class="n">ic</span><span class="p">.</span><span class="n">Data_type</span> <span class="k">NOT</span> <span class="k">IN</span> <span class="p">(</span><span class="s1">'char'</span><span class="p">,</span> <span class="s1">'nchar'</span><span class="p">,</span> <span class="s1">'ntext'</span><span class="p">,</span> <span class="s1">'nvarchar'</span><span class="p">,</span> <span class="s1">'text'</span><span class="p">,</span> <span class="s1">'varchar'</span><span class="p">)</span>
<span class="k">THEN</span> <span class="s1">'?'</span>
<span class="k">ELSE</span> <span class="s1">''</span>
<span class="k">END</span> <span class="k">AS</span> <span class="n">NetType</span>
<span class="p">,</span> <span class="n">ic</span><span class="p">.</span><span class="k">COLUMN_NAME</span> <span class="k">AS</span> <span class="n">ColumnName</span>
<span class="p">,</span> <span class="k">UPPER</span><span class="p">(</span><span class="k">SUBSTRING</span><span class="p">(</span><span class="n">ic</span><span class="p">.</span><span class="k">COLUMN_NAME</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span>
<span class="o">+</span> <span class="k">SUBSTRING</span><span class="p">(</span><span class="n">ic</span><span class="p">.</span><span class="k">COLUMN_NAME</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="n">LEN</span><span class="p">(</span><span class="n">ic</span><span class="p">.</span><span class="k">COLUMN_NAME</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="k">AS</span> <span class="n">FieldName</span>
<span class="k">FROM</span> <span class="n">tempdb</span><span class="p">.</span><span class="n">INFORMATION_SCHEMA</span><span class="p">.</span><span class="n">TABLES</span> <span class="n">t</span>
<span class="k">INNER</span> <span class="k">JOIN</span> <span class="n">tempdb</span><span class="p">.</span><span class="n">INFORMATION_SCHEMA</span><span class="p">.</span><span class="n">COLUMNS</span> <span class="n">ic</span> <span class="k">ON</span> <span class="n">t</span><span class="p">.</span><span class="k">TABLE_NAME</span> <span class="o">=</span> <span class="n">ic</span><span class="p">.</span><span class="k">TABLE_NAME</span>
<span class="k">LEFT</span> <span class="k">JOIN</span> <span class="o">@</span><span class="n">TypeMapping</span> <span class="k">AS</span> <span class="n">tm</span> <span class="k">ON</span> <span class="n">tm</span><span class="p">.</span><span class="n">SqlType</span> <span class="o">=</span> <span class="n">ic</span><span class="p">.</span><span class="n">DATA_TYPE</span>
<span class="k">WHERE</span> <span class="n">t</span><span class="p">.</span><span class="k">TABLE_NAME</span> <span class="k">LIKE</span> <span class="s1">'%TEMP%'</span>
<span class="c1">--SELECT * FROM @Fields</span>
<span class="c1">---------------------------------------------------------------------</span>
<span class="k">SELECT</span> <span class="o">@</span><span class="k">result</span> <span class="o">=</span> <span class="k">cast</span><span class="p">(</span><span class="s1">'// Generated from the SQL Server Tables
// Because it would be crazy to write this by hand!
using System;
using System.ComponentModel.DataAnnotations;
using System.Data;
namespace '</span> <span class="o">+</span> <span class="o">@</span><span class="n">nameSpace</span> <span class="o">+</span> <span class="s1">'
{'</span> <span class="k">AS</span> <span class="nb">VARCHAR</span><span class="p">(</span><span class="k">max</span><span class="p">))</span>
<span class="k">SET</span> <span class="o">@</span><span class="k">result</span> <span class="o">=</span> <span class="o">@</span><span class="k">result</span> <span class="o">+</span> <span class="s1">'
public class '</span> <span class="o">+</span> <span class="o">@</span><span class="n">classType</span> <span class="o">+</span> <span class="s1">'
{'</span>
<span class="k">SELECT</span> <span class="o">@</span><span class="k">result</span> <span class="o">=</span> <span class="o">@</span><span class="k">result</span> <span class="o">+</span> <span class="s1">'
'</span> <span class="o">+</span> <span class="n">f</span><span class="p">.</span><span class="n">IsRequired</span> <span class="o">+</span> <span class="n">f</span><span class="p">.</span><span class="n">StringLength</span> <span class="o">+</span> <span class="s1">'
public '</span> <span class="o">+</span> <span class="n">f</span><span class="p">.</span><span class="n">NetType</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="n">f</span><span class="p">.</span><span class="n">FieldName</span> <span class="o">+</span> <span class="s1">' { get; set; }'</span>
<span class="k">FROM</span> <span class="o">@</span><span class="n">Fields</span> <span class="k">AS</span> <span class="n">f</span>
<span class="c1">---------------------------------------------------------------------</span>
<span class="k">SELECT</span> <span class="o">@</span><span class="k">result</span> <span class="o">=</span> <span class="o">@</span><span class="k">result</span> <span class="o">+</span> <span class="s1">'
}
//Needs to be external from mapped class, otherwise interferes with WebAPI
internal static partial class '</span> <span class="o">+</span> <span class="o">@</span><span class="n">classType</span> <span class="o">+</span> <span class="s1">'Extensions
{
public static '</span> <span class="o">+</span> <span class="o">@</span><span class="n">classType</span> <span class="o">+</span> <span class="s1">' MapTo'</span> <span class="o">+</span> <span class="o">@</span><span class="n">classType</span> <span class="o">+</span> <span class="s1">'(this IDataReader dataReader)
{
'</span> <span class="o">+</span> <span class="o">@</span><span class="n">classType</span> <span class="o">+</span> <span class="s1">' result = new '</span> <span class="o">+</span> <span class="o">@</span><span class="n">classType</span> <span class="o">+</span> <span class="s1">'();'</span>
<span class="c1">---------------------------------------------------------------------</span>
<span class="c1">-- Constructor mapping</span>
<span class="k">SELECT</span> <span class="o">@</span><span class="k">result</span> <span class="o">=</span> <span class="o">@</span><span class="k">result</span> <span class="o">+</span> <span class="k">CASE</span>
<span class="k">WHEN</span> <span class="n">f</span><span class="p">.</span><span class="n">IsRequired</span> <span class="o">!=</span> <span class="s1">''</span>
<span class="k">THEN</span> <span class="s1">'
result.'</span> <span class="o">+</span> <span class="n">f</span><span class="p">.</span><span class="n">FieldName</span> <span class="o">+</span> <span class="s1">' = ('</span> <span class="o">+</span> <span class="n">f</span><span class="p">.</span><span class="n">NetType</span> <span class="o">+</span> <span class="s1">')dataReader["'</span> <span class="o">+</span> <span class="n">f</span><span class="p">.</span><span class="n">ColumnName</span> <span class="o">+</span> <span class="s1">'"];'</span>
<span class="k">ELSE</span> <span class="s1">'
result.'</span> <span class="o">+</span> <span class="n">f</span><span class="p">.</span><span class="n">FieldName</span> <span class="o">+</span> <span class="s1">' = dataReader["'</span> <span class="o">+</span> <span class="n">f</span><span class="p">.</span><span class="n">ColumnName</span> <span class="o">+</span> <span class="s1">'"] as '</span> <span class="o">+</span> <span class="n">f</span><span class="p">.</span><span class="n">NetType</span> <span class="o">+</span> <span class="s1">';'</span>
<span class="k">END</span>
<span class="k">FROM</span> <span class="o">@</span><span class="n">Fields</span> <span class="k">AS</span> <span class="n">f</span>
<span class="k">SELECT</span> <span class="o">@</span><span class="k">result</span> <span class="o">=</span> <span class="o">@</span><span class="k">result</span> <span class="o">+</span> <span class="s1">'
return result;
}
}
}
'</span>
<span class="n">PRINT</span> <span class="o">@</span><span class="k">result</span>
</code></pre></div></div>
<hr />
<h2 id="sync-tables-using-merge">Sync tables using MERGE</h2>
<p>I haven’t performance tested this - it’s probabaly <em>really</em> slow</p>
<ul>
<li><a href="http://www.toplinestrategies.com/blogs/application-development/sync-data-changes-tsql-merge">http://www.toplinestrategies.com/blogs/application-development/sync-data-changes-tsql-merge</a></li>
</ul>
<p>Notice it includes the syntax for <code class="language-plaintext highlighter-rouge">OUTPUT</code>!</p>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">MERGE</span> <span class="n">CustomerTarget</span> <span class="k">AS</span> <span class="n">t</span>
<span class="k">USING</span> <span class="n">CustomerSource</span> <span class="k">AS</span> <span class="n">s</span>
<span class="k">ON</span> <span class="n">t</span><span class="p">.</span><span class="n">Email</span> <span class="o">=</span> <span class="n">s</span><span class="p">.</span><span class="n">Email</span>
<span class="k">WHEN</span> <span class="n">MATCHED</span>
<span class="k">AND</span> <span class="p">(</span>
<span class="n">t</span><span class="p">.</span><span class="n">FirstName</span> <span class="o">!=</span> <span class="n">s</span><span class="p">.</span><span class="n">FirstName</span>
<span class="k">OR</span> <span class="n">t</span><span class="p">.</span><span class="n">LastName</span> <span class="o">!=</span> <span class="n">s</span><span class="p">.</span><span class="n">LastName</span>
<span class="k">OR</span> <span class="n">t</span><span class="p">.</span><span class="n">Address</span> <span class="o">!=</span> <span class="n">s</span><span class="p">.</span><span class="n">Address</span>
<span class="k">OR</span> <span class="n">t</span><span class="p">.</span><span class="n">City</span> <span class="o">!=</span> <span class="n">s</span><span class="p">.</span><span class="n">City</span>
<span class="k">OR</span> <span class="n">t</span><span class="p">.</span><span class="k">STATE</span> <span class="o">!=</span> <span class="n">s</span><span class="p">.</span><span class="k">STATE</span>
<span class="k">OR</span> <span class="n">t</span><span class="p">.</span><span class="n">PostalCode</span> <span class="o">!=</span> <span class="n">s</span><span class="p">.</span><span class="n">PostalCode</span>
<span class="k">OR</span> <span class="n">t</span><span class="p">.</span><span class="n">Email</span> <span class="o">!=</span> <span class="n">s</span><span class="p">.</span><span class="n">Email</span>
<span class="p">)</span>
<span class="k">THEN</span>
<span class="k">UPDATE</span>
<span class="k">SET</span> <span class="n">t</span><span class="p">.</span><span class="n">FirstName</span> <span class="o">=</span> <span class="n">s</span><span class="p">.</span><span class="n">FirstName</span><span class="p">,</span>
<span class="n">t</span><span class="p">.</span><span class="n">LastName</span> <span class="o">=</span> <span class="n">s</span><span class="p">.</span><span class="n">LastName</span><span class="p">,</span>
<span class="n">t</span><span class="p">.</span><span class="n">Address</span> <span class="o">=</span> <span class="n">s</span><span class="p">.</span><span class="n">Address</span><span class="p">,</span>
<span class="n">t</span><span class="p">.</span><span class="n">City</span> <span class="o">=</span> <span class="n">s</span><span class="p">.</span><span class="n">City</span><span class="p">,</span>
<span class="n">t</span><span class="p">.</span><span class="k">STATE</span> <span class="o">=</span> <span class="n">s</span><span class="p">.</span><span class="k">STATE</span><span class="p">,</span>
<span class="n">t</span><span class="p">.</span><span class="n">PostalCode</span> <span class="o">=</span> <span class="n">s</span><span class="p">.</span><span class="n">PostalCode</span><span class="p">,</span>
<span class="n">t</span><span class="p">.</span><span class="n">Email</span> <span class="o">=</span> <span class="n">s</span><span class="p">.</span><span class="n">Email</span>
<span class="k">WHEN</span> <span class="k">NOT</span> <span class="n">MATCHED</span> <span class="k">BY</span> <span class="n">TARGET</span>
<span class="k">THEN</span>
<span class="k">INSERT</span> <span class="p">(</span>
<span class="n">FirstName</span><span class="p">,</span>
<span class="n">LastName</span><span class="p">,</span>
<span class="n">Address</span><span class="p">,</span>
<span class="n">City</span><span class="p">,</span>
<span class="k">STATE</span><span class="p">,</span>
<span class="n">PostalCode</span><span class="p">,</span>
<span class="n">Email</span>
<span class="p">)</span>
<span class="k">VALUES</span> <span class="p">(</span>
<span class="n">s</span><span class="p">.</span><span class="n">FirstName</span><span class="p">,</span>
<span class="n">s</span><span class="p">.</span><span class="n">LastName</span><span class="p">,</span>
<span class="n">s</span><span class="p">.</span><span class="n">Address</span><span class="p">,</span>
<span class="n">s</span><span class="p">.</span><span class="n">City</span><span class="p">,</span>
<span class="n">s</span><span class="p">.</span><span class="k">STATE</span><span class="p">,</span>
<span class="n">s</span><span class="p">.</span><span class="n">PostalCode</span><span class="p">,</span>
<span class="n">s</span><span class="p">.</span><span class="n">Email</span>
<span class="p">)</span>
<span class="k">WHEN</span> <span class="k">NOT</span> <span class="n">MATCHED</span> <span class="k">BY</span> <span class="k">SOURCE</span>
<span class="k">THEN</span>
<span class="k">DELETE</span>
<span class="k">OUTPUT</span> <span class="err">$</span><span class="n">ACTION</span> <span class="k">AS</span> <span class="k">Operation</span><span class="p">,</span>
<span class="n">inserted</span><span class="p">.</span><span class="n">Email</span><span class="p">,</span>
<span class="n">inserted</span><span class="p">.</span><span class="n">City</span><span class="p">,</span>
<span class="n">inserted</span><span class="p">.</span><span class="k">STATE</span><span class="p">,</span>
<span class="n">deleted</span><span class="p">.</span><span class="n">Email</span><span class="p">,</span>
<span class="n">deleted</span><span class="p">.</span><span class="n">City</span><span class="p">,</span>
<span class="n">deleted</span><span class="p">.</span><span class="k">STATE</span><span class="p">;</span>
</code></pre></div></div>
<hr />
<h2 id="list-connectionpools">List ConnectionPools</h2>
<ul>
<li><a href="http://betav.com/blog/billva/2007/05/managing_and_monitoring_net_co.html">http://betav.com/blog/billva/2007/05/managing_and_monitoring_net_co.html</a></li>
</ul>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">S</span><span class="p">.</span><span class="n">spid</span><span class="p">,</span> <span class="n">loginame</span><span class="p">,</span> <span class="n">login_time</span><span class="p">,</span> <span class="n">last_batch</span><span class="p">,</span> <span class="n">status</span><span class="p">,</span> <span class="n">hostname</span><span class="p">,</span> <span class="n">program_name</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span>
<span class="p">(</span>
<span class="k">select</span> <span class="nb">text</span> <span class="k">from</span> <span class="n">sys</span><span class="p">.</span><span class="n">dm_exec_sql_text</span><span class="p">(</span><span class="n">S</span><span class="p">.</span><span class="n">sql_handle</span><span class="p">)</span>
<span class="p">)</span> <span class="k">as</span> <span class="n">last_sql</span>
<span class="k">FROM</span> <span class="n">sys</span><span class="p">.</span><span class="n">sysprocesses</span> <span class="n">S</span>
<span class="k">where</span> <span class="n">dbid</span> <span class="o">></span> <span class="mi">0</span>
<span class="k">and</span> <span class="n">DB_NAME</span><span class="p">(</span><span class="n">dbid</span><span class="p">)</span> <span class="o">=</span> <span class="s1">'MyDatabase'</span>
<span class="k">and</span> <span class="n">loginame</span> <span class="o">=</span> <span class="s1">'DOMAIN</span><span class="se">\M</span><span class="s1">YNAME'</span>
<span class="k">order</span> <span class="k">by</span> <span class="n">last_batch</span> <span class="k">asc</span>
</code></pre></div></div>
<hr />
<h2 id="truncate-all-tables-in-db">Truncate all tables in DB</h2>
<p>This script basically ‘resets’ your database by removing all records from every table whilst keeping constraints intact and resetting identitys.</p>
<ul>
<li><a href="http://blog.tboda.com/post/5-Useful-SQL-Server-Scripts.aspx">http://blog.tboda.com/post/5-Useful-SQL-Server-Scripts.aspx</a></li>
</ul>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">-- Disable Constraints & Triggers</span>
<span class="k">EXEC</span> <span class="n">sp_MSforeachtable</span> <span class="s1">'ALTER TABLE ? NOCHECK CONSTRAINT ALL'</span>
<span class="k">EXEC</span> <span class="n">sp_MSforeachtable</span> <span class="s1">'ALTER TABLE ? DISABLE TRIGGER ALL'</span>
<span class="c1">-- Perform delete operation on all table for cleanup</span>
<span class="k">EXEC</span> <span class="n">sp_MSforeachtable</span> <span class="s1">'DELETE ?'</span>
<span class="c1">-- Enable Constraints & Triggers again</span>
<span class="k">EXEC</span> <span class="n">sp_MSforeachtable</span> <span class="s1">'ALTER TABLE ? CHECK CONSTRAINT ALL'</span>
<span class="k">EXEC</span> <span class="n">sp_MSforeachtable</span> <span class="s1">'ALTER TABLE ? ENABLE TRIGGER ALL'</span>
<span class="c1">-- Reset Identity on tables with identity column</span>
<span class="k">EXEC</span> <span class="n">sp_MSforeachtable</span> <span class="s1">'IF OBJECTPROPERTY(OBJECT_ID(</span><span class="se">''</span><span class="s1">?</span><span class="se">''</span><span class="s1">), </span><span class="se">''</span><span class="s1">TableHasIdentity</span><span class="se">''</span><span class="s1">) = 1 BEGIN DBCC CHECKIDENT (</span><span class="se">''</span><span class="s1">?</span><span class="se">''</span><span class="s1">,RESEED,0) END'</span>
</code></pre></div></div>
<hr />
<h2 id="credits">Credits</h2>
<p>If you find this useful, go be nice to someone. Pay it forward.</p>
<p><em>Cheers!</em></p>Needs a gifPowershell secrets, so you don’t commit them to GitHub2020-02-02T00:00:00+00:002020-02-02T00:00:00+00:00http://www.finnangelo.com/powershell/2020/02/02/Powershell_Secrets<figure style="float:right; margin-left:3em; width:50%;">
<a href="http://zacharytotah.com/2016/09/pop-culture-tony-stark/gandalf-secrets-meme/">
<img src="https://github.com/FinnAngelo/FinnAngelo.github.io/raw/master/_posts/images/Gandalf-Secrets-Meme.jpg" alt="A wizard always has secrets" />
</a>
<figcaption>Shhhh...</figcaption>
</figure>
<p>It will not surprise anyone that commiting secrets to GitHub is a bad thing.</p>
<p>When developing my goofball <a href="https://securitytrails.com/blog/github-dorks">this-will-never-get-committed</a> scripts, I want zero-risk for my secrets - things like logins to azure, connection strings for databases, <del>how I secretly like hawiian pizza</del>, and anything I don’t want the world to know.</p>
<p>I have spent minutes looking on the googles, and I haven’t found the exact equivalent of <a href="https://docs.microsoft.com/en-us/aspnet/core/security/app-secret">the dotnet user secrets</a> for powershell.</p>
<p>I have made this workaround with the expectation that there is probably a better solution, but I wasn’t going to let that stop me from making sure <em>my</em> secrets are safe while I am playing with other code.</p>
<p><strong>UPDATE:</strong> Naturally there is an <a href="https://devblogs.microsoft.com/powershell/secrets-management-development-release/">alpha release of the Microsoft.Powershell.SecretsManagement</a> a couple of days after I publish this.<br />
I’ll be using this as soon as it comes out of prerelease… I’ll update this post when this happens.</p>
<hr />
<h2 id="toc">TOC</h2>
<ul>
<li><a href="#Add-CurrentUserAllHosts-profile">Add CurrentUserAllHosts profile</a></li>
<li><a href="#Set-MyDevSecret-and-Get-MyDevSecret">Set-MyDevSecret and Get-MyDevSecret</a></li>
<li><a href="#Using-the-MyDevSecret-functions">Using the MyDevSecret functions</a></li>
<li><a href="#Credits">Credits</a></li>
</ul>
<hr />
<h2 id="add-currentuserallhosts-profile">Add CurrentUserAllHosts profile</h2>
<p>I’m intending to use this for my Azure CLI learnin’, so I want this secrets stuff available to me all the time.</p>
<p>This is in my <a href="http://www.finnangelo.com/2019/05/24/Powershell_Snippets.html#Persistent-profile">Powershell Snippets</a> article, but here it is again…</p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kr">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="n">Test-Path</span><span class="w"> </span><span class="nv">$Profile</span><span class="o">.</span><span class="nf">CurrentUserAllHosts</span><span class="p">))</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="n">New-Item</span><span class="w"> </span><span class="nt">-Type</span><span class="w"> </span><span class="nx">file</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nv">$Profile</span><span class="o">.</span><span class="nf">CurrentUserAllHosts</span><span class="w"> </span><span class="nt">-Force</span><span class="w"> </span><span class="p">}</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="set-mydevsecret-and-get-mydevsecret">Set-MyDevSecret and Get-MyDevSecret</h2>
<p>These functions are using the Windows DPAPI.<br />
This uses the Windows Indentity as keys (etc) to encrypt the secrets as files on the hard drive, so they can only be decrypted by the person logged in who created them.</p>
<p>And as the secrets should be stored well away from the github folder, I put the encrypted files on some rando non-home drive.</p>
<p>On my PC this is at <code class="language-plaintext highlighter-rouge">D:\Users\Jon\Documents\WindowsPowerShell\profile.ps1</code></p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Set-StrictMode</span><span class="w"> </span><span class="nt">-Version</span><span class="w"> </span><span class="nx">Latest</span><span class="w">
</span><span class="c"># ---------------------------------------------------</span><span class="w">
</span><span class="c"># User Secrets</span><span class="w">
</span><span class="c"># http://www.finnangelo.com/powershell/2020/02/02/Powershell_Secrets.html</span><span class="w">
</span><span class="kr">function</span><span class="w"> </span><span class="nf">Set-MyDevSecret</span><span class="p">([</span><span class="n">String</span><span class="p">]</span><span class="w"> </span><span class="nv">$key</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="n">String</span><span class="p">]</span><span class="w"> </span><span class="nv">$secret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nv">$filePath</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"G:\MyDevSecret\</span><span class="nv">$key</span><span class="s2">.txt"</span><span class="w">
</span><span class="nv">$secureString</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">$secret</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">ConvertTo-SecureString</span><span class="w"> </span><span class="nt">-AsPlainText</span><span class="w"> </span><span class="nt">-Force</span><span class="w">
</span><span class="nv">$secureStringText</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">$secureString</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">ConvertFrom-SecureString</span><span class="w">
</span><span class="n">New-Item</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nv">$filePath</span><span class="w"> </span><span class="nt">-Type</span><span class="w"> </span><span class="nx">file</span><span class="w"> </span><span class="nt">-Force</span><span class="w">
</span><span class="n">Set-Content</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nv">$filePath</span><span class="w"> </span><span class="nt">-Value</span><span class="w"> </span><span class="nv">$secureStringText</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="kr">function</span><span class="w"> </span><span class="nf">Set-MyDevSecretFromSecureString</span><span class="p">([</span><span class="n">String</span><span class="p">]</span><span class="w"> </span><span class="nv">$key</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="n">secureString</span><span class="p">]</span><span class="w"> </span><span class="nv">$secureSecret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nv">$filePath</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"G:\MyDevSecret\</span><span class="nv">$key</span><span class="s2">.txt"</span><span class="w">
</span><span class="nv">$secureStringText</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">$secureSecret</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">ConvertFrom-SecureString</span><span class="w">
</span><span class="n">New-Item</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nv">$filePath</span><span class="w"> </span><span class="nt">-Type</span><span class="w"> </span><span class="nx">file</span><span class="w"> </span><span class="nt">-Force</span><span class="w">
</span><span class="n">Set-Content</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nv">$filePath</span><span class="w"> </span><span class="nt">-Value</span><span class="w"> </span><span class="nv">$secureStringText</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="kr">function</span><span class="w"> </span><span class="nf">Get-MyDevSecret</span><span class="p">(</span><span class="nv">$key</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nv">$filePath</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"G:\MyDevSecret\</span><span class="nv">$key</span><span class="s2">.txt"</span><span class="w">
</span><span class="nv">$secureStringText</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Get-Content</span><span class="w"> </span><span class="nv">$filePath</span><span class="w">
</span><span class="nv">$secureString</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">$secureStringText</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">ConvertTo-SecureString</span><span class="w">
</span><span class="nv">$secret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">New-Object</span><span class="w"> </span><span class="nx">PSCredential</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> </span><span class="nv">$secureString</span><span class="p">)</span><span class="o">.</span><span class="nf">GetNetworkCredential</span><span class="p">()</span><span class="o">.</span><span class="nf">Password</span><span class="w">
</span><span class="kr">return</span><span class="w"> </span><span class="nv">$secret</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="using-the-mydevsecret-functions">Using the MyDevSecret functions</h2>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Describe</span><span class="w"> </span><span class="s2">"Explore Setting Secrets for Powershell Modules"</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="n">Context</span><span class="w"> </span><span class="s2">"Check setting a secret"</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="n">It</span><span class="w"> </span><span class="s2">"When Set-MyDevSecret, Then there is a new file"</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="c">#given</span><span class="w">
</span><span class="nv">$secret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"Howdy! I'm a secret!"</span><span class="w">
</span><span class="nv">$key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">System.DateTime</span><span class="p">]::</span><span class="n">Now.ToString</span><span class="p">(</span><span class="s2">"yyyy-MM-dd+HH-mm-ss-ffff"</span><span class="p">)</span><span class="w">
</span><span class="c">#when</span><span class="w">
</span><span class="n">Set-MyDevSecret</span><span class="w"> </span><span class="nv">$key</span><span class="w"> </span><span class="nv">$secret</span><span class="w">
</span><span class="c">#then</span><span class="w">
</span><span class="nv">$result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Test-Path</span><span class="w"> </span><span class="s2">"G:\MyDevSecret\</span><span class="nv">$key</span><span class="s2">.txt"</span><span class="w">
</span><span class="nv">$result</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Should</span><span class="w"> </span><span class="nx">Be</span><span class="w"> </span><span class="nx">True</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="n">Context</span><span class="w"> </span><span class="s2">"Check getting a secret"</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="n">It</span><span class="w"> </span><span class="s2">"When Get-MyDevSecret, Then the secret comes from a file"</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="c">#given</span><span class="w">
</span><span class="nv">$key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">System.DateTime</span><span class="p">]::</span><span class="n">Now.ToString</span><span class="p">(</span><span class="s2">"yyyy-MM-dd+HH-mm-ss-ffff"</span><span class="p">)</span><span class="w">
</span><span class="nv">$secret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"Howdy! I'm a secret! I was set at </span><span class="nv">$key</span><span class="s2">!"</span><span class="w">
</span><span class="n">Set-MyDevSecret</span><span class="w"> </span><span class="nv">$key</span><span class="w"> </span><span class="nv">$secret</span><span class="w">
</span><span class="c">#when</span><span class="w">
</span><span class="nv">$result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Get-MyDevSecret</span><span class="w"> </span><span class="nv">$key</span><span class="w">
</span><span class="c">#then</span><span class="w">
</span><span class="nv">$result</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Should</span><span class="w"> </span><span class="nx">Be</span><span class="w"> </span><span class="nv">$secret</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>
<p>And here is our pester tests passing:</p>
<p><img src="https://github.com/FinnAngelo/FinnAngelo.github.io/raw/master/_posts/images/MyTestsForPowershellSecrets.png" alt="Running 'Explore Setting Secrets for Powershell Modules' with success" /></p>
<hr />
<h2 id="credits">Credits</h2>
<ul>
<li><a href="https://interworks.com/blog/trhymer/2013/07/08/powershell-how-encrypt-and-store-credentials-securely-use-automation-scripts/">Interworks - How to encrypt and store credentials securely</a></li>
<li><a href="https://blog.kloud.com.au/2016/04/21/using-saved-credentials-securely-in-powershell-scripts/">Kloud - Using saved credentials in powershell</a></li>
<li><a href="https://stackoverflow.com/questions/28352141/convert-a-secure-string-to-plain-text">Stackoverflow - Convert a secureString</a></li>
</ul>
<p>If you find this useful, go be nice to someone. Pay it forward.</p>
<p><em>Cheers!</em></p>Shhhh...Handy Dandy Serialization helper2020-01-09T00:00:00+00:002020-01-09T00:00:00+00:00http://www.finnangelo.com/sql/2020/01/09/Serialization-helper<figure style="float:right; margin-left:3em; width:50%;">
<a href="https://pagingfunmums.com/2017/11/02/diy-cereal-killer-halloween-costume/">
<img src="https://github.com/FinnAngelo/FinnAngelo.github.io/raw/master/_posts/images/DIY-Cereal-Killer-Halloween-Costume.jpg" alt="Cereal Killer" />
</a>
<figcaption>This 'Cereal Killer' joke is hilarious...</figcaption>
</figure>
<p>I don’t know what the performance is like on these extension methods, or even if it is thread safe.<br />
Use at your own risk, when you need a quick and dirty serializer.</p>
<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">using</span> <span class="nn">System.IO</span><span class="p">;</span>
<span class="k">using</span> <span class="nn">System.Runtime.Serialization.Formatters.Binary</span><span class="p">;</span>
<span class="k">using</span> <span class="nn">System.Runtime.Serialization.Json</span><span class="p">;</span>
<span class="k">using</span> <span class="nn">System.Text</span><span class="p">;</span>
<span class="k">namespace</span> <span class="nn">MyNamespace</span>
<span class="p">{</span>
<span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">SerializationExtensions</span>
<span class="p">{</span>
<span class="k">public</span> <span class="k">static</span> <span class="kt">byte</span><span class="p">[]</span> <span class="nf">ToByteArray</span><span class="p">(</span><span class="k">this</span> <span class="kt">object</span> <span class="n">obj</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="n">obj</span> <span class="p">==</span> <span class="k">null</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">return</span> <span class="k">null</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">BinaryFormatter</span> <span class="n">binaryFormatter</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">BinaryFormatter</span><span class="p">();</span>
<span class="k">using</span> <span class="p">(</span><span class="n">MemoryStream</span> <span class="n">memoryStream</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">MemoryStream</span><span class="p">())</span>
<span class="p">{</span>
<span class="n">binaryFormatter</span><span class="p">.</span><span class="nf">Serialize</span><span class="p">(</span><span class="n">memoryStream</span><span class="p">,</span> <span class="n">obj</span><span class="p">);</span>
<span class="k">return</span> <span class="n">memoryStream</span><span class="p">.</span><span class="nf">ToArray</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">public</span> <span class="k">static</span> <span class="n">T</span> <span class="n">FromByteArray</span><span class="p"><</span><span class="n">T</span><span class="p">>(</span><span class="k">this</span> <span class="kt">byte</span><span class="p">[]</span> <span class="n">byteArray</span><span class="p">)</span> <span class="k">where</span> <span class="n">T</span> <span class="p">:</span> <span class="k">class</span>
<span class="err">{</span>
<span class="nc">if</span> <span class="p">(</span><span class="n">byteArray</span> <span class="p">==</span> <span class="k">null</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">return</span> <span class="k">default</span><span class="p">(</span><span class="n">T</span><span class="p">);</span>
<span class="p">}</span>
<span class="n">BinaryFormatter</span> <span class="n">binaryFormatter</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">BinaryFormatter</span><span class="p">();</span>
<span class="k">using</span> <span class="p">(</span><span class="n">MemoryStream</span> <span class="n">memoryStream</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">MemoryStream</span><span class="p">(</span><span class="n">byteArray</span><span class="p">))</span>
<span class="p">{</span>
<span class="k">return</span> <span class="n">binaryFormatter</span><span class="p">.</span><span class="nf">Deserialize</span><span class="p">(</span><span class="n">memoryStream</span><span class="p">)</span> <span class="k">as</span> <span class="n">T</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">public</span> <span class="k">static</span> <span class="kt">string</span> <span class="n">ToJson</span><span class="p"><</span><span class="n">T</span><span class="p">>(</span><span class="k">this</span> <span class="n">T</span> <span class="n">instance</span><span class="p">)</span>
<span class="p">{</span>
<span class="kt">var</span> <span class="n">serializer</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">DataContractJsonSerializer</span><span class="p">(</span><span class="k">typeof</span><span class="p">(</span><span class="n">T</span><span class="p">));</span>
<span class="k">using</span> <span class="p">(</span><span class="kt">var</span> <span class="n">ms</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">MemoryStream</span><span class="p">())</span>
<span class="p">{</span>
<span class="n">serializer</span><span class="p">.</span><span class="nf">WriteObject</span><span class="p">(</span><span class="n">ms</span><span class="p">,</span> <span class="n">instance</span><span class="p">);</span>
<span class="kt">var</span> <span class="n">encoding</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">UTF8Encoding</span><span class="p">();</span>
<span class="k">return</span> <span class="n">encoding</span><span class="p">.</span><span class="nf">GetString</span><span class="p">(</span><span class="n">ms</span><span class="p">.</span><span class="nf">ToArray</span><span class="p">());</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">public</span> <span class="k">static</span> <span class="n">T</span> <span class="n">FromJson</span><span class="p"><</span><span class="n">T</span><span class="p">>(</span><span class="k">this</span> <span class="kt">string</span> <span class="n">json</span><span class="p">)</span>
<span class="p">{</span>
<span class="kt">var</span> <span class="n">serializer</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">DataContractJsonSerializer</span><span class="p">(</span><span class="k">typeof</span><span class="p">(</span><span class="n">T</span><span class="p">));</span>
<span class="kt">var</span> <span class="n">encoding</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">UTF8Encoding</span><span class="p">();</span>
<span class="k">using</span> <span class="p">(</span><span class="kt">var</span> <span class="n">ms</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">MemoryStream</span><span class="p">(</span><span class="n">encoding</span><span class="p">.</span><span class="nf">GetBytes</span><span class="p">(</span><span class="n">json</span><span class="p">)))</span>
<span class="p">{</span>
<span class="k">return</span> <span class="p">(</span><span class="n">T</span><span class="p">)</span><span class="n">serializer</span><span class="p">.</span><span class="nf">ReadObject</span><span class="p">(</span><span class="n">ms</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
<hr />
<h2 id="credits">Credits</h2>
<p>I have no idea where I picked this up… it’s pretty old<br />
If you find this useful, go be nice to someone. Pay it forward.</p>
<p><em>Cheers!</em></p>This 'Cereal Killer' joke is hilarious...A better INFORMATION_SCHEMA.ROUTINES2019-11-17T00:00:00+00:002019-11-17T00:00:00+00:00http://www.finnangelo.com/sql/2019/11/17/A%20better-INFORMATION_SCHEMA-ROUTINES<p>FYI: <code class="language-plaintext highlighter-rouge">INFORMATION_SCHEMA.ROUTINES</code> only pulls the first 4000 chars of a stored procedure.</p>
<p>Sometimes procs are longer so my original select missed some of the tables.</p>
<hr />
<h2 id="toc">TOC</h2>
<ul>
<li><a href="#The-improved-ROUTINES-routine">The improved ROUTINES routine</a></li>
<li><a href="#Credits">Credits</a></li>
</ul>
<hr />
<h2 id="the-improved-routines-routine">The improved ROUTINES routine</h2>
<p>Here is the new sql to match tables to columns:</p>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">WITH</span> <span class="p">[</span><span class="n">ROUTINES</span><span class="p">]</span>
<span class="k">AS</span> <span class="p">(</span><span class="k">SELECT</span> <span class="k">SCHEMA_NAME</span><span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">schema_id</span><span class="p">)</span> <span class="k">AS</span> <span class="k">ROUTINE_SCHEMA</span><span class="p">,</span>
<span class="n">o</span><span class="p">.</span><span class="n">name</span> <span class="k">AS</span> <span class="k">ROUTINE_NAME</span><span class="p">,</span>
<span class="k">CONVERT</span><span class="p">(</span><span class="n">NVARCHAR</span><span class="p">(</span><span class="mi">20</span><span class="p">),</span>
<span class="k">CASE</span>
<span class="k">WHEN</span> <span class="n">o</span><span class="p">.</span><span class="k">type</span> <span class="k">IN</span><span class="p">(</span><span class="s1">'P'</span><span class="p">,</span> <span class="s1">'PC'</span><span class="p">)</span>
<span class="k">THEN</span> <span class="s1">'PROCEDURE'</span>
<span class="k">ELSE</span> <span class="s1">'FUNCTION'</span>
<span class="k">END</span><span class="p">)</span> <span class="k">AS</span> <span class="n">ROUTINE_TYPE</span><span class="p">,</span>
<span class="k">CONVERT</span><span class="p">(</span><span class="n">NVARCHAR</span><span class="p">(</span><span class="k">MAX</span><span class="p">),</span> <span class="n">OBJECT_DEFINITION</span><span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">object_id</span><span class="p">))</span> <span class="k">AS</span> <span class="n">ROUTINE_DEFINITION</span>
<span class="k">FROM</span> <span class="n">sys</span><span class="p">.</span><span class="n">objects</span> <span class="k">AS</span> <span class="n">o</span>
<span class="k">LEFT</span> <span class="k">JOIN</span>
<span class="n">sys</span><span class="p">.</span><span class="k">parameters</span> <span class="k">AS</span> <span class="k">c</span>
<span class="k">ON</span> <span class="k">c</span><span class="p">.</span><span class="n">object_id</span><span class="o">=</span><span class="n">o</span><span class="p">.</span><span class="n">object_id</span>
<span class="k">AND</span> <span class="k">c</span><span class="p">.</span><span class="n">parameter_id</span><span class="o">=</span><span class="mi">0</span>
<span class="k">WHERE</span> <span class="n">o</span><span class="p">.</span><span class="k">type</span> <span class="k">IN</span>
<span class="p">(</span><span class="s1">'P'</span><span class="p">,</span> <span class="s1">'FN'</span><span class="p">,</span> <span class="s1">'TF'</span><span class="p">,</span> <span class="s1">'IF'</span><span class="p">,</span> <span class="s1">'AF'</span><span class="p">,</span> <span class="s1">'FT'</span><span class="p">,</span> <span class="s1">'IS'</span><span class="p">,</span> <span class="s1">'PC'</span><span class="p">,</span> <span class="s1">'FS'</span><span class="p">))</span>
<span class="k">SELECT</span> <span class="n">r</span><span class="p">.</span><span class="n">ROUTINE_TYPE</span><span class="p">,</span>
<span class="n">r</span><span class="p">.</span><span class="k">ROUTINE_SCHEMA</span><span class="o">+</span><span class="s1">'.'</span><span class="o">+</span><span class="n">r</span><span class="p">.</span><span class="k">ROUTINE_NAME</span> <span class="k">AS</span> <span class="k">ROUTINE</span><span class="p">,</span>
<span class="n">t</span><span class="p">.</span><span class="n">TABLE_SCHEMA</span><span class="o">+</span><span class="s1">'.'</span><span class="o">+</span><span class="n">t</span><span class="p">.</span><span class="k">TABLE_NAME</span> <span class="k">AS</span> <span class="p">[</span><span class="k">TABLE</span><span class="p">],</span>
<span class="n">PATINDEX</span><span class="p">(</span><span class="s1">'%'</span><span class="o">+</span><span class="n">t</span><span class="p">.</span><span class="k">TABLE_NAME</span><span class="o">+</span><span class="s1">'%'</span><span class="p">,</span> <span class="k">UPPER</span><span class="p">(</span><span class="n">r</span><span class="p">.</span><span class="n">ROUTINE_DEFINITION</span><span class="p">))</span>
<span class="k">FROM</span> <span class="p">[</span><span class="n">ROUTINES</span><span class="p">]</span> <span class="k">AS</span> <span class="n">r</span>
<span class="k">INNER</span> <span class="k">JOIN</span>
<span class="n">INFORMATION_SCHEMA</span><span class="p">.</span><span class="n">TABLES</span> <span class="k">AS</span> <span class="n">t</span>
<span class="k">ON</span> <span class="n">r</span><span class="p">.</span><span class="n">ROUTINE_DEFINITION</span> <span class="k">LIKE</span> <span class="s1">'%'</span><span class="o">+</span><span class="n">t</span><span class="p">.</span><span class="k">TABLE_NAME</span><span class="o">+</span><span class="s1">'%'</span>
<span class="k">ORDER</span> <span class="k">BY</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">;</span>
<span class="k">GO</span>
</code></pre></div></div>
<p>the CTE gets its ‘ROUTINES list from:</p>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">sp_helptext</span> <span class="p">[</span><span class="n">INFORMATION_SCHEMA</span><span class="p">.</span><span class="n">ROUTINES</span><span class="p">]</span>
</code></pre></div></div>
<hr />
<h2 id="credits">Credits</h2>
<p>If you find this useful, go be nice to someone. Pay it forward.</p>
<p><em>Cheers!</em></p>FYI: INFORMATION_SCHEMA.ROUTINES only pulls the first 4000 chars of a stored procedure.My Docker Cheatsheet2019-09-05T00:00:00+00:002019-09-05T00:00:00+00:00http://www.finnangelo.com/2019/09/05/Docker-Cheatsheet<p>The useful stuff I use with Docker<br />
(ToDo: Get picture)</p>
<h2 id="update-the-install-process-has-probably-been-updated-using-the-commands-is-probably-the-same-though"><strong>UPDATE: The install process has probably been updated; using the commands is probably the same though</strong></h2>
<ul>
<li><a href="#setup">Setup</a>
<ul>
<li><a href="#install">Install</a></li>
<li><a href="#change-drive-of-hyper-v-disks">Change drive of hyper-v disks</a></li>
<li><a href="#change-drive-of-docker-images">Change drive of docker images</a></li>
</ul>
</li>
<li><a href="#docker-pull">docker pull</a></li>
<li><a href="#docker-container">docker container</a></li>
<li><a href="#docker-image">docker image</a></li>
<li><a href="#docker-prune">docker prune</a></li>
<li><a href="#docker-volume">docker volume</a></li>
<li><a href="#docker-run">docker run</a></li>
<li><a href="#mssql-server-windows-developer">mssql-server-windows-developer</a></li>
<li><a href="#credits">Credits</a></li>
</ul>
<hr />
<h2 id="setup">Setup</h2>
<h3 id="install">Install</h3>
<p>Install Hyper-V - may require restart</p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Enable-WindowsOptionalFeature</span><span class="w"> </span><span class="nt">-Online</span><span class="w"> </span><span class="nt">-FeatureName</span><span class="p">:</span><span class="nx">Microsoft-Hyper-V</span><span class="w"> </span><span class="nt">-All</span><span class="w">
</span></code></pre></div></div>
<p>Install chocolatey:<br />
<a href="https://chocolatey.org/install">https://chocolatey.org/install</a></p>
<p>Install Docker</p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">choco</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">docker-desktop</span><span class="w"> </span><span class="nt">-y</span><span class="w">
</span></code></pre></div></div>
<h3 id="change-drive-of-hyper-v-disks">Change drive of hyper-v disks</h3>
<p>This is easier if you do it before installing docker so you don’t have to move the <code class="language-plaintext highlighter-rouge">DockerDesktop.vhdx</code> hard disk</p>
<p>Changing the drive does slow performance as my <code class="language-plaintext highlighter-rouge">D:</code> drive isn’t an SSD, but my <code class="language-plaintext highlighter-rouge">C:</code> drive is always low on space!</p>
<ol>
<li>Stop docker</li>
<li>create <code class="language-plaintext highlighter-rouge">D:\Users\Public\Public Documents\Hyper-V\Virtual hard disks</code></li>
<li>Cut/Paste docker hard disk <code class="language-plaintext highlighter-rouge">DockerDesktop.vhdx</code> from
<code class="language-plaintext highlighter-rouge">C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks</code></li>
<li>Open Hyper-V manager > Select PC > Actions pane > Hyper-V Settings…
<ul>
<li>Virtual Hard Disks = <code class="language-plaintext highlighter-rouge">D:\Users\Public\Documents\Hyper-V\Virtual Hard Disks</code></li>
</ul>
</li>
<li>Restart Docker</li>
<li>Test with
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">docker</span><span class="w"> </span><span class="nx">run</span><span class="w"> </span><span class="nt">-di</span><span class="w"> </span><span class="nt">--rm</span><span class="w"> </span><span class="nt">--name</span><span class="w"> </span><span class="nx">test</span><span class="w"> </span><span class="nx">mcr.microsoft.com/dotnet/framework/sdk</span><span class="w">
</span></code></pre></div> </div>
</li>
</ol>
<h3 id="change-drive-of-docker-images">Change drive of docker images</h3>
<p><a href="https://www.pbworks.net/change-docker-images-location-in-windows/">https://www.pbworks.net/change-docker-images-location-in-windows/</a></p>
<p>Do this before you download the first image, evem before the test above</p>
<ol>
<li>Purge all the images, because is messy to try move them</li>
<li>Stop docker</li>
<li>Create <code class="language-plaintext highlighter-rouge">D:\ProgramData\Docker</code></li>
<li>Edit <code class="language-plaintext highlighter-rouge">C:\ProgramData\Docker\config\daemon.json</code></li>
<li>Add <code class="language-plaintext highlighter-rouge">"graph": "D:\\ProgramData\\Docker"</code></li>
<li>Restart docker</li>
<li>Test with
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">docker</span><span class="w"> </span><span class="nx">pull</span><span class="w"> </span><span class="nx">mcr.microsoft.com/dotnet/framework/sdk</span><span class="w">
</span></code></pre></div> </div>
</li>
</ol>
<hr />
<h2 id="docker-pull">docker pull</h2>
<p>Good images to have:</p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">docker</span><span class="w"> </span><span class="nx">pull</span><span class="w"> </span><span class="nx">mcr.microsoft.com/dotnet/framework/sdk</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">pull</span><span class="w"> </span><span class="nx">mcr.microsoft.com/windows/servercore/iis</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="docker-container">docker container</h2>
<p><a href="https://docs.docker.com/engine/reference/commandline/container/">https://docs.docker.com/engine/reference/commandline/container/</a></p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">docker</span><span class="w"> </span><span class="nx">container</span><span class="w"> </span><span class="nx">ls</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">ps</span><span class="w"> </span><span class="c"># Lists running containers</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">kill</span><span class="w"> </span><span class="nx">ab1234cd</span><span class="w"> </span><span class="c"># Kills container - useful with the -rm tag on the running container!</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">ps</span><span class="w"> </span><span class="nt">-a</span><span class="w"> </span><span class="c"># Lists all containers</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">rm</span><span class="w"> </span><span class="nx">ab123cd</span><span class="w"> </span><span class="c"># removes container</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="docker-image">docker image</h2>
<p><a href="https://docs.docker.com/engine/reference/commandline/image/">https://docs.docker.com/engine/reference/commandline/image/</a></p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">docker</span><span class="w"> </span><span class="nx">image</span><span class="w"> </span><span class="nx">ls</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">images</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">image</span><span class="w"> </span><span class="nx">rm</span><span class="w"> </span><span class="nx">IMAGE</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">rmi</span><span class="w"> </span><span class="nx">ab123cd</span><span class="w"> </span><span class="c"># remove image</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">image</span><span class="w"> </span><span class="nx">prune</span><span class="w"> </span><span class="nt">--all</span><span class="w"> </span><span class="nt">--force</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="docker-prune">docker prune</h2>
<p><a href="https://docs.docker.com/config/pruning/">https://docs.docker.com/config/pruning/</a></p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">docker</span><span class="w"> </span><span class="nx">container</span><span class="w"> </span><span class="nx">ls</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">volumes</span><span class="w"> </span><span class="nx">ls</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">image</span><span class="w"> </span><span class="nx">ls</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">network</span><span class="w"> </span><span class="nx">ls</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">container</span><span class="w"> </span><span class="nx">prune</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">volumes</span><span class="w"> </span><span class="nx">prune</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">image</span><span class="w"> </span><span class="nx">prune</span><span class="w"> </span><span class="nt">--all</span><span class="w"> </span><span class="nt">--force</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">network</span><span class="w"> </span><span class="nx">ls</span><span class="w">
</span><span class="c"># docker system prune --volumes #This is the nuclear option</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="docker-volume">docker volume</h2>
<p><a href="https://docs.docker.com/engine/reference/commandline/volume/">https://docs.docker.com/engine/reference/commandline/volume/</a></p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">docker</span><span class="w"> </span><span class="nx">run</span><span class="w"> </span><span class="nt">--help</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">volume</span><span class="w"> </span><span class="nx">ls</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">volume</span><span class="w"> </span><span class="nx">inspect</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">volume</span><span class="w"> </span><span class="nx">prune</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">volume</span><span class="w"> </span><span class="nx">rm</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="docker-run">docker run</h2>
<p><a href="https://docs.docker.com/engine/reference/commandline/run/">https://docs.docker.com/engine/reference/commandline/run/</a></p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">docker</span><span class="w"> </span><span class="nx">run</span><span class="w"> </span><span class="nt">--help</span><span class="w">
</span></code></pre></div></div>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Note</th>
</tr>
</thead>
<tbody>
<tr>
<td>-d, –detach</td>
<td>Run container in background and print container ID</td>
</tr>
<tr>
<td>-u, –user 0</td>
<td>Username or UID - 0 is for root</td>
</tr>
<tr>
<td>-p, –publish 5901:5901</td>
<td>Publish a container’s port(s) to the host</td>
</tr>
<tr>
<td>-e, –env list VNC_RESOLUTION=1900x1175</td>
<td>Set environment variables</td>
</tr>
<tr>
<td>–rm</td>
<td>Automatically remove the container when it exits</td>
</tr>
<tr>
<td>–name testme</td>
<td>Assign a name to the container</td>
</tr>
<tr>
<td>-v, –volume /D/TempOnHost:/C/TempOnContainer</td>
<td> </td>
</tr>
<tr>
<td>-i, –interactive</td>
<td>need -it to keep the docker container running! IIS doesn’t need it</td>
</tr>
<tr>
<td>-t, –tty</td>
<td>Allocate a pseudo-TTY, -it to use putty shell</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="mssql-server-windows-developer">mssql-server-windows-developer</h2>
<p>I can never remember this, and it is really handy!<br />
It looks like the image is at least 2 years old, but I’m using it anyways because I live life on the edge…</p>
<p><a href="https://octopus.com/blog/running-sql-server-developer-install-with-docker">Octopus - Running SQL Server Developer in a Windows-based Docker Container</a></p>
<p>Here is the run goodness:</p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">docker</span><span class="w"> </span><span class="nx">pull</span><span class="w"> </span><span class="nx">microsoft/mssql-server-windows-developer</span><span class="w">
</span><span class="n">docker</span><span class="w"> </span><span class="nx">run</span><span class="w"> </span><span class="nt">--rm</span><span class="w"> </span><span class="nt">--name</span><span class="w"> </span><span class="nx">SQLServer</span><span class="w"> </span><span class="nt">-d</span><span class="w"> </span><span class="nt">-p</span><span class="w"> </span><span class="nx">1433:1433</span><span class="w"> </span><span class="nt">-e</span><span class="w"> </span><span class="nx">sa_password</span><span class="o">=</span><span class="n">Password_01</span><span class="w"> </span><span class="nt">-e</span><span class="w"> </span><span class="nx">ACCEPT_EULA</span><span class="o">=</span><span class="n">Y</span><span class="w"> </span><span class="nx">microsoft/mssql-server-windows-developer</span><span class="w">
</span></code></pre></div></div>
<p>And we can just use Sql Server Management Studio or <a href="https://docs.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio?view=sql-server-ver15">Azure Data Studio</a>… or heck <a href="https://portableapps.com/apps/development/database_browser_portable">Database Browser Portable</a> to connect</p>
<h2 id="credits">Credits</h2>
<ul>
<li>No names yet</li>
</ul>
<p><em>Cheers!</em></p>The useful stuff I use with Docker (ToDo: Get picture)Other Cute Bits-and-Bobs2019-06-21T00:00:00+00:002019-06-21T00:00:00+00:00http://www.finnangelo.com/2019/06/21/Other-Bits-and-Bobs<p>More goodness - but not powershell…</p>
<p>This will obviously update as I find more</p>
<hr />
<ul>
<li><a href="#Taskbar-directory">Taskbar directory</a></li>
<li><a href="#Chrome-incognito-shortcut">Chrome incognito shortcut</a></li>
<li><a href="#EF-Core-Scaffold-Table">EF Core Scaffold Table</a></li>
<li><a href="#Credits">Credits</a></li>
</ul>
<hr />
<h2 id="taskbar-directory">Taskbar directory</h2>
<p>So where do all the shortcuts on the taskbar live?</p>
<p><code class="language-plaintext highlighter-rouge">C:\Users\jfinnangelo\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar</code></p>
<hr />
<h2 id="chrome-incognito-shortcut">Chrome incognito shortcut</h2>
<p>How do I open chrome as incognito from a shortcut?</p>
<p>Clone a shortcut to chrome, and change the <code class="language-plaintext highlighter-rouge">target</code> field to this:<br />
<code class="language-plaintext highlighter-rouge">"C:\Program Files (x86)\Google\Chrome\Application\chrome_proxy.exe" --profile-directory=Default -incognito https://mail.google.com https://www.onenote.com</code></p>
<p>Note that it opens <strong>two</strong> web pages in separate tabs - harrah!<br />
I keep the shortcut in the Taskbar directory</p>
<hr />
<h2 id="ef-core-scaffold-table">EF Core Scaffold Table</h2>
<p>I can never remember this, but its pretty cool!</p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db</span><span class="w">
</span><span class="n">Scaffold-DbContext</span><span class="w"> </span><span class="s2">"Server=MyServer\MyInstance;Database=MyDB;Trusted_Connection=True;"</span><span class="w"> </span><span class="nx">Microsoft.EntityFrameworkCore.SqlServer</span><span class="w"> </span><span class="nt">-OutputDir</span><span class="w"> </span><span class="nx">Models</span><span class="w"> </span><span class="nt">-Tables</span><span class="w"> </span><span class="nx">MyTable1</span><span class="p">,</span><span class="nx">MyTable2</span><span class="w">
</span></code></pre></div></div>
<hr />
<p><a name="Credits"></a></p>
<h2 id="credits">Credits</h2>
<p><em>Cheers!</em></p>More goodness - but not powershell…Logging with System.Diagnostics, .Net 1.12019-05-27T00:00:00+00:002019-05-27T00:00:00+00:00http://www.finnangelo.com/2019/05/27/TraceInformation<p>I always forget the config syntax for the really simple built in logging in c#</p>
<p>It’s quick and dirty, and doesn’t need ‘Yet-Another-Logging-Framework(tm)’.<br />
And yeah, for real work I prefer <a href="https://serilog.net">Serilog</a></p>
<p>Helpful Hint: Stay away from the <code class="language-plaintext highlighter-rouge">Debug.Write</code> stuff. It only works in debug mode
which is <em>frekkin’ annoying</em> when you are on prod and desperately need the logging.<br />
Use the log level/filter type in the config.</p>
<hr />
<h2 id="trace">Trace</h2>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="nt"><system.diagnostics></span>
<span class="nt"><trace</span> <span class="na">autoflush=</span><span class="s">"true"</span><span class="nt">></span>
<span class="nt"><listeners></span>
<span class="nt"><add</span> <span class="na">name=</span><span class="s">"BibiddyBoo"</span> <span class="na">type=</span><span class="s">"System.Diagnostics.TextWriterTraceListener"</span> <span class="na">initializeData=</span><span class="s">"c:\temp\MyProject.log"</span> <span class="nt">/></span>
<span class="nt"></listeners></span>
<span class="nt"></trace></span>
<span class="nt"></system.diagnostics></span>
</code></pre></div></div>
<p>Or with a bit more detail</p>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="nt"><system.diagnostics></span>
<span class="nt"><sharedListeners></span>
<span class="nt"><add</span> <span class="na">name=</span><span class="s">"ErrorListener"</span>
<span class="na">type=</span><span class="s">"System.Diagnostics.XmlWriterTraceListener"</span>
<span class="na">initializeData=</span><span class="s">"c:\temp\MyProject.Error.svclog"</span> <span class="nt">></span>
<span class="nt"><filter</span> <span class="na">type=</span><span class="s">"System.Diagnostics.EventTypeFilter"</span>
<span class="na">initializeData=</span><span class="s">"Error"</span> <span class="nt">/></span>
<span class="nt"></add></span>
<span class="nt"><add</span> <span class="na">name=</span><span class="s">"VerboseListener"</span>
<span class="na">type=</span><span class="s">"System.Diagnostics.TextWriterTraceListener"</span>
<span class="na">traceOutputOptions=</span><span class="s">"DateTime"</span>
<span class="na">initializeData=</span><span class="s">"c:\temp\MyProject.Verbose.log"</span> <span class="nt">/></span>
<span class="nt"></sharedListeners></span>
<span class="nt"><trace</span> <span class="na">autoflush=</span><span class="s">"true"</span> <span class="na">indentsize=</span><span class="s">"8"</span><span class="nt">></span>
<span class="nt"><listeners></span>
<span class="nt"><clear/></span>
<span class="nt"><add</span> <span class="na">name=</span><span class="s">"VerboseListener"</span> <span class="nt">/></span>
<span class="nt"><add</span> <span class="na">name=</span><span class="s">"ErrorListener"</span> <span class="nt">/></span>
<span class="nt"></listeners></span>
<span class="nt"></trace></span>
<span class="nt"></system.diagnostics></span>
</code></pre></div></div>
<p>and it can be used to log unhandled exceptions in web forms with the <code class="language-plaintext highlighter-rouge">Global.asax.cs</code> file</p>
<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">using</span> <span class="nn">System.Diagnostics</span><span class="p">;</span>
<span class="c1">//etc...</span>
<span class="k">void</span> <span class="nf">Application_Error</span><span class="p">(</span><span class="kt">object</span> <span class="n">sender</span><span class="p">,</span> <span class="n">EventArgs</span> <span class="n">e</span><span class="p">)</span>
<span class="p">{</span>
<span class="kt">var</span> <span class="n">ex</span> <span class="p">=</span> <span class="n">Server</span><span class="p">.</span><span class="nf">GetLastError</span><span class="p">();</span>
<span class="c1">//Trace.TraceInformation("Information");</span>
<span class="n">Trace</span><span class="p">.</span><span class="nf">TraceError</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="nf">ToString</span><span class="p">());</span>
<span class="p">}</span>
</code></pre></div></div>
<hr />
<h2 id="tracesource">TraceSource</h2>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="nt"><system.diagnostics></span>
<span class="nt"><sources></span>
<span class="nt"><source</span> <span class="na">name=</span><span class="s">"MyProject"</span> <span class="na">switchValue=</span><span class="s">"All"</span> <span class="nt">></span>
<span class="nt"><listeners></span>
<span class="nt"><clear/></span>
<span class="nt"><add</span> <span class="na">name=</span><span class="s">"VerboseListener"</span><span class="nt">/></span>
<span class="nt"><add</span> <span class="na">name=</span><span class="s">"ErrorListener"</span><span class="nt">/></span>
<span class="nt"></listeners></span>
<span class="nt"></source></span>
<span class="nt"></sources></span>
<span class="nt"><sharedListeners></span>
<span class="nt"><add</span> <span class="na">name=</span><span class="s">"ErrorListener"</span>
<span class="na">type=</span><span class="s">"System.Diagnostics.XmlWriterTraceListener"</span>
<span class="na">traceOutputOptions=</span><span class="s">"DateTime,Callstack,LogicalOperationStack,ProcessId,ThreadId,Timestamp"</span>
<span class="na">initializeData=</span><span class="s">"c:\temp\MyProject.Error.svclog"</span> <span class="nt">></span>
<span class="nt"><filter</span> <span class="na">type=</span><span class="s">"System.Diagnostics.EventTypeFilter"</span>
<span class="na">initializeData=</span><span class="s">"Error"</span> <span class="nt">/></span>
<span class="nt"></add></span>
<span class="nt"><add</span> <span class="na">name=</span><span class="s">"VerboseListener"</span>
<span class="na">type=</span><span class="s">"System.Diagnostics.TextWriterTraceListener"</span>
<span class="na">traceOutputOptions=</span><span class="s">"DateTime"</span>
<span class="na">initializeData=</span><span class="s">"c:\temp\MyProject.Verbose.log"</span> <span class="nt">/></span>
<span class="nt"></sharedListeners></span>
<span class="nt"><trace</span> <span class="na">autoflush=</span><span class="s">"true"</span> <span class="na">indentsize=</span><span class="s">"8"</span> <span class="nt">/></span>
<span class="nt"></system.diagnostics></span>
</code></pre></div></div>
<p>and it can be used to log unhandled exceptions in web forms with the <code class="language-plaintext highlighter-rouge">Global.asax.cs</code> file</p>
<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">void</span> <span class="nf">Application_Error</span><span class="p">(</span><span class="kt">object</span> <span class="n">sender</span><span class="p">,</span> <span class="n">EventArgs</span> <span class="n">e</span><span class="p">)</span>
<span class="p">{</span>
<span class="kt">var</span> <span class="n">ex</span> <span class="p">=</span> <span class="n">Server</span><span class="p">.</span><span class="nf">GetLastError</span><span class="p">();</span>
<span class="kt">var</span> <span class="n">log</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">TraceSource</span><span class="p">(</span><span class="s">"MyProject"</span><span class="p">);</span>
<span class="n">log</span><span class="p">.</span><span class="nf">TraceEvent</span><span class="p">(</span><span class="n">TraceEventType</span><span class="p">.</span><span class="n">Verbose</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="s">"Howdy, Verbose"</span><span class="p">);</span>
<span class="n">log</span><span class="p">.</span><span class="nf">TraceInformation</span><span class="p">(</span><span class="s">"Howdy, Information"</span><span class="p">);</span>
<span class="n">log</span><span class="p">.</span><span class="nf">TraceData</span><span class="p">(</span><span class="n">TraceEventType</span><span class="p">.</span><span class="n">Error</span><span class="p">,</span> <span class="m">1000</span><span class="p">,</span> <span class="n">ex</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div></div>
<hr />
<p><em>Cheers!</em></p>I always forget the config syntax for the really simple built in logging in c#Powershell Snippets2019-05-24T00:00:00+00:002019-05-24T00:00:00+00:00http://www.finnangelo.com/2019/05/24/Powershell_Snippets<p>Yeah - I’m lovin’ the powerhell goodness…</p>
<p>But I need a way to remember all of these bits and bobs of snippets.<br />
I guess this is what the internet is for!</p>
<p>This will obviously update as I find more</p>
<hr />
<ul>
<li><a href="#Basics">Basics</a>
<ul>
<li><a href="#ExecutionPolicy">ExecutionPolicy</a></li>
<li><a href="#Install-Chocolatey">Install Chocolatey</a></li>
</ul>
</li>
<li><a href="#Working-with-SqlServer">Working with SqlServer</a></li>
<li><a href="#Change-password">Change password</a></li>
<li><a href="#Comments-and-more">Comments and more</a></li>
<li><a href="#Filesystem-basics">Filesystem basics</a>
<ul>
<li><a href="#Delete-a-folder">Delete a folder</a></li>
<li><a href="#List-all-files">List all files</a></li>
<li><a href="#Test-Net-Framework-installed">Test Net Framework installed</a></li>
</ul>
</li>
<li><a href="#Persistent-profile">Persistent profile</a></li>
<li><a href="#List-all-PCs-on-Domain">List all PCs on Domain</a></li>
<li><a href="#dotnet-build">dotnet build</a></li>
<li><a href="#List-all-referenced-assemblies-in-exe">List all referenced assemblies in exe</a></li>
<li><a href="#Credits">Credits</a>
<ul>
<li><a href="#Links">Links</a></li>
</ul>
</li>
</ul>
<hr />
<h2 id="basics">Basics</h2>
<h3 id="executionpolicy">ExecutionPolicy</h3>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Get-ExecutionPolicy</span><span class="w"> </span><span class="o">-</span><span class="nf">?</span><span class="w">
</span><span class="n">Set-ExecutionPolicy</span><span class="w"> </span><span class="o">-</span><span class="nf">?</span><span class="w">
</span><span class="c">#Unrestricted </span><span class="w">
</span><span class="c">#Default </span><span class="w">
</span></code></pre></div></div>
<h3 id="install-chocolatey">Install Chocolatey</h3>
<p>Just do it, ok?</p>
<p><a href="https://chocolatey.org/install">chocolatey - install</a></p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Set-ExecutionPolicy</span><span class="w"> </span><span class="nx">Bypass</span><span class="w"> </span><span class="nt">-Scope</span><span class="w"> </span><span class="nx">Process</span><span class="w"> </span><span class="nt">-Force</span><span class="p">;</span><span class="w"> </span><span class="n">iex</span><span class="w"> </span><span class="p">((</span><span class="n">New-Object</span><span class="w"> </span><span class="nx">System.Net.WebClient</span><span class="p">)</span><span class="o">.</span><span class="nf">DownloadString</span><span class="p">(</span><span class="s1">'https://chocolatey.org/install.ps1'</span><span class="p">))</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="working-with-sqlserver">Working with SqlServer</h2>
<p>I think this part will end up as its own post…<br />
<a href="https://docs.microsoft.com/en-us/sql/powershell/download-sql-server-ps-module">Install SQL Server Powershell module</a></p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Install-Module</span><span class="w"> </span><span class="nt">-Name</span><span class="w"> </span><span class="nx">SqlServer</span><span class="w"> </span><span class="nt">-AllowClobber</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="change-password">Change password</h2>
<p>I think this could be useful in docker instances…?</p>
<p><a href="https://pureinfotech.com/change-account-password-powershell-windows-10/">Pureinfotech - Change account password with powershell</a></p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$Password</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Read-Host</span><span class="w"> </span><span class="s2">"Enter the new password"</span><span class="w"> </span><span class="nt">-AsSecureString</span><span class="w">
</span><span class="nv">$UserAccount</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Get-LocalUser</span><span class="w"> </span><span class="nt">-Name</span><span class="w"> </span><span class="s2">"admin"</span><span class="w">
</span><span class="nv">$UserAccount</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Set-LocalUser</span><span class="w"> </span><span class="nt">-Password</span><span class="w"> </span><span class="nv">$Password</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="comments-and-more">Comments and more</h2>
<p><a href="https://www.red-gate.com/simple-talk/sysadmin/powershell/comments-and-more-in-powershell/">Comments and more in powershell</a></p>
<p>This only works at the start of scripts, but is pretty cool</p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#Requires -RunAsAdministrator</span><span class="w">
</span><span class="c">#Requires -Version 5.0 </span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="filesystem-basics">Filesystem basics</h2>
<h3 id="delete-a-folder">Delete a folder</h3>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kr">if</span><span class="w"> </span><span class="p">(</span><span class="n">Test-Path</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nv">$Folder</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="n">Remove-Item</span><span class="w"> </span><span class="nv">$Folder</span><span class="w"> </span><span class="nt">-Recurse</span><span class="w"> </span><span class="nt">-Force</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>
<h3 id="list-all-files">List all files</h3>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Get-ChildItem</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="s1">'C:\SomeFolder\SomeSubFolder'</span><span class="w"> </span><span class="nt">-Recurse</span><span class="w"> </span><span class="nt">-File</span><span class="w"> </span><span class="se">`
</span><span class="o">|</span><span class="w"> </span><span class="n">sort</span><span class="w"> </span><span class="nx">fullname</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">SELECT</span><span class="w"> </span><span class="nx">fullname</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Out-String</span><span class="w"> </span><span class="nt">-Width</span><span class="w"> </span><span class="nx">256</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Out-File</span><span class="w"> </span><span class="nt">-FilePath</span><span class="w"> </span><span class="s1">'C:\Users\User\Desktop\RAllTheFilesAndFolders.txt'</span><span class="w">
</span></code></pre></div></div>
<p>or if you want to do stuff to the strings (because you are comparing build outputs perhaps?)</p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w">
</span><span class="nv">$BuildThatWorksPath</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"c:\WhatEva\BuildThatWorks"</span><span class="w">
</span><span class="kr">if</span><span class="w"> </span><span class="p">(</span><span class="n">Test-Path</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nv">$BuildThatWorksPath</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s2">".txt"</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="n">Remove-Item</span><span class="w"> </span><span class="nv">$BuildThatWorksPath</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s2">".txt"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="n">Get-ChildItem</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nv">$BuildThatWorksPath</span><span class="w"> </span><span class="nt">-Recurse</span><span class="w"> </span><span class="nt">-File</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">sort</span><span class="w"> </span><span class="nx">fullname</span><span class="w"> </span><span class="se">`
</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="p">{</span><span class="bp">$_</span><span class="o">.</span><span class="nf">fullname</span><span class="o">.</span><span class="nf">replace</span><span class="p">(</span><span class="s2">"</span><span class="nv">$BuildThatWorksPath</span><span class="s2">"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-"</span><span class="p">)</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Out-String</span><span class="w"> </span><span class="nt">-Width</span><span class="w"> </span><span class="nx">256</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Out-File</span><span class="w"> </span><span class="nt">-FilePath</span><span class="w"> </span><span class="nv">$BuildThatWorksPath</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s2">".txt"</span><span class="w">
</span></code></pre></div></div>
<h3 id="test-net-framework-installed">Test Net Framework installed</h3>
<p>This is a bit crap</p>
<p><a href="https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/versions-and-dependencies">https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/versions-and-dependencies</a></p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Get-Childitem</span><span class="w"> </span><span class="s1">'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full'</span><span class="w">
</span></code></pre></div></div>
<p>#461814 is for Net472</p>
<p>Can test with <a href="https://hub.docker.com/_/microsoft-dotnet-framework-runtime/">mcr.microsoft.com/dotnet/framework/runtime:4.8</a></p>
<hr />
<h2 id="persistent-profile">Persistent profile</h2>
<p>This is for all those snippets I want to always be available, like my user secrets stuff</p>
<ul>
<li><a href="https://devblogs.microsoft.com/scripting/understanding-the-six-powershell-profiles/">MS Powershell guy - understanding the six profiles</a></li>
<li><a href="https://www.red-gate.com/simple-talk/sysadmin/powershell/persistent-powershell-the-powershell-profile/">Red-gate - persistent powershell</a></li>
</ul>
<h3 id="adding-a-profile">Adding a profile</h3>
<p>To make a new profile for <code class="language-plaintext highlighter-rouge">CurrentUserAllHosts</code><br />
This is at <code class="language-plaintext highlighter-rouge">%USERPROFILE%\Documents\WindowsPowerShell\profile.ps1</code> (but not really because my <code class="language-plaintext highlighter-rouge">Documents</code> folder isn’t on my home drive…)</p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kr">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="n">Test-Path</span><span class="w"> </span><span class="nv">$Profile</span><span class="o">.</span><span class="nf">CurrentUserAllHosts</span><span class="p">))</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="n">New-Item</span><span class="w"> </span><span class="nt">-Type</span><span class="w"> </span><span class="nx">file</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nv">$Profile</span><span class="o">.</span><span class="nf">CurrentUserAllHosts</span><span class="w"> </span><span class="nt">-Force</span><span class="w"> </span><span class="p">}</span><span class="w">
</span></code></pre></div></div>
<p>Don’t forget about the executionpolicy</p>
<h3 id="profile-locations">Profile locations</h3>
<table>
<thead>
<tr>
<th>Profile</th>
<th>Location</th>
</tr>
</thead>
<tbody>
<tr>
<td>AllUsersAllHosts</td>
<td>$PsHome\profile.ps1</td>
</tr>
<tr>
<td>AllUsersCurrentHost</td>
<td>$PsHome\HostId_profile.ps1</td>
</tr>
<tr>
<td>CurrentUserAllHosts</td>
<td>$Home\Documents\WindowsPowerShell\profile.ps1</td>
</tr>
<tr>
<td>CurrentUserCurrentHost</td>
<td>$Home\Documents\WindowsPowerShell\HostId_profile.ps1</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="list-all-pcs-on-domain">List all PCs on Domain</h2>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#import-module ActiveDirectory</span><span class="w">
</span><span class="c">#Get-Help Get-ADComputer -Full</span><span class="w">
</span><span class="n">cls</span><span class="w">
</span><span class="nx">Get-ADComputer</span><span class="w"> </span><span class="nt">-Filter</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nt">-Property</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Format-Table</span><span class="w"> </span><span class="nx">Name</span><span class="p">,</span><span class="nx">OperatingSystem</span><span class="p">,</span><span class="nx">OperatingSystemServicePack</span><span class="p">,</span><span class="nx">OperatingSystemVersion</span><span class="w"> </span><span class="nt">-Wrap</span><span class="w"> </span><span class="err">–</span><span class="nx">Auto</span><span class="w"> </span><span class="c">#| Out-File 'Out-File.txt'</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="dotnet-build">dotnet build</h2>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$versionNumber</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">$</span><span class="p">(</span><span class="n">Get-Date</span><span class="w"> </span><span class="nt">-format</span><span class="w"> </span><span class="s1">'yyMM.ddhh.mmss'</span><span class="p">)</span><span class="w">
</span><span class="n">dotnet</span><span class="w"> </span><span class="nx">build</span><span class="w"> </span><span class="s2">"E:\blah\MyProj.csproj"</span><span class="w"> </span><span class="nt">-p</span><span class="p">:</span><span class="nx">Version</span><span class="o">=</span><span class="nv">$versionNumber</span><span class="w">
</span><span class="n">dotnet</span><span class="w"> </span><span class="nx">pack</span><span class="w"> </span><span class="s2">"E:\blah\MyProj.csproj"</span><span class="w"> </span><span class="nt">-p</span><span class="p">:</span><span class="nx">PackageVersion</span><span class="o">=</span><span class="nv">$versionNumber</span><span class="w"> </span><span class="nt">--no-build</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="list-all-referenced-assemblies-in-exe">List all referenced assemblies in exe</h2>
<p>I’ve been using this for wix setup to make sure I have the correct versions of files…<br />
Remember that if the assembly is compiled to x86, you have to use the x86 version of the ISE/prompt</p>
<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$exe</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"C:\Path\To\ExeOrDll.exe"</span><span class="w">
</span><span class="nv">$assembly</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">System.Reflection.Assembly</span><span class="p">]::</span><span class="n">LoadFile</span><span class="p">(</span><span class="nv">$exe</span><span class="p">)</span><span class="w">
</span><span class="nv">$dependancies</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">$assembly</span><span class="o">.</span><span class="nf">GetReferencedAssemblies</span><span class="p">()</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Sort-Object</span><span class="w"> </span><span class="nx">Name</span><span class="w">
</span><span class="n">Write-Output</span><span class="w"> </span><span class="nv">$dependancies</span><span class="w">
</span></code></pre></div></div>
<hr />
<h2 id="credits">Credits</h2>
<h3 id="links">Links</h3>
<p>Pester</p>
<ul>
<li><a href="https://github.com/pester/Pester">Github - pester</a></li>
<li><a href="https://blogs.technet.microsoft.com/heyscriptingguy/2015/12/14/what-is-pester-and-why-should-i-care/">heyscriptingguy - what is pester</a></li>
<li><a href="https://www.red-gate.com/simple-talk/sysadmin/powershell/practical-powershell-unit-testing-getting-started">Red-gate - powershell unit testing</a></li>
<li><a href="https://mcpmag.com/articles/2017/02/16/run-code-before-and-after-a-pester-test.aspx">McpMag - BeforeEach and AfterEach</a></li>
</ul>
<p>Secrets</p>
<ul>
<li><a href="https://blog.kloud.com.au/2016/04/21/using-saved-credentials-securely-in-powershell-scripts">kloud - using saved credentials securely</a></li>
</ul>
<p><em>Cheers!</em></p>Yeah - I’m lovin’ the powerhell goodness…