anchor.diff:  CA2224,OverrideEqualsOnOverloadingOperatorEquals,Microsoft.ApiDesignGuidelines,#N/A,Override Equals on overloading operator equals,A public type implements the equality operator but does not override Object.Equals.,Yes,7619,11,0.001443759,2688.743696,Usage,,High,Merge?,,,None
   CA2225,OperatorOverloadsHaveNamedAlternates,Microsoft.ApiDesignGuidelines,#N/A,Operator overloads have named alternates,"An operator overload was detected, and the expected named alternative method was not found. The named alternative member provides access to the same functionality as the operator and is provided for developers who program in languages that do not support overloaded operators.",Yes,71083,1385,0.019484265,249.009433,Usage,,High,Yes,,,HardCoded list of alternates
   CA2226,OperatorsShouldHaveSymmetricalOverloads,Microsoft.ApiDesignGuidelines,#N/A,Operators should have symmetrical overloads,A type implements the equality or inequality operator and does not implement the opposite operator.,Yes,47,0,0,,Usage,,High,Yes,,,None
  -RS0013,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,Do not invoke Diagnostic.Descriptor,"Accessing the Descriptor property of Diagnostic in compiler layer leads to unnecessary string allocations for fields of the descriptor that are not utilized in command line compilation. Hence, you should avoid accessing the Descriptor of the compiler diagnostics here. Instead you should directly access these properties off the Diagnostic type.",,,,,,Performance,,,Implemented,,,
  +RS0013,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,Do not invoke Diagnostic.Descriptor,"Accessing the Descriptor property of Diagnostic in compiler layer leads to unnecessary string allocations for fields of the descriptor that are not utilized in command line compilation. Hence, you should avoid accessing the Descriptor of the compiler diagnostics here. Instead you should directly access these properties off the Diagnostic type.",,,,,,Performance,,,Ported,,,
   CA2228,DoNotShipUnreleasedResourceFormats,System.Runtime,#N/A,Do not ship unreleased resource formats,Resource files that were built by using prerelease versions of the .NET Framework might not be usable by supported versions of the .NET Framework.,Yes,2033,45,0.022134776,149.4542954,Usage,,High,Cut,,,N/A
  -RS0016,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,Add public types and members to the declared API,"All public types and members should be declared in PublicAPI.txt. This draws attention to API changes in the code reviews and source control history, and helps prevent breaking changes.",,,,,,ApiDesign,,,Implemented,,,
  +RS0016,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,Add public types and members to the declared API,"All public types and members should be declared in PublicAPI.txt. This draws attention to API changes in the code reviews and source control history, and helps prevent breaking changes.",,,,,,ApiDesign,,,Ported,,,
   CA2230,UseParamsForVariableArguments,Microsoft.ApiDesignGuidelines,#N/A,Use params for variable arguments,A public or protected type contains a public or protected method that uses the VarArgs calling convention instead of the params keyword.,Yes,126,8,0.063492063,33.08083609,Usage,,High,,,,None
   CA2231,OverloadOperatorEqualsOnOverridingValueTypeEquals,Microsoft.ApiDesignGuidelines,System.Runtime.Analyzers,Overload operator equals on overriding value type Equals,"In most programming languages there is no default implementation of the equality operator (==) for value types. If your programming language supports operator overloads, you should consider implementing the equality operator. Its behavior should be identical to that of Equals",Yes,15312,25,0.001632706,2563.248351,Usage,,High,Yes,,,None
   CA2232,MarkWindowsFormsEntryPointsWithStaThread,Desktop,#N/A,Mark Windows Forms entry points with STAThread,"STAThreadAttribute indicates that the COM threading model for the application is a single-threaded apartment. This attribute must be present on the entry point of any application that uses Windows Forms; if it is omitted, the Windows components might not work correctly.",Yes,17032,43,0.002524659,1675.974803,Usage,,Low,Yes,,,None
   CA2233,OperationsShouldNotOverflow,System.Runtime,#N/A,Operations should not overflow,You should not perform arithmetic operations without first validating the operands. This makes sure that the result of the operation is not outside the range of possible values for the data types that are involved.,Yes,177875,717,0.004030921,1302.460516,Usage,,High,,,,IOperation
   CA2234,PassSystemUriObjectsInsteadOfStrings,Microsoft.ApiDesignGuidelines,#N/A,Pass system uri objects instead of strings,"A call is made to a method that has a string parameter whose name contains ""uri"", ""URI"", ""urn"", ""URN"", ""url"", or ""URL"". The declaring type of the method contains a corresponding method overload that has a System.Uri parameter.",Yes,197362,824,0.004175069,1268.305585,Usage,,High,Yes,,,WordParser
  -RS0017,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,Remove deleted types and members from the declared API,"When removing a public type or member the corresponding entry in PublicAPI.txt should also be removed. This draws attention to API changes in the code reviews and source control history, and helps prevent breaking changes.",,,,,,ApiDesign,,,Implemented,,,
  +RS0017,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,Remove deleted types and members from the declared API,"When removing a public type or member the corresponding entry in PublicAPI.txt should also be removed. This draws attention to API changes in the code reviews and source control history, and helps prevent breaking changes.",,,,,,ApiDesign,,,Ported,,,
   CA2236,CallBaseClassMethodsOnISerializableTypes,Desktop,#N/A,Call base class methods on ISerializable types,"To fix a violation of this rule, call the base type GetObjectData method or serialization constructor from the corresponding derived type method or constructor.",Yes,23555,57,0.002419868,1806.744169,Usage,,Low,Yes,,,IOperation
  -RS0019,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,SymbolDeclaredEvent must be generated for source symbols,"Compilation event queue is required to generate symbol declared events for all declared source symbols. Hence, every source symbol type or one of it's base types must generate a symbol declared event.",,,,,,Reliability,,,Implemented,,,
  +RS0019,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,SymbolDeclaredEvent must be generated for source symbols,"Compilation event queue is required to generate symbol declared events for all declared source symbols. Hence, every source symbol type or one of it's base types must generate a symbol declared event.",,,,,,Reliability,,,Ported,,,
   CA2238,ImplementSerializationMethodsCorrectly,Desktop,#N/A,Implement serialization methods correctly,"A method that handles a serialization event does not have the correct signature, return type, or visibility.",Yes,38890,1402,0.036050399,127.3172594,Usage,,Low,Yes,,,None
   CA2239,ProvideDeserializationMethodsForOptionalFields,Desktop,#N/A,Provide deserialization methods for optional fields,"A type has a field that is marked by using the System.Runtime.Serialization.OptionalFieldAttribute attribute, and the type does not provide deserialization event handling methods.",Yes,13047,393,0.030121867,136.6286708,Usage,,Low,Yes,,,None
   CA2240,ImplementISerializableCorrectly,Desktop,#N/A,Implement ISerializable correctly,"To fix a violation of this rule, make the GetObjectData method visible and overridable, and make sure that all instance fields are included in the serialization process or explicitly marked by using the NonSerializedAttribute attribute.",Yes,254727,2301,0.0090332,598.4673019,Usage,,Low,Yes,,,None
  
