<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="kubernetes-client" ToolsVersion="10.0">

  <!-- style guideline https://github.com/kubernetes-client/csharp/issues/439 -->

  <!-- https://github.com/DotNetAnalyzers/StyleCopAnalyzers/tree/master/documentation -->
  <Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers">

    <!-- The file name of a C# code file does not match the first type declared in the file. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1649.md -->
    <Rule Id="SA1649" Action="Error" />

    <!-- A C# code element is missing a documentation header. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1600.md -->
    <Rule Id="SA1600" Action="None" />

    <!-- A C# partial element is missing a documentation header. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1601.md -->
    <Rule Id="SA1601" Action="None" />

    <!-- An item within a C# enumeration is missing an Xml documentation header. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1602.md -->
    <Rule Id="SA1602" Action="Warning" />

    <!-- A C# method, constructor, delegate or indexer element is missing documentation for one or more of its parameters. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1611.md -->
    <Rule Id="SA1611" Action="Warning" />

    <!-- The documentation describing the parameters to a C# method, constructor, delegate or indexer element does not match the actual parameters on the element. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1612.md -->
    <Rule Id="SA1612" Action="Warning" />

    <!-- A C# element is missing documentation for its return value. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1615.md -->
    <Rule Id="SA1615" Action="Warning" />

    <!-- A generic C# element is missing documentation for one or more of its generic type parameters. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1618.md -->
    <Rule Id="SA1618" Action="Warning" />

    <!-- A `<typeparam>` tag within the Xml header documentation for a generic C# element is empty. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1622.md -->
    <Rule Id="SA1622" Action="Warning" />

    <!-- The documentation text within a C# property's `<summary>` tag does not match the accessors within the property. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1623.md -->
    <Rule Id="SA1623" Action="None" />

    <!-- The Xml documentation for a C# element contains two or more identical entries, indicating that the documentation has been copied and pasted. This can sometimes indicate invalid or poorly written documentation. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1625.md -->
    <Rule Id="SA1625" Action="Warning" />

    <!-- A section of the Xml header documentation for a C# element does not end with a period (also known as a full stop). https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1629.md -->
    <Rule Id="SA1629" Action="None" />

    <!-- A C# code file is missing a standard file header. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1633.md -->
    <Rule Id="SA1633" Action="None" />

    <!-- The XML documentation header for a C# constructor does not contain the appropriate summary text. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1642.md -->
    <Rule Id="SA1642" Action="Warning" />

    <!-- The opening or closing brace within a C# statement, element, or expression is not placed on its own line. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1500.md -->
    <Rule Id="SA1500" Action="Error" />

    <!-- The opening and closing braces for a C# statement have been omitted. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1503.md -->
    <Rule Id="SA1500" Action="Error" />

    <!-- The C# code contains multiple blank lines in a row. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1507.md -->
    <Rule Id="SA1507" Action="None" />

    <!-- An opening brace within a C# element, statement, or expression is preceded by a blank line. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1509.md -->
    <Rule Id="SA1509" Action="Warning" />

    <!-- A single-line comment within C# code is followed by a blank line. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1512.md -->
    <Rule Id="SA1512" Action="None" />

    <!-- A closing brace within a C# element, statement, or expression is not followed by a blank line. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1513.md -->
    <Rule Id="SA1513" Action="Error" />

    <!-- A single-line comment within C# code is not preceded by a blank line. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1515.md -->
    <Rule Id="SA1515" Action="None" />

    <!-- Adjacent C# elements are not separated by a blank line. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1516.md -->
    <Rule Id="SA1516" Action="None" />

    <!-- A C# statement contains parenthesis which are unnecessary and should be removed. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1119.md -->
    <Rule Id="SA1119" Action="None" />

    <!-- The access modifier for a C# element has not been explicitly defined. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1400.md -->
    <Rule Id="SA1400" Action="Error" />

    <!-- A field within a C# class has an access modifier other than private. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1401.md -->
    <Rule Id="SA1401" Action="Error" />

    <!-- A C# code file contains more than one unique type. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1402.md -->
    <Rule Id="SA1402" Action="Error" />

    <!-- A call to Debug.Assert in C# code does not include a descriptive message. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1405.md -->
    <Rule Id="SA1405" Action="None" />

    <!-- The last statement in a multi-line C# initializer or list is missing a trailing comma. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1413.md -->
    <Rule Id="SA1413" Action="Error" />

    <!-- The name of a C# element does not begin with an upper-case letter. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1300.md -->
    <Rule Id="SA1300" Action="None" />

    <!-- The name of a field in C# does not begin with a lower-case letter. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1306.md -->
    <Rule Id="SA1306" Action="Error" />

    <!-- A field name in C# begins with an underscore. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1309.md -->
    <Rule Id="SA1309" Action="None" />

    <!-- The name of a variable in C# does not begin with a lower-case letter. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1312.md -->
    <Rule Id="SA1312" Action="Error" />

    <!-- The name of a C# type parameter does not begin with the capital letter T. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1314.md -->
    <Rule Id="SA1314" Action="None" />

    <!-- A C# using directive is placed outside of a namespace element. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1200.md -->
    <Rule Id="SA1200" Action="Error" />

    <!-- An element within a C# code file is out of order in relation to the other elements in the code. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1201.md -->
    <Rule Id="SA1201" Action="None" />

    <!-- An element within a C# code file is out of order within regard to access level, in relation to other elements in the code. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1202.md -->
    <Rule Id="SA1202" Action="None" />

    <!-- A constant field is placed beneath a non-constant field. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1203.md -->
    <Rule Id="SA1203" Action="None" />

    <!-- A static element is positioned beneath an instance element of the same type. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1204.md -->
    <Rule Id="SA1204" Action="None" />

    <!-- The keywords within the declaration of an element do not follow a standard ordering scheme. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1206.md -->
    <Rule Id="SA1206" Action="None" />

    <!-- The using directives within a C# code file are not sorted alphabetically by namespace. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1210.md -->
    <Rule Id="SA1210" Action="None" />

    <!-- A readonly field is positioned beneath a non-readonly field. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1214.md -->
    <Rule Id="SA1214" Action="None" />

    <!-- A call to an instance member of the local class or a base class is not prefixed with 'this.', within a C# code file. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1101.md -->
    <Rule Id="SA1101" Action="None" />

    <!-- A C# statement contains a comment between the declaration of the statement and the opening brace of the statement. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1108.md -->
    <Rule Id="SA1108" Action="Error" />

    <!-- A comma between two parameters in a call to a C# method or indexer, or in the declaration of a method or indexer, is not placed on the same line as the previous parameter. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1113.md -->
    <Rule Id="SA1113" Action="Warning" />

    <!-- The parameters to a C# method or indexer call or declaration span across multiple lines, but the first parameter does not start on the line after the opening bracket. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1116.md -->
    <Rule Id="SA1116" Action="Warning" />

    <!-- The parameters to a C# method or indexer call or declaration are not all on the same line or each on a separate line. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1117.md -->
    <Rule Id="SA1117" Action="None" />

    <!-- A parameter to a C# method or indexer, other than the first parameter, spans across multiple lines. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1118.md -->
    <Rule Id="SA1118" Action="Warning" />

    <!-- The C# comment does not contain any comment text. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1120.md -->
    <Rule Id="SA1120" Action="None" />

    <!-- The code uses one of the basic C# types, but does not use the built-in alias for the type. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1121.md -->
    <Rule Id="SA1121" Action="Warning" />

    <!-- The C# code includes an empty string, written as `""`. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1122.md -->
    <Rule Id="SA1122" Action="None" />

    <!-- The C# code contains a region. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1124.md -->
    <Rule Id="SA1124" Action="Error" />

    <!-- A generic constraint on a type or method declaration is on the same line as the declaration, within a C# code file. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1127.md -->
    <Rule Id="SA1127" Action="Warning" />

    <!-- A constructor initializer is on the same line as the constructor declaration, within a C# code file. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1128.md -->
    <Rule Id="SA1128" Action="Warning" />

    <!-- A comparison was made between a variable and a literal or constant value, and the variable appeared on the right-hand side of the expression. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1131.md -->
    <Rule Id="SA1131" Action="Error" />

    <!-- An attribute is placed on the same line of code as another attribute or element. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1134.md -->
    <Rule Id="SA1134" Action="Warning" />

    <!-- The spacing around a comma is incorrect, within a C# code file. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1001.md -->
    <Rule Id="SA1001" Action="Warning" />

    <!-- A closing parenthesis within a C# statement is not spaced correctly. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1009.md -->
    <Rule Id="SA1009" Action="None" />

    <!-- An opening brace within a C# element is not spaced correctly. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1012.md -->
    <Rule Id="SA1012" Action="Warning" />

    <!-- The code contains a tab or space character which is not consistent with the current project settings. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1027.md -->
    <Rule Id="SA1027" Action="Error" />

    <!-- A line of code ends with a space, tab, or other whitespace characters before the end of line character(s). https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1028.md -->
    <Rule Id="SA1028" Action="Warning" />

    <!-- All diagnostics of XML documentation comments has been disabled due to the current project configuration. https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA0001.md -->
    <Rule Id="SA0001" Action="None" />

    <!-- Call GC.SuppressFinalize correctly https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1816 -->
    <Rule Id="CA1816" Action="Error" />

    <!-- Review unused parameters https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1801 -->
    <Rule Id="CA1801" Action="None" />

    <!-- Rethrow to preserve stack details https://docs.microsoft.com/en-us/visualstudio/code-quality/CA2200 -->
    <Rule Id="CA2200" Action="Warning" />

    <!-- Disposable fields should be disposed https://docs.microsoft.com/en-us/visualstudio/code-quality/CA2213 -->
    <Rule Id="CA2213" Action="Warning" />

    <!-- Operator overloads have named alternates https://docs.microsoft.com/en-us/visualstudio/code-quality/CA2225 -->
    <Rule Id="CA2225" Action="None" />

    <!-- Collection properties should be read only https://docs.microsoft.com/en-us/visualstudio/code-quality/CA2227 -->
    <Rule Id="CA2227" Action="None" />

    <!-- Mark ISerializable types with SerializableAttribute https://docs.microsoft.com/en-us/visualstudio/code-quality/CA2237 -->
    <Rule Id="CA2237" Action="None" />

    <!-- Do Not Disable Certificate Validation https://docs.microsoft.com/en-us/visualstudio/code-quality/CA5359 -->
    <Rule Id="CA5359" Action="None" />

    <!-- Mark attributes with AttributeUsageAttribute https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1018 -->
    <Rule Id="CA1018" Action="Warning" />

    <!-- Enum storage should be Int32 https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1028 -->
    <Rule Id="CA1028" Action="Warning" />

    <!-- Do not catch general exception types https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1031 -->
    <Rule Id="CA1031" Action="None" />

    <!-- Nested types should not be visible https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1034 -->
    <Rule Id="CA1034" Action="None" />

    <!-- Do not declare visible instance fields https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1051 -->
    <Rule Id="CA1051" Action="Warning" />

    <!-- Static holder types should be Static or NotInheritable https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1052 -->
    <Rule Id="CA1052" Action="None" />

    <!-- URI parameters should not be strings https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1054 -->
    <Rule Id="CA1054" Action="None" />

    <!-- Validate arguments of public methods https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1062 -->
    <Rule Id="CA1062" Action="Warning" />

    <!-- Implement IDisposable correctly https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1063 -->
    <Rule Id="CA1063" Action="Error" />

    <!-- Do not pass literals as localized parameters https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1303 -->
    <Rule Id="CA1303" Action="None" />

    <!-- Specify CultureInfo https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1304 -->
    <Rule Id="CA1304" Action="None" />

    <!-- Specify IFormatProvider https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1305 -->
    <Rule Id="CA1305" Action="None" />

    <!-- Specify StringComparison https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1307 -->
    <Rule Id="CA1307" Action="None" />

    <!-- Normalize strings to uppercase https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1308 -->
    <Rule Id="CA1308" Action="None" />

    <!-- Identifiers should not contain underscores https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1707 -->
    <Rule Id="CA1707" Action="Error" />

    <!-- Identifiers should have correct prefix https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1715 -->
    <Rule Id="CA1715" Action="None" />

    <!-- Identifiers should not match keywords https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1716 -->
    <Rule Id="CA1716" Action="None" />

    <!-- Identifiers should not contain type names https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1720 -->
    <Rule Id="CA1720" Action="None" />

    <!-- Use Literals Where Appropriate https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1802 -->
    <Rule Id="CA1802" Action="Error" />

    <!-- Avoid uninstantiated internal classes https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1812 -->
    <Rule Id="CA1812" Action="Error" />

    <!-- Mark members as static https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1822 -->
    <Rule Id="CA1822" Action="None" />

    <!-- Avoid zero-length array allocations https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1825 -->
    <Rule Id="CA1825" Action="None" />

    <!-- Do not use Count/LongCount when Any can be used https://docs.microsoft.com/en-us/visualstudio/code-quality/CA1827 -->
    <Rule Id="CA1827" Action="Error" />

    <!-- Dispose objects before losing scope https://docs.microsoft.com/en-us/visualstudio/code-quality/CA2000 -->
    <!-- TODO -->
    <Rule Id="CA2000" Action="None" />

    <!-- Do not directly await a Task https://docs.microsoft.com/en-us/visualstudio/code-quality/CA2007 -->
    <Rule Id="CA2007" Action="Error" />

    <!-- Do not create tasks without passing a TaskScheduler https://docs.microsoft.com/en-us/visualstudio/code-quality/CA2008 -->
    <!-- TODO -->
    <Rule Id="CA2008" Action="None" />

    <!-- TODO only in netcore2.1+-->
    <Rule Id="CA1835" Action="Info" />

    <!-- TODO missing doc-->
    <Rule Id="CS1591" Action="None" />
    <Rule Id="CS1573" Action="None" />
    <Rule Id="CS1574" Action="None" />
    <!-- Rename k8s.Extensions type to mitigate conflict with Microsoft.Extensions namespace https://github.com/kubernetes-client/csharp/pull/544#issuecomment-759230655-->
    <Rule Id="CA1724" Action="None" />
  </Rules>
</RuleSet>
