<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="UnrealIRCd rules - based off Microsoft Native Minimum Rules" Description="These rules focus on the most critical problems in your native code, including potential security holes and application crashes. It is recommended to include this rule set in any custom rule set you create for your native projects." ToolsVersion="10.0">
  <Localization ResourceAssembly="Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.dll" ResourceBaseName="Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.Localized">
    <Name Resource="NativeMinimumRules_Name" />
    <Description Resource="NativeMinimumRules_Description" />
  </Localization>

  <Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
<!-- Many false positives    <Rule Id="C6001" Action="Warning" /> -->
<!-- Many false positives    <Rule Id="C6011" Action="Warning" /> -->
    <Rule Id="C6029" Action="Warning" />
    <Rule Id="C6053" Action="Warning" />
    <Rule Id="C6059" Action="Warning" />
    <Rule Id="C6063" Action="Warning" />
    <Rule Id="C6064" Action="Warning" />
    <Rule Id="C6066" Action="Warning" />
    <Rule Id="C6067" Action="Warning" />
    <Rule Id="C6101" Action="Warning" />
    <Rule Id="C6200" Action="Warning" />
    <Rule Id="C6201" Action="Warning" />
    <Rule Id="C6270" Action="Warning" />
    <Rule Id="C6271" Action="Warning" />
    <Rule Id="C6272" Action="Warning" />
    <Rule Id="C6273" Action="Warning" />
    <Rule Id="C6274" Action="Warning" />
    <Rule Id="C6276" Action="Warning" />
    <Rule Id="C6277" Action="Warning" />
    <Rule Id="C6284" Action="Warning" />
    <Rule Id="C6290" Action="Warning" />
    <Rule Id="C6291" Action="Warning" />
    <Rule Id="C6302" Action="Warning" />
    <Rule Id="C6303" Action="Warning" />
    <Rule Id="C6305" Action="Warning" />
    <Rule Id="C6306" Action="Warning" />
    <Rule Id="C6328" Action="Warning" />
<!--    <Rule Id="C6385" Action="Warning" /> more false positives -->
<!--    <Rule Id="C6386" Action="Warning" /> the analysis this one does - or lack thereof - is particularly dumb pffff -->
<!--    <Rule Id="C6387" Action="Warning" /> more null/0 false positives -->
    <Rule Id="C6500" Action="Warning" />
    <Rule Id="C6501" Action="Warning" />
    <Rule Id="C6503" Action="Warning" />
    <Rule Id="C6504" Action="Warning" />
    <Rule Id="C6505" Action="Warning" />
    <Rule Id="C6506" Action="Warning" />
    <Rule Id="C6508" Action="Warning" />
    <Rule Id="C6509" Action="Warning" />
    <Rule Id="C6510" Action="Warning" />
    <Rule Id="C6511" Action="Warning" />
    <Rule Id="C6513" Action="Warning" />
    <Rule Id="C6514" Action="Warning" />
    <Rule Id="C6515" Action="Warning" />
    <Rule Id="C6516" Action="Warning" />
    <Rule Id="C6517" Action="Warning" />
    <Rule Id="C6518" Action="Warning" />
    <Rule Id="C6522" Action="Warning" />
    <Rule Id="C6525" Action="Warning" />
    <Rule Id="C6527" Action="Warning" />
    <Rule Id="C6530" Action="Warning" />
    <Rule Id="C6540" Action="Warning" />
    <Rule Id="C6551" Action="Warning" />
    <Rule Id="C6552" Action="Warning" />
    <Rule Id="C6701" Action="Warning" />
    <Rule Id="C6702" Action="Warning" />
    <Rule Id="C6703" Action="Warning" />
    <Rule Id="C6704" Action="Warning" />
    <Rule Id="C6705" Action="Warning" />
    <Rule Id="C6706" Action="Warning" />

    <!-- CppCoreCheck -->
    <!-- Span/View over temporary -->
    <Rule Id="C26449" Action="Warning" />
    <!-- Arithmetic overflow -->
    <Rule Id="C26450" Action="Warning" />
    <Rule Id="C26451" Action="Warning" />
    <Rule Id="C26452" Action="Warning" />
    <Rule Id="C26453" Action="Warning" />
    <Rule Id="C26454" Action="Warning" />
    <!-- Unitialized Member -->
    <Rule Id="C26495" Action="Warning" />

    <Rule Id="C28021" Action="Warning" />