positive.code: CA1705,LongAcronymnsShouldBePascalBased,Microsoft.ApiDesignGuidelines,#N/A,Long acronyms should be pascal-cased,"This rule assumes it has found an acronym when the name contains four uppercase letters in a row, or at the end of the name, three uppercase letters in a row. By convention, two-letter acronyms use all uppercase letters, and acronyms of three or more characters use Pascal casing. The following examples conform to this naming convention: 'DB', 'CR', 'Cpa', and 'Ecma'. The following examples violate the convention: 'Io', 'XML', and 'DoD', and for non-parameter names, 'xp' and 'cpl'. Naming conventions provide a common look for libraries that target the common language runtime. This reduces the learning curve required for new software libraries, and increases customer confidence that the library was developed by someone with expertise in developing managed code.",,2574,90,0.034965035,97.54340432,Naming,,Low,Cut,,Deprecated rule (replaced by 1709),
  CA1706,ShortAcronymsShouldBeUpperCase,Microsoft.ApiDesignGuidelines,#N/A,Short acronyms should be uppercase,"This rule splits the name into words based on the casing and checks any two-letter words against a list of common two-letter words, such as ""In"" or ""My"". If a match is not found, the word is assumed to be an acronym. For parameters, the first word is ignored due to the camel casing convention used for parameter names. By convention, two-letter acronyms use all uppercase letters, and acronyms of three or more characters use Pascal casing. The following examples conform to this naming convention: 'DB', 'CR', 'Cpa', and 'Ecma'. The following examples violate the convention: 'Io', 'XML', and 'DoD', and for non-parameter names, 'xp' and 'cpl'. 'ID' is special-cased to cause a violation of this rule. 'Id' is not an acronym but is an abbreviation for 'identification'. Naming conventions provide a common look for libraries that target the common language runtime. This reduces the learning curve required for new software libraries, and increases customer confidence that the library was developed by someone with expertise in developing managed code.",,470,2,0.004255319,627.9429966,Naming,,Low,Cut,,Deprecated rule (replaced by 1709),
  CA1707,IdentifiersShouldNotContainUnderscores,Microsoft.ApiDesignGuidelines,#N/A,Identifiers should not contain underscores,"By convention, identifier names do not contain the underscore (_) character. This rule checks namespaces, types, members, and parameters.",Yes,1216136,42995,0.035353776,172.1168937,Naming,,Low,,,,None
  CA1060,MovePInvokesToNativeMethodsClass,Microsoft.ApiDesignGuidelines,System.Runtime.InteropServices.Analyzers,Move pinvokes to native methods class,"Platform Invocation methods, such as those that are marked by using the System.Runtime.InteropServices.DllImportAttribute attribute, or methods that are defined by using the Declare keyword in Visual Basic, access unmanaged code. These methods should be of the NativeMethods, SafeNativeMethods, or UnsafeNativeMethods class.",Yes,377447,2739,0.007256648,768.5168157,Design,,High,Implemented,,,
  CA1709,IdentifiersShouldBeCasedCorrectly,Microsoft.ApiDesignGuidelines,#N/A,Identifiers should be cased correctly,"By convention, parameter names use camel casing and namespace, type, and member names use Pascal casing.",Yes,3261791,137633,0.04219553,154.3636525,Naming,,Low,,,,NamingService
  CA1710,IdentifiersShouldHaveCorrectSuffix,Microsoft.ApiDesignGuidelines,#N/A,Identifiers should have correct suffix,"By convention, the names of types that extend certain base types or that implement certain interfaces, or types that are derived from these types, have a suffix that is associated with the base type or interface.",Yes,597568,3205,0.005363406,1076.999758,Naming,,High,,,,None
  CA1711,IdentifiersShouldNotHaveIncorrectSuffix,Microsoft.ApiDesignGuidelines,#N/A,Identifiers should not have incorrect suffix,"By convention, only the names of types that extend certain base types or that implement certain interfaces, or types that are derived from these types, should end with specific reserved suffixes. Other type names should not use these reserved suffixes.",Yes,684645,2065,0.003016162,1934.732318,Naming,,High,,,,None
  CA1712,DoNotPrefixEnumValuesWithTypeName,Microsoft.ApiDesignGuidelines,#N/A,Do not prefix enum values with type name,Names of enumeration members are not prefixed by using the type name because development tools are expected to provide type information.,Yes,15010,57,0.003797468,1099.780249,Naming,,Low,,,,
  CA1713,EventsShouldNotHaveBeforeOrAfterPrefix,Microsoft.ApiDesignGuidelines,#N/A,Events should not have before or after prefix,"The name of an event starts with """"Before"""" or """"After"""". To name related events that are raised in a specific sequence, use the present or past tense to indicate the relative position in the sequence of actions.",Yes,42823,58,0.001354412,3419.694965,Naming,,Low,,,,
  CA1714,FlagsEnumsShouldHavePluralNames,Microsoft.ApiDesignGuidelines,#N/A,Flags enums should have plural names,"A public enumeration has the System.FlagsAttribute attribute, and its name does not end in """"s"""". Types that are marked by using FlagsAttribute have names that are plural because the attribute indicates that more than one value can be specified.",Yes,149797,409,0.002730362,1895.537507,Naming,,High,,,,None
  CA1708,IdentifiersShouldDifferByMoreThanCase,Microsoft.ApiDesignGuidelines,Microsoft.AnalyzerPowerPack,Identifiers should differ by more than case,"Identifiers for namespaces, types, members, and parameters cannot differ only by case because languages that target the common language runtime are not required to be case-sensitive.",Yes,240275,455,0.001893664,2841.428034,Naming,,High,Implemented,,,
  CA1716,IdentifiersShouldNotMatchKeywords,Microsoft.ApiDesignGuidelines,#N/A,Identifiers should not match keywords,A namespace name or a type name matches a reserved keyword in a programming language. Identifiers for namespaces and types should not match keywords that are defined by languages that target the common language runtime.,Yes,563948,2635,0.004672417,1230.891752,Naming,,High,,,,Valid rule?
  CA1717,OnlyFlagsEnumsShouldHavePluralNames,Microsoft.ApiDesignGuidelines,#N/A,Only FlagsAttribute enums should have plural names,Naming conventions dictate that a plural name for an enumeration indicates that more than one value of the enumeration can be specified at the same time.,Yes,389307,875,0.002247584,2487.245589,Naming,,High,,,,None
  CA1718,#N/A,Microsoft.ApiDesignGuidelines,#N/A,Avoid language specific type names in parameters,"Each concatenated word in the parameter name is checked against language-specific type names, in a case-insensitive manner",,4,0,0,,Naming,,Low,???,,,
  CA1719,ParameterNamesShouldNotMatchMemberNames,Microsoft.ApiDesignGuidelines,#N/A,Parameter names should not match member names,A parameter name should communicate the meaning of a parameter and a member name should communicate the meaning of a member. It would be a rare design where these were the same. Naming a parameter the same as its member name is unintuitive and makes the library difficult to use.,Yes,96386,394,0.004087731,1219.261851,Naming,,Low,,,,None
  CA1715,IdentifiersShouldHaveCorrectPrefix,Microsoft.ApiDesignGuidelines,Microsoft.AnalyzerPowerPack,Identifiers should have correct prefix,"The name of an externally visible interface does not start with an uppercase """"I"""". The name of a generic type parameter on an externally visible type or method does not start with an uppercase """"T"""".",Yes,163866,1290,0.007872286,662.3856049,Naming,,High,Implemented,,,
  CA1721,PropertyNamesShouldNotMatchGetMethods,Microsoft.ApiDesignGuidelines,#N/A,Property names should not match get methods,"The name of a public or protected member starts with """"Get"""" and otherwise matches the name of a public or protected property. """"Get"""" methods and properties should have names that clearly distinguish their function.",Yes,622332,1854,0.002979117,1944.878847,Naming,,High,,,,None
  CA1722,IdentifiersShouldNotHaveIncorrectPrefix,Microsoft.ApiDesignGuidelines,#N/A,Identifiers should not have incorrect prefix,"By convention, only certain programming elements have names that begin with a specific prefix.",Yes,28805,234,0.00812359,548.952873,Naming,,Low,,,,
  CA1724,TypeNamesShouldNotMatchNamespaces,Microsoft.ApiDesignGuidelines,#N/A,Type names should not match namespaces,Type names should not match the names of namespaces that are defined in the .NET Framework class library. Violating this rule can reduce the usability of the library.,Yes,633745,1999,0.003154266,1839.38686,Naming,,High,,,,Hardcoded table
  
