BizHawk/Common.ruleset

1003 lines
33 KiB
XML

<?xml version="1.0"?>
<RuleSet Name="BizHawk Rules" Description="Applies to all projects in the solution -- or, it will eventually." ToolsVersion="14.0">
<Rules AnalyzerId="BizHawk.Analyzer" RuleNamespace="BizHawk.Analyzer">
<!-- Do not use anonymous delegates -->
<Rule Id="BHI1001" Action="Error" />
<!-- Do not use anonymous types (classes) -->
<Rule Id="BHI1002" Action="Error" />
<!-- Do not use query expression syntax -->
<Rule Id="BHI1003" Action="Error" />
<!-- Verbatim interpolated strings should begin $@, not @$ -->
<Rule Id="BHI1004" Action="Error" />
<!-- Default branch of switch expression should throw InvalidOperationException/SwitchExpressionException or not throw -->
<Rule Id="BHI1005" Action="Error" />
<!-- Don't call this.GetType() in sealed type, use typeof operator -->
<Rule Id="BHI1100" Action="Error" />
<!-- Don't call this.GetType(), use typeof operator (or replace subtype check with better encapsulation) -->
<Rule Id="BHI1101" Action="Error" />
<!-- Don't call typeof(T).Name, use nameof operator -->
<Rule Id="BHI1102" Action="Error" />
<!-- Don't call typeof(T).ToString(), use nameof operator or typeof(T).FullName -->
<Rule Id="BHI1103" Action="Error" />
<!-- Call to FirstOrDefault when elements are of a value type; FirstOrNull may have been intended -->
<Rule Id="BHI3100" Action="Error" />
<!-- Use .Order()/.OrderDescending() shorthand -->
<Rule Id="BHI3101" Action="Warning" />
<!-- Throw NotImplementedException from methods/props marked [FeatureNotImplemented] -->
<Rule Id="BHI3300" Action="Error" />
</Rules>
<Rules AnalyzerId="DocumentationAnalyzers" RuleNamespace="DocumentationAnalyzers.StyleRules">
<!-- Place text in paragraphs -->
<Rule Id="DOC100" Action="Hidden" />
<!-- Use child blocks consistently -->
<Rule Id="DOC101" Action="Hidden" />
<!-- Use child blocks consistently across elements of the same kind -->
<Rule Id="DOC102" Action="Hidden" />
<!-- Use Unicode characters -->
<!-- unnecessary HTML entities also get picked up by CS1570, which seems more reliable -->
<Rule Id="DOC103" Action="Error" />
<!-- Prefer '<see langword="keyword"/>' to '<c>keyword</c>' for referencing language keywords -->
<Rule Id="DOC104" Action="Warning" />
<!-- Prefer '<paramref name="parameter"/>' to '<c>parameter</c>' for referencing parameters -->
<Rule Id="DOC105" Action="Warning" />
<!-- Prefer '<typeparamref name="type_parameter"/>' to '<c>type_parameter</c>' for referencing type parameters -->
<Rule Id="DOC106" Action="Warning" />
<!-- Prefer '<see cref="target"/>' to '<c>target</c>' for referencing code elements -->
<Rule Id="DOC107" Action="Warning" />
<!-- Avoid empty paragraphs -->
<Rule Id="DOC108" Action="Error" />
</Rules>
<Rules AnalyzerId="DocumentationAnalyzers" RuleNamespace="DocumentationAnalyzers.PortabilityRules">
<!-- Use XML documentation syntax -->
<Rule Id="DOC200" Action="Error" />
<!-- Item should have description -->
<Rule Id="DOC201" Action="Error" />
<!-- Use section elements correctly -->
<Rule Id="DOC202" Action="Error" />
<!-- Use block elements correctly -->
<Rule Id="DOC203" Action="Error" />
<!-- Use inline elements correctly -->
<!-- but this doesn't pick up <seealso/> in <summary/>, for example... -->
<Rule Id="DOC204" Action="Error" />
<!-- 'langword' attribute value should be a language keyword -->
<Rule Id="DOC207" Action="Error" />
<!-- 'href' attribute value should be a URI -->
<!-- a lot of false negatives with this one too -->
<Rule Id="DOC209" Action="Error" />
</Rules>
<Rules AnalyzerId="Menees.Analyzers" RuleNamespace="Menees.Analyzers">
<!-- Line is too long -->
<Rule Id="MEN002" Action="Hidden" />
<!-- Method is too long -->
<Rule Id="MEN003" Action="Hidden" />
<!-- Property accessor is too long -->
<Rule Id="MEN004" Action="Hidden" />
<!-- File is too long -->
<Rule Id="MEN005" Action="Hidden" />
<!-- Use a single return -->
<Rule Id="MEN007" Action="Hidden" />
<!-- File name should match type -->
<Rule Id="MEN008" Action="Hidden" />
<!-- Use the preferred exception type -->
<Rule Id="MEN009" Action="Hidden" />
<!-- Flags should be powers of two -->
<Rule Id="MEN012" Action="Hidden" />
<!-- Use UTC time -->
<Rule Id="MEN013" Action="Hidden" />
<!-- Prefer TryGetValue -->
<Rule Id="MEN014" Action="Hidden" />
<!-- Use Preferred Terms -->
<Rule Id="MEN015" Action="Hidden" />
</Rules>
<Rules AnalyzerId="Meziantou.Analyzers" RuleNamespace="Meziantou.Analyzers">
<!-- StringComparison is missing -->
<Rule Id="MA0001" Action="Hidden" />
<!-- IEqualityComparer<string> or IComparer<string> is missing -->
<Rule Id="MA0002" Action="Hidden" />
<!-- Add parameter name to improve readability -->
<Rule Id="MA0003" Action="Hidden" />
<!-- Use Task.ConfigureAwait(false) -->
<Rule Id="MA0004" Action="Hidden" />
<!-- Use Array.Empty<T>() -->
<Rule Id="MA0005" Action="Hidden" />
<!-- Use String.Equals instead of equality operator -->
<Rule Id="MA0006" Action="Hidden" />
<!-- Add a comma after the last value -->
<Rule Id="MA0007" Action="Hidden" />
<!-- Add StructLayoutAttribute -->
<Rule Id="MA0008" Action="Hidden" />
<!-- Add regex evaluation timeout -->
<Rule Id="MA0009" Action="Hidden" />
<!-- Mark attributes with AttributeUsageAttribute -->
<Rule Id="MA0010" Action="Error" />
<!-- IFormatProvider is missing -->
<Rule Id="MA0011" Action="Hidden" />
<!-- Do not raise reserved exception type -->
<Rule Id="MA0012" Action="Error" />
<!-- Types should not extend System.ApplicationException -->
<Rule Id="MA0013" Action="Error" />
<!-- Do not raise System.ApplicationException type -->
<Rule Id="MA0014" Action="Error" />
<!-- Specify the parameter name in ArgumentException -->
<Rule Id="MA0015" Action="Error" />
<!-- Prefer returning collection abstraction instead of implementation -->
<Rule Id="MA0016" Action="Hidden" />
<!-- Abstract types should not have public or internal constructors -->
<Rule Id="MA0017" Action="Hidden" />
<!-- Do not declare static members on generic types -->
<Rule Id="MA0018" Action="Error" />
<!-- Use EventArgs.Empty -->
<Rule Id="MA0019" Action="Error" />
<!-- Use direct methods instead of LINQ methods -->
<Rule Id="MA0020" Action="Error" />
<!-- Use StringComparer.GetHashCode instead of string.GetHashCode -->
<Rule Id="MA0021" Action="Hidden" />
<!-- Return Task.FromResult instead of returning null -->
<Rule Id="MA0022" Action="Error" />
<!-- Add RegexOptions.ExplicitCapture -->
<Rule Id="MA0023" Action="Hidden" />
<!-- Use an explicit StringComparer when possible -->
<Rule Id="MA0024" Action="Error" />
<!-- Implement the functionality instead of throwing NotImplementedException -->
<Rule Id="MA0025" Action="Hidden" />
<!-- Fix TODO comment -->
<Rule Id="MA0026" Action="Hidden" />
<!-- Do not remove original exception -->
<Rule Id="MA0027" Action="Error" />
<!-- Optimize StringBuilder usage -->
<Rule Id="MA0028" Action="Hidden" />
<!-- Combine LINQ methods -->
<Rule Id="MA0029" Action="Error" />
<!-- Remove useless OrderBy call -->
<Rule Id="MA0030" Action="Error" />
<!-- Optimize Enumerable.Count() usage -->
<Rule Id="MA0031" Action="Error" />
<!-- Use an overload with a CancellationToken argument -->
<Rule Id="MA0032" Action="Hidden" />
<!-- Do not tag instance fields with ThreadStaticAttribute -->
<Rule Id="MA0033" Action="Error" />
<!-- Do not use dangerous threading methods -->
<Rule Id="MA0035" Action="Error" />
<!-- Make class static -->
<Rule Id="MA0036" Action="Hidden" />
<!-- Remove empty statement -->
<Rule Id="MA0037" Action="Error" />
<!-- Make method static -->
<Rule Id="MA0038" Action="Hidden" />
<!-- Do not write your own certificate validation method -->
<Rule Id="MA0039" Action="Error" />
<!-- Flow the cancellation token -->
<Rule Id="MA0040" Action="Hidden" />
<!-- Make property static -->
<Rule Id="MA0041" Action="Hidden" />
<!-- Do not use blocking calls in an async method -->
<Rule Id="MA0042" Action="Error" />
<!-- Use nameof operator in ArgumentException -->
<Rule Id="MA0043" Action="Error" />
<!-- Remove useless ToString call -->
<Rule Id="MA0044" Action="Hidden" />
<!-- Do not use blocking call in a sync method (need to make containing method async) -->
<Rule Id="MA0045" Action="Hidden" />
<!-- Use EventHandler<T> to declare events -->
<Rule Id="MA0046" Action="Hidden" />
<!-- Declare types in namespaces -->
<Rule Id="MA0047" Action="Error" />
<!-- File name must match type name -->
<Rule Id="MA0048" Action="Hidden" />
<!-- Type name should not match containing namespace -->
<Rule Id="MA0049" Action="Hidden" />
<!-- Validate arguments correctly in iterator methods -->
<Rule Id="MA0050" Action="Error" />
<!-- Method is too long -->
<Rule Id="MA0051" Action="Hidden" />
<!-- Replace constant Enum.ToString with nameof -->
<Rule Id="MA0052" Action="Error" />
<!-- Make class sealed -->
<Rule Id="MA0053" Action="Hidden" />
<!-- Embed the caught exception as innerException -->
<Rule Id="MA0054" Action="Error" />
<!-- Do not use finalizer -->
<Rule Id="MA0055" Action="Hidden" />
<!-- Do not call overridable members in constructor -->
<Rule Id="MA0056" Action="Hidden" />
<!-- Class name should end with 'Attribute' -->
<Rule Id="MA0057" Action="Hidden" />
<!-- Class name should end with 'Exception' -->
<Rule Id="MA0058" Action="Error" />
<!-- Class name should end with 'EventArgs' -->
<Rule Id="MA0059" Action="Hidden" />
<!-- The value returned by Stream.Read/Stream.ReadAsync is not used -->
<Rule Id="MA0060" Action="Hidden" />
<!-- Method overrides should not change parameter defaults -->
<Rule Id="MA0061" Action="Hidden" />
<!-- Non-flags enums should not be marked with "FlagsAttribute" -->
<Rule Id="MA0062" Action="Hidden" />
<!-- Use Where before OrderBy -->
<Rule Id="MA0063" Action="Error" />
<!-- Avoid locking on publicly accessible instance -->
<Rule Id="MA0064" Action="Hidden" />
<!-- Default ValueType.Equals or HashCode is used for struct's equality -->
<Rule Id="MA0065" Action="Error" />
<!-- Hash table unfriendly type is used in a hash table -->
<Rule Id="MA0066" Action="Error" />
<!-- Use Guid.Empty -->
<Rule Id="MA0067" Action="Error" />
<!-- Invalid parameter name for nullable attribute -->
<Rule Id="MA0068" Action="Error" />
<!-- Non-constant static fields should not be visible -->
<Rule Id="MA0069" Action="Hidden" />
<!-- Obsolete attributes should include explanations -->
<Rule Id="MA0070" Action="Hidden" />
<!-- Avoid using redundant else -->
<Rule Id="MA0071" Action="Hidden" />
<!-- Do not throw from a finally block -->
<Rule Id="MA0072" Action="Error" />
<!-- Avoid comparison with bool constant -->
<Rule Id="MA0073" Action="Hidden" />
<!-- Avoid implicit culture-sensitive methods -->
<Rule Id="MA0074" Action="Hidden" />
<!-- Do not use implicit culture-sensitive ToString -->
<Rule Id="MA0075" Action="Hidden" />
<!-- Do not use implicit culture-sensitive ToString in interpolated strings -->
<Rule Id="MA0076" Action="Hidden" />
<!-- A class that provides Equals(T) should implement IEquatable<T> -->
<Rule Id="MA0077" Action="Error" />
<!-- Use 'Cast' instead of 'Select' to cast -->
<Rule Id="MA0078" Action="Hidden" />
<!-- Flow the cancellation token using .WithCancellation() -->
<Rule Id="MA0079" Action="Error" />
<!-- Use a cancellation token using .WithCancellation() -->
<Rule Id="MA0080" Action="Error" />
<!-- Method overrides should not omit params keyword -->
<Rule Id="MA0081" Action="Error" />
<!-- NaN should not be used in comparisons -->
<Rule Id="MA0082" Action="Error" />
<!-- ConstructorArgument parameters should exist in constructors -->
<Rule Id="MA0083" Action="Error" />
<!-- Local variable should not hide other symbols -->
<Rule Id="MA0084" Action="Warning" />
<!-- Anonymous delegates should not be used to unsubscribe from Events -->
<Rule Id="MA0085" Action="Error" />
<!-- Do not throw from a finalizer -->
<Rule Id="MA0086" Action="Error" />
<!-- Parameters with [DefaultParameterValue] attributes should also be marked [Optional] -->
<Rule Id="MA0087" Action="Error" />
<!-- Use [DefaultParameterValue] instead of [DefaultValue] -->
<Rule Id="MA0088" Action="Error" />
<!-- Optimize string method usage -->
<Rule Id="MA0089" Action="Error" />
<!-- Remove empty else/finally block -->
<Rule Id="MA0090" Action="Hidden" />
<!-- Sender should be 'this' for instance events -->
<Rule Id="MA0091" Action="Hidden" />
<!-- Sender should be 'null' for static events -->
<Rule Id="MA0092" Action="Error" />
<!-- EventArgs should not be null -->
<Rule Id="MA0093" Action="Error" />
<!-- A class that provides CompareTo(T) should implement IComparable<T> -->
<Rule Id="MA0094" Action="Error" />
<!-- A class that implements IEquatable<T> should override Equals(object) -->
<Rule Id="MA0095" Action="Error" />
<!-- A class that implements IComparable<T> should also implement IEquatable<T> -->
<Rule Id="MA0096" Action="Hidden" />
<!-- A class that implements IComparable<T> or IComparable should override comparison operators -->
<Rule Id="MA0097" Action="Hidden" />
<!-- Use indexer instead of LINQ methods -->
<Rule Id="MA0098" Action="Warning" />
<!-- Use Explicit enum value instead of 0 -->
<Rule Id="MA0099" Action="Hidden" />
<!-- Await task before disposing of resources -->
<Rule Id="MA0100" Action="Error" />
<!-- String contains an implicit end of line character -->
<Rule Id="MA0101" Action="Hidden" />
<!-- Make member readonly -->
<Rule Id="MA0102" Action="Hidden" />
<!-- Use SequenceEqual instead of equality operator -->
<Rule Id="MA0103" Action="Error" />
<!-- Do not create a type with a name from the BCL -->
<Rule Id="MA0104" Action="Hidden" />
<!-- Use the lambda parameters instead of using a closure -->
<Rule Id="MA0105" Action="Error" />
<!-- Avoid closure by using an overload with the 'factoryArgument' parameter -->
<Rule Id="MA0106" Action="Error" />
<!-- Do not use culture-sensitive object.ToString -->
<Rule Id="MA0107" Action="Hidden" />
<!-- Remove redundant argument value -->
<Rule Id="MA0108" Action="Error" />
<!-- Consider adding an overload with a Span<T> or Memory<T> -->
<Rule Id="MA0109" Action="Hidden" />
<!-- Use the Regex source generator -->
<Rule Id="MA0110" Action="Error" />
</Rules>
<Rules AnalyzerId="Microsoft.CodeAnalysis.FxCopAnalyzers" RuleNamespace="Microsoft.CodeAnalysis.FxCopAnalyzers">
<!-- Types that own disposable fields should be disposable -->
<Rule Id="CA1001" Action="Hidden" />
<!-- Mark assemblies with assembly version -->
<Rule Id="CA1016" Action="Warning" />
<!-- Enum Storage should be Int32 -->
<Rule Id="CA1028" Action="Hidden" />
<!-- Use events where appropriate -->
<Rule Id="CA1030" Action="Hidden" />
<!-- Do not catch general exception types -->
<Rule Id="CA1031" Action="Hidden" />
<!-- Implement standard exception constructors -->
<Rule Id="CA1032" Action="Hidden" />
<!-- Nested types should not be visible -->
<Rule Id="CA1034" Action="Hidden" />
<!-- Override methods on comparable types -->
<Rule Id="CA1036" Action="Hidden" />
<!-- Avoid empty interfaces -->
<Rule Id="CA1040" Action="Hidden" />
<!-- Provide ObsoleteAttribute message -->
<Rule Id="CA1041" Action="Hidden" />
<!-- Use Integral Or String Argument For Indexers -->
<Rule Id="CA1043" Action="Hidden" />
<!-- Properties should not be write only -->
<Rule Id="CA1044" Action="Error" />
<!-- Do not declare visible instance fields -->
<Rule Id="CA1051" Action="Hidden" />
<!-- Uri parameters should not be strings -->
<Rule Id="CA1054" Action="Hidden" />
<!-- Uri return values should not be strings -->
<Rule Id="CA1055" Action="Hidden" />
<!-- Uri properties should not be strings -->
<Rule Id="CA1056" Action="Hidden" />
<!-- Validate arguments of public methods -->
<Rule Id="CA1062" Action="Hidden" />
<!-- Implement IDisposable Correctly -->
<Rule Id="CA1063" Action="Hidden" />
<!-- Exceptions should be public -->
<Rule Id="CA1064" Action="Error" />
<!-- Do not raise exceptions in unexpected locations -->
<Rule Id="CA1065" Action="Hidden" />
<!-- Type {0} should implement IEquatable<T> because it overrides Equals -->
<Rule Id="CA1066" Action="Hidden" />
<!-- Enums values should not be duplicated -->
<Rule Id="CA1069" Action="Hidden" />
<!-- Do not pass literals as localized parameters -->
<Rule Id="CA1303" Action="Hidden" />
<!-- Specify CultureInfo -->
<Rule Id="CA1304" Action="Hidden" />
<!-- Specify IFormatProvider -->
<Rule Id="CA1305" Action="Hidden" />
<!-- Specify StringComparison -->
<Rule Id="CA1307" Action="Hidden" />
<!-- Normalize strings to uppercase -->
<Rule Id="CA1308" Action="Hidden" />
<!-- P/Invokes should not be visible -->
<Rule Id="CA1401" Action="Hidden" />
<!-- Use nameof to express symbol names -->
<Rule Id="CA1507" Action="Hidden" />
<!-- Identifiers should not contain underscores -->
<Rule Id="CA1707" Action="Hidden" />
<!-- Identifiers should have correct suffix -->
<Rule Id="CA1710" Action="Hidden" />
<!-- Do not prefix enum values with type name -->
<Rule Id="CA1712" Action="Hidden" />
<!-- Events should not have 'Before' or 'After' prefix -->
<Rule Id="CA1713" Action="Hidden" />
<!-- Flags enums should have plural names -->
<Rule Id="CA1714" Action="Hidden" />
<!-- Identifiers should have correct prefix -->
<Rule Id="CA1715" Action="Hidden" />
<!-- Identifiers should not match keywords -->
<Rule Id="CA1716" Action="Hidden" />
<!-- Only FlagsAttribute enums should have plural names -->
<Rule Id="CA1717" Action="Hidden" />
<!-- Identifier contains type name -->
<Rule Id="CA1720" Action="Hidden" />
<!-- Property names should not match get methods -->
<Rule Id="CA1721" Action="Hidden" />
<!-- Type names should not match namespaces -->
<Rule Id="CA1724" Action="Hidden" />
<!-- Review unused parameters -->
<Rule Id="CA1801" Action="Hidden" />
<!-- Use literals where appropriate -->
<Rule Id="CA1802" Action="Hidden" />
<!-- Do not initialize unnecessarily -->
<Rule Id="CA1805" Action="Hidden" />
<!-- Do not ignore method results -->
<Rule Id="CA1806" Action="Error" />
<!-- Initialize reference type static fields inline -->
<Rule Id="CA1810" Action="Hidden" />
<!-- Avoid uninstantiated internal classes -->
<Rule Id="CA1812" Action="Hidden" />
<!-- Prefer jagged arrays over multidimensional -->
<Rule Id="CA1814" Action="Hidden" />
<!-- Override equals and operator equals on value types -->
<Rule Id="CA1815" Action="Hidden" />
<!-- Dispose methods should call SuppressFinalize -->
<Rule Id="CA1816" Action="Hidden" />
<!-- Properties should not return arrays -->
<Rule Id="CA1819" Action="Hidden" />
<!-- Test for empty strings using string length -->
<Rule Id="CA1820" Action="Hidden" />
<!-- Mark members as static -->
<Rule Id="CA1822" Action="Hidden" />
<!-- Avoid unused private fields -->
<Rule Id="CA1823" Action="Hidden" />
<!-- Avoid zero-length array allocations. -->
<Rule Id="CA1825" Action="Error" />
<!-- Do not use Count() or LongCount() when Any() can be used -->
<Rule Id="CA1827" Action="Error" />
<!-- Dispose objects before losing scope -->
<Rule Id="CA2000" Action="Hidden" />
<!-- Do not lock on objects with weak identity -->
<Rule Id="CA2002" Action="Hidden" />
<!-- Do not use stackalloc in loops -->
<Rule Id="CA2014" Action="Error" />
<!-- Review SQL queries for security vulnerabilities -->
<Rule Id="CA2100" Action="Hidden" />
<!-- Specify marshaling for P/Invoke string arguments -->
<Rule Id="CA2101" Action="Hidden" />
<!-- Instantiate argument exceptions correctly -->
<Rule Id="CA2208" Action="Error" />
<!-- Non-constant fields should not be visible -->
<Rule Id="CA2211" Action="Hidden" />
<!-- Disposable fields should be disposed -->
<Rule Id="CA2213" Action="Hidden" />
<!-- Do not call overridable methods in constructors -->
<Rule Id="CA2214" Action="Error" />
<!-- Disposable types should declare finalizer -->
<Rule Id="CA2216" Action="Hidden" />
<!-- Operator overloads have named alternates -->
<Rule Id="CA2225" Action="Hidden" />
<!-- Collection properties should be read only -->
<Rule Id="CA2227" Action="Hidden" />
<!-- Implement serialization constructors -->
<Rule Id="CA2229" Action="Hidden" />
<!-- Pass system uri objects instead of strings -->
<Rule Id="CA2234" Action="Hidden" />
<!-- Mark ISerializable types with serializable -->
<Rule Id="CA2237" Action="Hidden" />
<!-- Provide correct arguments to formatting methods -->
<Rule Id="CA2241" Action="Hidden" />
<!-- Attribute string literals should parse correctly -->
<Rule Id="CA2243" Action="Hidden" />
<!-- Insecure DTD processing in XML -->
<Rule Id="CA3075" Action="Hidden" />
<!-- Do Not Use Weak Cryptographic Algorithms -->
<Rule Id="CA5350" Action="Hidden" />
<!-- Do Not Use Broken Cryptographic Algorithms -->
<Rule Id="CA5351" Action="Hidden" />
</Rules>
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.SpacingRules">
<!-- Keywords should be spaced correctly -->
<Rule Id="SA1000" Action="Hidden" />
<!-- Commas should be spaced correctly -->
<Rule Id="SA1001" Action="Hidden" />
<!-- Semicolons should be spaced correctly -->
<Rule Id="SA1002" Action="Hidden" />
<!-- Symbols should be spaced correctly -->
<Rule Id="SA1003" Action="Hidden" />
<!-- Documentation lines should begin with single space -->
<Rule Id="SA1004" Action="Hidden" />
<!-- Single line comments should begin with single space -->
<Rule Id="SA1005" Action="Hidden" />
<!-- Preprocessor keywords should not be preceded by space -->
<Rule Id="SA1006" Action="Error" />
<!-- Opening parenthesis should be spaced correctly -->
<Rule Id="SA1008" Action="Hidden" />
<!-- Closing parenthesis should be spaced correctly -->
<Rule Id="SA1009" Action="Hidden" />
<!-- Opening square brackets should be spaced correctly -->
<Rule Id="SA1010" Action="Hidden" />
<!-- Closing square brackets should be spaced correctly -->
<Rule Id="SA1011" Action="Hidden" />
<!-- Opening braces should be spaced correctly -->
<Rule Id="SA1012" Action="Hidden" />
<!-- Closing braces should be spaced correctly -->
<Rule Id="SA1013" Action="Hidden" />
<!-- Member access symbols should be spaced correctly -->
<Rule Id="SA1019" Action="Error" />
<!-- Negative signs should be spaced correctly -->
<Rule Id="SA1021" Action="Hidden" />
<!-- Dereference and access of symbols should be spaced correctly -->
<Rule Id="SA1023" Action="Hidden" />
<!-- Colons should be spaced correctly -->
<Rule Id="SA1024" Action="Hidden" />
<!-- Code should not contain multiple whitespace in a row -->
<Rule Id="SA1025" Action="Hidden" />
<!-- Use tabs correctly -->
<Rule Id="SA1027" Action="Hidden" />
<!-- Code should not contain trailing whitespace -->
<Rule Id="SA1028" Action="Hidden" />
</Rules>
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.ReadabilityRules">
<!-- Do not prefix calls with base unless local implementation exists -->
<Rule Id="SA1100" Action="Error" />
<!-- Prefix local calls with this -->
<Rule Id="SA1101" Action="Hidden" />
<!-- Code should not contain multiple statements on one line -->
<Rule Id="SA1107" Action="Hidden" />
<!-- Block statements should not contain embedded comments -->
<Rule Id="SA1108" Action="Hidden" />
<!-- Opening parenthesis or bracket should be on declaration line -->
<Rule Id="SA1110" Action="Hidden" />
<!-- Closing parenthesis should be on line of last parameter -->
<Rule Id="SA1111" Action="Hidden" />
<!-- Parameter list should follow declaration -->
<Rule Id="SA1114" Action="Hidden" />
<!-- Split parameters should start on line after declaration -->
<Rule Id="SA1116" Action="Hidden" />
<!-- Parameters should be on same line or separate lines -->
<Rule Id="SA1117" Action="Hidden" />
<!-- Parameter should not span multiple lines -->
<Rule Id="SA1118" Action="Hidden" />
<!-- Comments should contain text -->
<Rule Id="SA1120" Action="Warning" />
<!-- Use built-in type alias -->
<Rule Id="SA1121" Action="Error" />
<!-- Use string.Empty for empty strings -->
<Rule Id="SA1122" Action="Hidden" />
<!-- Generic type constraints should be on their own line -->
<Rule Id="SA1127" Action="Hidden" />
<!-- Put constructor initializers on their own line -->
<Rule Id="SA1128" Action="Hidden" />
<!-- Do not use default value type constructor -->
<Rule Id="SA1129" Action="Error" />
<!-- Use readable conditions -->
<Rule Id="SA1131" Action="Hidden" />
<!-- Do not combine fields -->
<Rule Id="SA1132" Action="Hidden" />
<!-- Do not combine attributes -->
<Rule Id="SA1133" Action="Error" />
<!-- Attributes should not share line -->
<Rule Id="SA1134" Action="Hidden" />
<!-- Enum values should be on separate lines -->
<Rule Id="SA1136" Action="Hidden" />
<!-- Elements should have the same indentation -->
<Rule Id="SA1137" Action="Error" />
</Rules>
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.OrderingRules">
<!-- Elements should appear in the correct order -->
<Rule Id="SA1201" Action="Hidden" />
<!-- Elements should be ordered by access -->
<Rule Id="SA1202" Action="Hidden" />
<!-- Constants should appear before fields -->
<Rule Id="SA1203" Action="Hidden" />
<!-- Static elements should appear before instance elements -->
<Rule Id="SA1204" Action="Hidden" />
<!-- System using directives should be placed before other using directives -->
<Rule Id="SA1208" Action="Error" />
<!-- Using directives should be ordered alphabetically by namespace -->
<Rule Id="SA1210" Action="Hidden" />
<!-- Using alias directives should be ordered alphabetically by alias name -->
<Rule Id="SA1211" Action="Error" />
<!-- Readonly fields should appear before non-readonly fields -->
<Rule Id="SA1214" Action="Hidden" />
</Rules>
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.NamingRules">
<!-- Element should begin with upper-case letter -->
<Rule Id="SA1300" Action="Hidden" />
<!-- Interface names should begin with I -->
<Rule Id="SA1302" Action="Hidden" />
<!-- Const field names should begin with upper-case letter -->
<Rule Id="SA1303" Action="Hidden" />
<!-- Non-private readonly fields should begin with upper-case letter -->
<Rule Id="SA1304" Action="Hidden" />
<!-- Field names should begin with lower-case letter -->
<Rule Id="SA1306" Action="Hidden" />
<!-- Accessible fields should begin with upper-case letter -->
<Rule Id="SA1307" Action="Hidden" />
<!-- Variable names should not be prefixed -->
<Rule Id="SA1308" Action="Hidden" />
<!-- Field names should not begin with underscore -->
<Rule Id="SA1309" Action="Hidden" />
<!-- Field names should not contain underscore -->
<Rule Id="SA1310" Action="Hidden" />
<!-- Static readonly fields should begin with upper-case letter -->
<Rule Id="SA1311" Action="Hidden" />
<!-- Variable names should begin with lower-case letter -->
<Rule Id="SA1312" Action="Hidden" />
<!-- Parameter names should begin with lower-case letter -->
<Rule Id="SA1313" Action="Hidden" />
</Rules>
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.MaintainabilityRules">
<!-- I put this rule in this section because the defaults put it here. -->
<!-- Statement should not use unnecessary parenthesis -->
<Rule Id="SA1119" Action="Hidden" />
<!-- Access modifier should be declared -->
<Rule Id="SA1400" Action="Error" />
<!-- Fields should be private -->
<Rule Id="SA1401" Action="Hidden" />
<!-- File may only contain a single type -->
<Rule Id="SA1402" Action="Hidden" />
<!-- Debug.Assert should provide message text -->
<Rule Id="SA1405" Action="Hidden" />
<!-- Arithmetic expressions should declare precedence -->
<Rule Id="SA1407" Action="Hidden" />
<!-- Conditional expressions should declare precedence -->
<Rule Id="SA1408" Action="Hidden" />
<!-- Use trailing comma in multi-line initializers -->
<Rule Id="SA1413" Action="Hidden" />
</Rules>
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.LayoutRules">
<!-- Braces for multi-line statements should not share line -->
<Rule Id="SA1500" Action="Hidden" />
<!-- Statement should not be on a single line -->
<Rule Id="SA1501" Action="Hidden" />
<!-- Element should not be on a single line -->
<Rule Id="SA1502" Action="Hidden" />
<!-- Braces should not be omitted -->
<Rule Id="SA1503" Action="Hidden" />
<!-- Opening braces should not be followed by blank line -->
<Rule Id="SA1505" Action="Hidden" />
<!-- Element documentation headers should not be followed by blank line -->
<Rule Id="SA1506" Action="Hidden" />
<!-- Code should not contain multiple blank lines in a row -->
<Rule Id="SA1507" Action="Hidden" />
<!-- Closing braces should not be preceded by blank line -->
<Rule Id="SA1508" Action="Hidden" />
<!-- Opening braces should not be preceded by blank line -->
<Rule Id="SA1509" Action="Hidden" />
<!-- Chained statement blocks should not be preceded by blank line -->
<Rule Id="SA1510" Action="Hidden" />
<!-- Single-line comments should not be followed by blank line -->
<Rule Id="SA1512" Action="Hidden" />
<!-- Closing brace should be followed by blank line -->
<Rule Id="SA1513" Action="Hidden" />
<!-- Element documentation header should be preceded by blank line -->
<Rule Id="SA1514" Action="Hidden" />
<!-- Single-line comment should be preceded by blank line -->
<Rule Id="SA1515" Action="Hidden" />
<!-- Elements should be separated by blank line -->
<Rule Id="SA1516" Action="Hidden" />
<!-- Code should not contain blank lines at start of file -->
<Rule Id="SA1517" Action="Hidden" />
<!-- Use line endings correctly at end of file -->
<Rule Id="SA1518" Action="Hidden" />
<!-- Braces should not be omitted from multi-line child statement -->
<Rule Id="SA1519" Action="Hidden" />
<!-- Use braces consistently -->
<Rule Id="SA1520" Action="Hidden" />
</Rules>
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.DocumentationRules">
<!-- Element documentation should have summary text -->
<Rule Id="SA1606" Action="Hidden" />
<!-- Property documentation should have value text -->
<Rule Id="SA1610" Action="Hidden" />
<!-- Element parameter documentation should match element parameters -->
<Rule Id="SA1612" Action="Hidden" />
<!-- Element parameter documentation should have text -->
<Rule Id="SA1614" Action="Hidden" />
<!-- Element return value documentation should have text -->
<Rule Id="SA1616" Action="Hidden" />
<!-- Generic type parameter documentation should have text -->
<Rule Id="SA1622" Action="Hidden" />
<!-- Property summary documentation should match accessors -->
<Rule Id="SA1623" Action="Hidden" />
<!-- Element documentation should not be copied and pasted -->
<Rule Id="SA1625" Action="Hidden" />
<!-- Documentation text should not be empty -->
<Rule Id="SA1627" Action="Hidden" />
<!-- Documentation text should end with a period -->
<Rule Id="SA1629" Action="Hidden" />
<!-- File should have header -->
<Rule Id="SA1633" Action="Hidden" />
<!-- Constructor summary documentation should begin with standard text -->
<Rule Id="SA1642" Action="Hidden" />
<!-- File name should match first type name -->
<Rule Id="SA1649" Action="Hidden" />
</Rules>
</RuleSet>