﻿<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Microsoft Native Recommended Rules" Description="These rules focus on the most critical and common problems in your native code, including potential security holes and application crashes.  You should include this rule set in any custom rule set you create for your native projects.  This ruleset is designed to work with Visual Studio Professional edition and higher." ToolsVersion="15.0">
  <Localization ResourceAssembly="Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.dll" ResourceBaseName="Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.Localized">
    <Name Resource="NativeRecommendedRules_Name" />
    <Description Resource="NativeRecommendedRules_Description" />
  </Localization>

  <Include Path="NativeMinimumRules.ruleset" Action="Default" />
  <Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
    <Rule Id="C6031" Action="Warning" />
    <Rule Id="C6054" Action="Warning" />
    <Rule Id="C6214" Action="Warning" />
    <Rule Id="C6215" Action="Warning" />
    <Rule Id="C6216" Action="Warning" />
    <Rule Id="C6217" Action="Warning" />
    <Rule Id="C6220" Action="Warning" />
    <Rule Id="C6226" Action="Warning" />
    <Rule Id="C6230" Action="Warning" />
    <Rule Id="C6235" Action="Warning" />
    <Rule Id="C6236" Action="Warning" />
    <Rule Id="C6237" Action="Warning" />
    <Rule Id="C6242" Action="Warning" />
    <Rule Id="C6248" Action="Warning" />
    <Rule Id="C6250" Action="Warning" />
    <Rule Id="C6255" Action="Warning" />
    <Rule Id="C6258" Action="Warning" />
    <Rule Id="C6259" Action="Warning" />
    <Rule Id="C6260" Action="Warning" />
    <Rule Id="C6262" Action="Warning" />
    <Rule Id="C6263" Action="Warning" />
    <Rule Id="C6268" Action="Warning" />
    <Rule Id="C6269" Action="Warning" />
    <Rule Id="C6278" Action="Warning" />
    <Rule Id="C6279" Action="Warning" />
    <Rule Id="C6280" Action="Warning" />
    <Rule Id="C6281" Action="Warning" />
    <Rule Id="C6282" Action="Warning" />
    <Rule Id="C6283" Action="Warning" />
    <Rule Id="C6285" Action="Warning" />
    <Rule Id="C6286" Action="Warning" />
    <Rule Id="C6287" Action="Warning" />
    <Rule Id="C6288" Action="Warning" />
    <Rule Id="C6289" Action="Warning" />
    <Rule Id="C6292" Action="Warning" />
    <Rule Id="C6293" Action="Warning" />
    <Rule Id="C6294" Action="Warning" />
    <Rule Id="C6295" Action="Warning" />
    <Rule Id="C6296" Action="Warning" />
    <Rule Id="C6297" Action="Warning" />
    <Rule Id="C6299" Action="Warning" />
    <Rule Id="C6308" Action="Warning" />
    <Rule Id="C6310" Action="Warning" />
    <Rule Id="C6312" Action="Warning" />
    <Rule Id="C6314" Action="Warning" />
    <Rule Id="C6317" Action="Warning" />
    <Rule Id="C6318" Action="Warning" />
    <Rule Id="C6319" Action="Warning" />
    <Rule Id="C6324" Action="Warning" />
    <Rule Id="C6331" Action="Warning" />
    <Rule Id="C6332" Action="Warning" />
    <Rule Id="C6333" Action="Warning" />
    <Rule Id="C6335" Action="Warning" />
    <Rule Id="C6381" Action="Warning" />
    <Rule Id="C6383" Action="Warning" />
    <Rule Id="C6384" Action="Warning" />
    <Rule Id="C6388" Action="Warning" />
    <Rule Id="C6392" Action="Warning" />
    <Rule Id="C6397" Action="Warning" />
    <Rule Id="C6398" Action="Warning" />
    <Rule Id="C6993" Action="Warning" />
    <Rule Id="C6995" Action="Warning" />
    <Rule Id="C6997" Action="Warning" />
    <!-- Concurrency check -->
    <Rule Id="C26100" Action="Warning" />
    <Rule Id="C26101" Action="Warning" />
    <Rule Id="C26110" Action="Warning" />
    <Rule Id="C26111" Action="Warning" />
    <Rule Id="C26112" Action="Warning" />
    <Rule Id="C26115" Action="Warning" />
    <Rule Id="C26116" Action="Warning" />
    <Rule Id="C26117" Action="Warning" />
    <Rule Id="C26140" Action="Warning" />

    <!-- CppCoreCheck -->
    <!-- No slicing -->
    <Rule Id="C26437" Action="Warning" />
    <!-- Special function noexcept -->
    <Rule Id="C26439" Action="Warning" />
    <!-- No std::move on const -->
    <Rule Id="C26478" Action="Warning" />
    <Rule Id="C26479" Action="Warning" />
    <!-- Use constexpr with call -->
    <Rule Id="C26498" Action="Warning" />
    <!-- Use after move error -->
    <Rule Id="C26800" Action="Warning" />
    <!-- Bitwise enum misuse -->
    <Rule Id="C26813" Action="Warning" />
    <Rule Id="C26827" Action="Warning" />
    <Rule Id="C26828" Action="Warning" />
    <!-- Unnecessary copy -->
    <Rule Id="C26817" Action="Warning" />
    <Rule Id="C26820" Action="Warning" />
    <!-- Empty optional unwrap warnings -->
    <Rule Id="C26829" Action="Warning" />
    <Rule Id="C26859" Action="Warning" />

    <Rule Id="C28020" Action="Warning" />
    <Rule Id="C28022" Action="Warning" />
    <Rule Id="C28023" Action="Warning" />
    <Rule Id="C28024" Action="Warning" />
    <Rule Id="C28039" Action="Warning" />
    <Rule Id="C28112" Action="Warning" />
    <Rule Id="C28113" Action="Warning" />
    <Rule Id="C28125" Action="Warning" />
    <Rule Id="C28137" Action="Warning" />
    <Rule Id="C28138" Action="Warning" />
    <Rule Id="C28159" Action="Warning" />
    <Rule Id="C28160" Action="Warning" />
    <Rule Id="C28163" Action="Warning" />
    <Rule Id="C28164" Action="Warning" />
    <Rule Id="C28183" Action="Warning" />
    <Rule Id="C28193" Action="Warning" />
    <Rule Id="C28196" Action="Warning" />
    <Rule Id="C28209" Action="Warning" />
    <Rule Id="C28244" Action="Warning" />
    <Rule Id="C28306" Action="Warning" />
    <Rule Id="C28307" Action="Warning" />
    <Rule Id="C33004" Action="Warning" />
    <Rule Id="C33005" Action="Warning" />
    <Rule Id="C33011" Action="Warning" />
  </Rules>
</RuleSet>