negative.code: CA2149,TransparentMethodsMustNotCallNativeCode,System.Runtime,#N/A,Transparent methods must not call into native code,"This rule is raised on any transparent method that calls directly into native code (for example, through a P/Invoke). Violations of this rule lead to a MethodAccessException in the level 2 transparency model and a full demand for UnmanagedCode in the level 1 transparency model.",No,4351,61,0.014019766,259.5328049,Security,,Low,,,,
  CA2150,TransparentCodeMustNotUseCriticalAttributes,System.Runtime,#N/A,#N/A,#N/A,No,,,,,,,Low,,,,
  CA2151,FieldsWithCriticalTypesShouldBeCriticalFxCopRule,System.Runtime,#N/A,#N/A,#N/A,No,,,,,,,Low,,,,
  RS0006,#N/A,Microsoft.Composition,Roslyn.Diagnostics.Analyzers,Do not mix attributes from different versions of MEF,#N/A,,,,,,Reliability,,,Ported,,,
  RS0023,#N/A,Microsoft.Composition,Roslyn.Diagnostics.Analyzers,Parts exported with MEFv2 must be marked as Shared,#N/A,,,,,,Reliability,,,Ported,,,
  RS0001,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,Use SpecializedCollections.EmptyEnumerable(),#N/A,,,,,,Performance,,,Ported,,,
  CA2202,DoNotDisposeObjectsMultipleTimes,System.Runtime,#N/A,Do not dispose objects multiple times,A method implementation contains code paths that could cause multiple calls to System.IDisposable.Dispose or a Dispose equivalent (such as a Close() method on some types) on the same object.,Yes,1034185,2477,0.002395123,2511.18582,Usage,,High,,,,Dataflow
  CA2204,LiteralsShouldBeSpelledCorrectly,Text,#N/A,Literals should be spelled correctly,A literal string in a method body contains one or more words that are not recognized by the Microsoft spelling checker library.,Yes,1364858,19401,0.014214666,431.6026604,Naming,,Low,,,,Dataflow
  CA2205,UseManagedEquivalentsOfWin32Api,System.Runtime.InteropServices,#N/A,Use managed equivalents of win32 api,An operating system invoke method is defined and a method that has the equivalent functionality is located in the .NET Framework class library.,Yes,28980,117,0.004037267,1105.227445,Usage,,Low,Yes,,,None
  RS0002,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,Use SpecializedCollections.SingletonEnumerable(),#N/A,,,,,,Performance,,,Ported,,,
  CA2208,InstantiateArgumentExceptionsCorrectly,System.Runtime,#N/A,Instantiate argument exceptions correctly,"A call is made to the default (parameterless) constructor of an exception type that is or derives from ArgumentException, or an incorrect string argument is passed to a parameterized constructor of an exception type that is or derives from ArgumentException.",Yes,774590,2637,0.003404382,1729.850661,Usage,,High,,,,IOperation
  CA2209,AssembliesShouldDeclareMinimumSecurity,Desktop,#N/A,Assemblies should declare minimum security,"Assemblies specify security permission requests to communicate to administrators the minimum permissions that are required to execute the assembly, and to limit security vulnerabilities caused by mistakenly omitting demands at the type and member level. ",,7023,203,0.028905026,133.0745256,Security,,Low,Cut,,Deprecated rule,
  CA2210,AssembliesShouldHaveValidStrongNames,Microsoft.ApiDesignGuidelines,#N/A,Assemblies should have valid strong names,"The strong name protects clients from unknowingly loading an assembly that has been tampered with. Assemblies without strong names should not be deployed outside very limited scenarios. If you share or distribute assemblies that are not correctly signed, the assembly can be tampered with, the common language runtime might not load the assembly, or the user might have to disable verification on his or her computer.",Yes,2955771,8737,0.002955912,2189.060439,Design,,High,,,,None
  CA2211,NonConstantFieldsShouldNotBeVisible,Microsoft.ApiDesignGuidelines,#N/A,Non-constant fields should not be visible,Static fields that are neither constants nor read-only are not thread-safe. Access to such a field must be carefully controlled and requires advanced programming techniques to synchronize access to the class object.,Yes,752431,8608,0.011440252,513.6658574,Usage,,High,Yes,,,None
  CA2212,DoNotMarkServicedComponentsWithWebMethod,Desktop,#N/A,Do not mark serviced components with WebMethod,"A method in a type that inherits from System.EnterpriseServices.ServicedComponent is marked by using System.Web.Services.WebMethodAttribute. Because WebMethodAttribute and a ServicedComponent method have conflicting behavior and requirements for context and transaction flow, the behavior of the method will be incorrect in some scenarios.",Yes,26,0,0,,Usage,,Low,Yes,,,None
  RS0004,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,Invoke the correct property to ensure correct use site diagnostics.,#N/A,,,,,,Usage,,,Ported,,,
  RS0005,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,Do not use generic CodeAction.Create to create CodeAction,#N/A,,,,,,Performance,,,Ported,,,
  CA2215,DisposeMethodsShouldCallBaseClassDispose,System.Runtime,#N/A,Dispose Methods Should Call Base Class Dispose,"If a type inherits from a disposable type, it must call the Dispose method of the base type from its own Dispose method.",Yes,37586,119,0.003166072,1445.01623,Usage,,Low,Yes,,,Dataflow
  CA2216,DisposableTypesShouldDeclareFinalizer,System.Runtime,#N/A,Disposable types should declare finalizer,"A type that implements System.IDisposable and has fields that suggest the use of unmanaged resources does not implement a finalizer, as described by Object.Finalize.",Yes,8011,13,0.001622769,2405.571878,Usage,,High,Yes,,,InternalUtilities
  RS0009,#N/A,Roslyn.Diagnostics,Roslyn.Diagnostics.Analyzers,Override Object.Equals(object) when implementing Iequatable,#N/A,,,,,,Reliability,,,Ported,,,
  CA2218,OverrideGetHashCodeOnOverridingEquals,Microsoft.ApiDesignGuidelines,#N/A,Override GetHashCode on overriding Equals,"GetHashCode returns a value, based on the current instance, that is suited for hashing algorithms and data structures such as a hash table. Two objects that are the same type and are equal must return the same hash code.",Yes,34660,25,0.000721293,6294.018313,Usage,,High,Merge?,,,None
  CA2219,DoNotRaiseExceptionsInExceptionClauses,System.Runtime,#N/A,Do not raise exceptions in exception clauses,"When an exception is raised in a finally or fault clause, the new exception hides the active exception. When an exception is raised in a filter clause, the run time silently catches the exception. This makes the original error difficult to detect and debug.",Yes,14661,36,0.002455494,1696.670124,Usage,,High,Yes,,,None
  CA2220,FinalizersShouldCallBaseClassFinalizer,System.Runtime,#N/A,Finalizers should call base class finalizer,"Finalization must be propagated through the inheritance hierarchy. To guarantee this, types must call their base class Finalize method in their own Finalize method.",Yes,47,0,0,,Usage,,Low,Yes,,,None
  