<!--    <Rule Id="C28182" Action="Warning" /> false positives for dereferencing null ptr -->
    <Rule Id="C28202" Action="Warning" />
    <Rule Id="C28203" Action="Warning" />
    <Rule Id="C28205" Action="Warning" />
    <Rule Id="C28206" Action="Warning" />
    <Rule Id="C28207" Action="Warning" />
    <Rule Id="C28210" Action="Warning" />
    <Rule Id="C28211" Action="Warning" />
    <Rule Id="C28212" Action="Warning" />
    <Rule Id="C28213" Action="Warning" />
    <Rule Id="C28214" Action="Warning" />
    <Rule Id="C28215" Action="Warning" />
    <Rule Id="C28216" Action="Warning" />
    <Rule Id="C28217" Action="Warning" />
    <Rule Id="C28218" Action="Warning" />
    <Rule Id="C28219" Action="Warning" />
    <Rule Id="C28220" Action="Warning" />
    <Rule Id="C28221" Action="Warning" />
    <Rule Id="C28222" Action="Warning" />
    <Rule Id="C28223" Action="Warning" />
    <Rule Id="C28224" Action="Warning" />
    <Rule Id="C28225" Action="Warning" />
    <Rule Id="C28226" Action="Warning" />
    <Rule Id="C28227" Action="Warning" />
    <Rule Id="C28228" Action="Warning" />
    <Rule Id="C28229" Action="Warning" />
    <Rule Id="C28230" Action="Warning" />
    <Rule Id="C28231" Action="Warning" />
    <Rule Id="C28232" Action="Warning" />
    <Rule Id="C28233" Action="Warning" />
    <Rule Id="C28234" Action="Warning" />
    <Rule Id="C28235" Action="Warning" />
    <Rule Id="C28236" Action="Warning" />
    <Rule Id="C28237" Action="Warning" />
    <Rule Id="C28238" Action="Warning" />
    <Rule Id="C28239" Action="Warning" />
    <Rule Id="C28240" Action="Warning" />
    <Rule Id="C28241" Action="Warning" />
    <Rule Id="C28243" Action="Warning" />
    <Rule Id="C28245" Action="Warning" />
    <Rule Id="C28246" Action="Warning" />
    <Rule Id="C28250" Action="Warning" />
<!--    <Rule Id="C28251" Action="Warning" /> this may be real but it's damn annoying: inconsistent annotation for function -->
    <Rule Id="C28252" Action="Warning" />
    <Rule Id="C28253" Action="Warning" />
    <Rule Id="C28254" Action="Warning" />
    <Rule Id="C28262" Action="Warning" />
    <Rule Id="C28263" Action="Warning" />
    <Rule Id="C28267" Action="Warning" />
    <Rule Id="C28272" Action="Warning" />
    <Rule Id="C28273" Action="Warning" />
    <Rule Id="C28275" Action="Warning" />
    <Rule Id="C28279" Action="Warning" />
    <Rule Id="C28280" Action="Warning" />
    <Rule Id="C28282" Action="Warning" />
    <Rule Id="C28285" Action="Warning" />
    <Rule Id="C28286" Action="Warning" />
    <Rule Id="C28287" Action="Warning" />
    <Rule Id="C28288" Action="Warning" />
    <Rule Id="C28289" Action="Warning" />
    <Rule Id="C28290" Action="Warning" />
    <Rule Id="C28291" Action="Warning" />
    <Rule Id="C28300" Action="Warning" />
    <Rule Id="C28301" Action="Warning" />
    <Rule Id="C28302" Action="Warning" />
    <Rule Id="C28303" Action="Warning" />
    <Rule Id="C28304" Action="Warning" />
    <Rule Id="C28305" Action="Warning" />
    <Rule Id="C28308" Action="Warning" />
    <Rule Id="C28309" Action="Warning" />
    <Rule Id="C28350" Action="Warning" />
    <Rule Id="C28351" Action="Warning" />
  </Rules>
</RuleSet>
