Closed HakamFostok closed 5 months ago
Thank you! I plan to add a built-in schema for all the well-known CA
, NU
and IDE
warning prefixes. I haven't got around to it yet because it's a little bit exhausting collecting all the codes :)
However, it is also possible to add your own warning codes using the schema mechanism. The NoWarn
property takes its values from all types with a base type of warning-code
:
Here is an example of how the C# compiler warnings are defined: https://github.com/mhutch/MonoDevelop.MSBuildEditor/blob/main/MonoDevelop.MSBuild/Schemas/CSharpWarningCodes.buildschema.json
So, for example, you could have a schema that looked something like this:
{
"types": {
"my-analyzer-warnings": {
"baseType": "warning-code",
"values": {
"XX0123": "My warning code"
}
}
}
}
Thank you for mentioning the source code, it was really helpful.
I am really excited about this extension and I really feel this should be first-class citizen in VS directly, maybe because I struggled a lot with editing the csproj
file.
I can offer my help, I think I can create a tool that parses the error codes that is mentioned here and create the JSON from them, then I will just paste the generated JSON.
Are you interested in a PR that includes the CA
warnings?
Thank you very much, you are making VS much more better
I could not resist and I created a small C# application that parses the warnings from the docs If you would like you can paste them directly on the place you mentioned, or I can create PR with them. If you think this is a good direction, I can proceed and parse the warning with "IDE" prefix.
The total warnings added is 316
Again thank you
here is the result
{
"CA1000": {
"description": "Do not declare static members on generic types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1000"
}
},
{
"CA1001": {
"description": "Types that own disposable fields should be disposable",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1001"
}
},
{
"CA1002": {
"description": "Do not expose generic lists",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1002"
}
},
{
"CA1003": {
"description": "Use generic event handler instances",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1003"
}
},
{
"CA1005": {
"description": "Avoid excessive parameters on generic types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1005"
}
},
{
"CA1008": {
"description": "Enums should have zero value",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1008"
}
},
{
"CA1010": {
"description": "Collections should implement generic interface",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1010"
}
},
{
"CA1012": {
"description": "Abstract types should not have public constructors",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1012"
}
},
{
"CA1014": {
"description": "Mark assemblies with CLSCompliantAttribute",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1014"
}
},
{
"CA1016": {
"description": "Mark assemblies with AssemblyVersionAttribute",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1016"
}
},
{
"CA1017": {
"description": "Mark assemblies with ComVisibleAttribute",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1017"
}
},
{
"CA1018": {
"description": "Mark attributes with AttributeUsageAttribute",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1018"
}
},
{
"CA1019": {
"description": "Define accessors for attribute arguments",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1019"
}
},
{
"CA1021": {
"description": "Avoid out parameters",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1021"
}
},
{
"CA1024": {
"description": "Use properties where appropriate",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1024"
}
},
{
"CA1027": {
"description": "Mark enums with FlagsAttribute",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1027"
}
},
{
"CA1028": {
"description": "Enum storage should be Int32",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1028"
}
},
{
"CA1030": {
"description": "Use events where appropriate",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1030"
}
},
{
"CA1031": {
"description": "Do not catch general exception types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1031"
}
},
{
"CA1032": {
"description": "Implement standard exception constructors",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1032"
}
},
{
"CA1033": {
"description": "Interface methods should be callable by child types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1033"
}
},
{
"CA1034": {
"description": "Nested types should not be visible",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1034"
}
},
{
"CA1036": {
"description": "Override methods on comparable types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1036"
}
},
{
"CA1040": {
"description": "Avoid empty interfaces",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1040"
}
},
{
"CA1041": {
"description": "Provide ObsoleteAttribute message",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1041"
}
},
{
"CA1043": {
"description": "Use integral or string argument for indexers",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1043"
}
},
{
"CA1044": {
"description": "Properties should not be write only",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1044"
}
},
{
"CA1045": {
"description": "Do not pass types by reference",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1045"
}
},
{
"CA1046": {
"description": "Do not overload operator equals on reference types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1046"
}
},
{
"CA1047": {
"description": "Do not declare protected members in sealed types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1047"
}
},
{
"CA1050": {
"description": "Declare types in namespaces",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1050"
}
},
{
"CA1051": {
"description": "Do not declare visible instance fields",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1051"
}
},
{
"CA1052": {
"description": "Static holder types should be sealed",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1052"
}
},
{
"CA1053": {
"description": "Static holder types should not have constructors",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1053"
}
},
{
"CA1054": {
"description": "URI parameters should not be strings",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1054"
}
},
{
"CA1055": {
"description": "URI return values should not be strings",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1055"
}
},
{
"CA1056": {
"description": "URI properties should not be strings",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1056"
}
},
{
"CA1058": {
"description": "Types should not extend certain base types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1058"
}
},
{
"CA1060": {
"description": "Move P/Invokes to NativeMethods class",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1060"
}
},
{
"CA1061": {
"description": "Do not hide base class methods",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1061"
}
},
{
"CA1062": {
"description": "Validate arguments of public methods",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1062"
}
},
{
"CA1063": {
"description": "Implement IDisposable correctly",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1063"
}
},
{
"CA1064": {
"description": "Exceptions should be public",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1064"
}
},
{
"CA1065": {
"description": "Do not raise exceptions in unexpected locations",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1065"
}
},
{
"CA1066": {
"description": "Implement IEquatable when overriding Equals",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1066"
}
},
{
"CA1067": {
"description": "Override Equals when implementing IEquatable",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1067"
}
},
{
"CA1068": {
"description": "CancellationToken parameters must come last",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1068"
}
},
{
"CA1069": {
"description": "Enums should not have duplicate values",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1069"
}
},
{
"CA1070": {
"description": "Do not declare event fields as virtual",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1070"
}
},
{
"CA1200": {
"description": "Avoid using cref tags with a prefix",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1200"
}
},
{
"CA1303": {
"description": "Do not pass literals as localized parameters",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1303"
}
},
{
"CA1304": {
"description": "Specify CultureInfo",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1304"
}
},
{
"CA1305": {
"description": "Specify IFormatProvider",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1305"
}
},
{
"CA1307": {
"description": "Specify StringComparison for clarity",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1307"
}
},
{
"CA1308": {
"description": "Normalize strings to uppercase",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1308"
}
},
{
"CA1309": {
"description": "Use ordinal StringComparison",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1309"
}
},
{
"CA1310": {
"description": "Specify StringComparison for correctness",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1310"
}
},
{
"CA1311": {
"description": "Specify a culture or use an invariant version",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1311"
}
},
{
"CA1401": {
"description": "P/Invokes should not be visible",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1401"
}
},
{
"CA1416": {
"description": "Validate platform compatibility",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1416"
}
},
{
"CA1417": {
"description": "Do not use `OutAttribute` on string parameters for P/Invokes",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1417"
}
},
{
"CA1418": {
"description": "Use valid platform string",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1418"
}
},
{
"CA1419": {
"description": "Provide a parameterless constructor that is as visible as the containing type for concrete types derived from 'System.Runtime.InteropServices.SafeHandle'",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1419"
}
},
{
"CA1420": {
"description": "Property, type, or attribute requires runtime marshalling",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1420"
}
},
{
"CA1421": {
"description": "Method uses runtime marshalling when DisableRuntimeMarshallingAttribute is applied",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1421"
}
},
{
"CA1422": {
"description": "Validate platform compatibility",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1422"
}
},
{
"CA1501": {
"description": "Avoid excessive inheritance",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1501"
}
},
{
"CA1502": {
"description": "Avoid excessive complexity",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1502"
}
},
{
"CA1505": {
"description": "Avoid unmaintainable code",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1505"
}
},
{
"CA1506": {
"description": "Avoid excessive class coupling",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1506"
}
},
{
"CA1507": {
"description": "Use nameof in place of string",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1507"
}
},
{
"CA1508": {
"description": "Avoid dead conditional code",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1508"
}
},
{
"CA1509": {
"description": "Invalid entry in code metrics configuration file",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1509"
}
},
{
"CA1510": {
"description": "Use ArgumentNullException throw helper",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1510"
}
},
{
"CA1511": {
"description": "Use ArgumentException throw helper",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1511"
}
},
{
"CA1512": {
"description": "Use ArgumentOutOfRangeException throw helper",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1512"
}
},
{
"CA1513": {
"description": "Use ObjectDisposedException throw helper",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1513"
}
},
{
"CA1514": {
"description": "Avoid redundant length argument",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1514"
}
},
{
"CA1515": {
"description": "Consider making public types internal",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1515"
}
},
{
"CA1700": {
"description": "Do not name enum values 'Reserved'",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1700"
}
},
{
"CA1707": {
"description": "Identifiers should not contain underscores",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1707"
}
},
{
"CA1708": {
"description": "Identifiers should differ by more than case",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1708"
}
},
{
"CA1710": {
"description": "Identifiers should have correct suffix",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1710"
}
},
{
"CA1711": {
"description": "Identifiers should not have incorrect suffix",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1711"
}
},
{
"CA1712": {
"description": "Do not prefix enum values with type name",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1712"
}
},
{
"CA1713": {
"description": "Events should not have before or after prefix",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1713"
}
},
{
"CA1714": {
"description": "Flags enums should have plural names",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1714"
}
},
{
"CA1715": {
"description": "Identifiers should have correct prefix",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1715"
}
},
{
"CA1716": {
"description": "Identifiers should not match keywords",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1716"
}
},
{
"CA1717": {
"description": "Only FlagsAttribute enums should have plural names",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1717"
}
},
{
"CA1720": {
"description": "Identifiers should not contain type names",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1720"
}
},
{
"CA1721": {
"description": "Property names should not match get methods",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1721"
}
},
{
"CA1724": {
"description": "Type Names Should Not Match Namespaces",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1724"
}
},
{
"CA1725": {
"description": "Parameter names should match base declaration",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1725"
}
},
{
"CA1727": {
"description": "Use PascalCase for named placeholders",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1727"
}
},
{
"CA1801": {
"description": "Review unused parameters",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1801"
}
},
{
"CA1802": {
"description": "Use Literals Where Appropriate",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1802"
}
},
{
"CA1805": {
"description": "Do not initialize unnecessarily",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1805"
}
},
{
"CA1806": {
"description": "Do not ignore method results",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1806"
}
},
{
"CA1810": {
"description": "Initialize reference type static fields inline",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1810"
}
},
{
"CA1812": {
"description": "Avoid uninstantiated internal classes",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1812"
}
},
{
"CA1813": {
"description": "Avoid unsealed attributes",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1813"
}
},
{
"CA1814": {
"description": "Prefer jagged arrays over multidimensional",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1814"
}
},
{
"CA1815": {
"description": "Override equals and operator equals on value types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1815"
}
},
{
"CA1816": {
"description": "Call GC.SuppressFinalize correctly",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1816"
}
},
{
"CA1819": {
"description": "Properties should not return arrays",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1819"
}
},
{
"CA1820": {
"description": "Test for empty strings using string length",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1820"
}
},
{
"CA1821": {
"description": "Remove empty finalizers",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1821"
}
},
{
"CA1822": {
"description": "Mark members as static",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1822"
}
},
{
"CA1823": {
"description": "Avoid unused private fields",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1823"
}
},
{
"CA1824": {
"description": "Mark assemblies with NeutralResourcesLanguageAttribute",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1824"
}
},
{
"CA1825": {
"description": "Avoid zero-length array allocations",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1825"
}
},
{
"CA1826": {
"description": "Use property instead of Linq Enumerable method",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1826"
}
},
{
"CA1827": {
"description": "Do not use Count/LongCount when Any can be used",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1827"
}
},
{
"CA1828": {
"description": "Do not use CountAsync/LongCountAsync when AnyAsync can be used",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1828"
}
},
{
"CA1829": {
"description": "Use Length/Count property instead of Enumerable.Count method",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1829"
}
},
{
"CA1830": {
"description": "Prefer strongly-typed Append and Insert method overloads on StringBuilder",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1830"
}
},
{
"CA1831": {
"description": "Use AsSpan instead of Range-based indexers for string when appropriate",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1831"
}
},
{
"CA1832": {
"description": "Use AsSpan or AsMemory instead of Range-based indexers for getting ReadOnlySpan or ReadOnlyMemory portion of an array",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1832"
}
},
{
"CA1833": {
"description": "Use AsSpan or AsMemory instead of Range-based indexers for getting Span or Memory portion of an array",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1833"
}
},
{
"CA1834": {
"description": "Use StringBuilder.Append(char) for single character strings",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1834"
}
},
{
"CA1835": {
"description": "Prefer the 'Memory'-based overloads for 'ReadAsync' and 'WriteAsync'",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1835"
}
},
{
"CA1836": {
"description": "Prefer `IsEmpty` over `Count` when available",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1836"
}
},
{
"CA1837": {
"description": "Use `Environment.ProcessId` instead of `Process.GetCurrentProcess().Id`",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1837"
}
},
{
"CA1838": {
"description": "Avoid `StringBuilder` parameters for P/Invokes",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1838"
}
},
{
"CA1839": {
"description": "Use Environment.ProcessPath instead of Process.GetCurrentProcess().MainModule.FileName",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1839"
}
},
{
"CA1840": {
"description": "Use Environment.CurrentManagedThreadId instead of Thread.CurrentThread.ManagedThreadId",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1840"
}
},
{
"CA1841": {
"description": "Prefer Dictionary Contains methods",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1841"
}
},
{
"CA1842": {
"description": "Do not use 'WhenAll' with a single task",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1842"
}
},
{
"CA1843": {
"description": "Do not use 'WaitAll' with a single task",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1843"
}
},
{
"CA1844": {
"description": "Provide memory-based overrides of async methods when subclassing 'Stream'",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1844"
}
},
{
"CA1845": {
"description": "Use span-based 'string.Concat'",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1845"
}
},
{
"CA1846": {
"description": "Prefer `AsSpan` over `Substring`",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1846"
}
},
{
"CA1847": {
"description": "Use char literal for a single character lookup",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1847"
}
},
{
"CA1848": {
"description": "Use the LoggerMessage delegates",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1848"
}
},
{
"CA1849": {
"description": "Call async methods when in an async method",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1849"
}
},
{
"CA1850": {
"description": "Prefer static `HashData` method over `ComputeHash`",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1850"
}
},
{
"CA1851": {
"description": "Possible multiple enumerations of `IEnumerable` collection",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1851"
}
},
{
"CA1852": {
"description": "Seal internal types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1852"
}
},
{
"CA1853": {
"description": "Unnecessary call to 'Dictionary.ContainsKey(key)'",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1853"
}
},
{
"CA1854": {
"description": "Prefer the 'IDictionary.TryGetValue(TKey, out TValue)' method",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1854"
}
},
{
"CA1855": {
"description": "Use Span\<T>.Clear() instead of Span\<T>.Fill()",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1855"
}
},
{
"CA1856": {
"description": "Incorrect usage of ConstantExpected attribute",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1856"
}
},
{
"CA1857": {
"description": "The parameter expects a constant for optimal performance",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1857"
}
},
{
"CA1858": {
"description": "Use StartsWith instead of IndexOf",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1858"
}
},
{
"CA1859": {
"description": "Use concrete types when possible for improved performance",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1859"
}
},
{
"CA1860": {
"description": "Avoid using 'Enumerable.Any()' extension method",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1860"
}
},
{
"CA1861": {
"description": "Avoid constant arrays as arguments",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1861"
}
},
{
"CA1862": {
"description": "Use the 'StringComparison' method overloads to perform case-insensitive string comparisons",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1862"
}
},
{
"CA1863": {
"description": "Use 'CompositeFormat'",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1863"
}
},
{
"CA1864": {
"description": "Prefer the 'IDictionary.TryAdd(TKey, TValue)' method",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1864"
}
},
{
"CA1865-CA1867": {
"description": "Use char overload",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1865-ca1867"
}
},
{
"CA1868": {
"description": "Unnecessary call to 'Contains' for sets",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1868"
}
},
{
"CA1869": {
"description": "Cache and reuse 'JsonSerializerOptions' instances",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1869"
}
},
{
"CA1870": {
"description": "Use a cached 'SearchValues' instance",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1870"
}
},
{
"CA1872": {
"description": "Prefer 'Convert.ToHexString' and 'Convert.ToHexStringLower' over call chains based on 'BitConverter.ToString'",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1872"
}
},
{
"CA2000": {
"description": "Dispose objects before losing scope",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2000"
}
},
{
"CA2002": {
"description": "Do not lock on objects with weak identity",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2002"
}
},
{
"CA2007": {
"description": "Do not directly await a Task",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2007"
}
},
{
"CA2008": {
"description": "Do not create tasks without passing a TaskScheduler",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2008"
}
},
{
"CA2009": {
"description": "Do not call ToImmutableCollection on an ImmutableCollection value",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2009"
}
},
{
"CA2011": {
"description": "Do not assign property within its setter",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2011"
}
},
{
"CA2012": {
"description": "Use ValueTasks correctly",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2012"
}
},
{
"CA2013": {
"description": "Do not use ReferenceEquals with value types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2013"
}
},
{
"CA2014": {
"description": "Do not use stackalloc in loops.",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2014"
}
},
{
"CA2015": {
"description": "Do not define finalizers for types derived from MemoryManager<T>",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2015"
}
},
{
"CA2016": {
"description": "Forward the CancellationToken parameter to methods that take one",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2016"
}
},
{
"CA2017": {
"description": "Parameter count mismatch",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2017"
}
},
{
"CA2018": {
"description": "The `count` argument to `Buffer.BlockCopy` should specify the number of bytes to copy",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2018"
}
},
{
"CA2019": {
"description": "`ThreadStatic` fields should not use inline initialization",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2019"
}
},
{
"CA2020": {
"description": "Prevent behavioral change caused by built-in operators of IntPtr/UIntPtr",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2020"
}
},
{
"CA2021": {
"description": "Don't call Enumerable.Cast\<T> or Enumerable.OfType\<T> with incompatible types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2021"
}
},
{
"CA2100": {
"description": "Review SQL queries for security vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2100"
}
},
{
"CA2101": {
"description": "Specify marshalling for P/Invoke string arguments",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2101"
}
},
{
"CA2109": {
"description": "Review visible event handlers",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2109"
}
},
{
"CA2119": {
"description": "Seal methods that satisfy private interfaces",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2119"
}
},
{
"CA2153": {
"description": "Avoid handling Corrupted State Exceptions",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2153"
}
},
{
"CA2200": {
"description": "Rethrow to preserve stack details",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2200"
}
},
{
"CA2201": {
"description": "Do not raise reserved exception types",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2201"
}
},
{
"CA2207": {
"description": "Initialize value type static fields inline",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2207"
}
},
{
"CA2208": {
"description": "Instantiate argument exceptions correctly",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2208"
}
},
{
"CA2211": {
"description": "Non-constant fields should not be visible",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2211"
}
},
{
"CA2213": {
"description": "Disposable fields should be disposed",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2213"
}
},
{
"CA2214": {
"description": "Do not call overridable methods in constructors",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2214"
}
},
{
"CA2215": {
"description": "Dispose methods should call base class dispose",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2215"
}
},
{
"CA2216": {
"description": "Disposable types should declare finalizer",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2216"
}
},
{
"CA2217": {
"description": "Do not mark enums with FlagsAttribute",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2217"
}
},
{
"CA2218": {
"description": "Override GetHashCode on overriding Equals",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2218"
}
},
{
"CA2219": {
"description": "Do not raise exceptions in exception clauses",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2219"
}
},
{
"CA2224": {
"description": "Override equals on overloading operator equals",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2224"
}
},
{
"CA2225": {
"description": "Operator overloads have named alternates",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2225"
}
},
{
"CA2226": {
"description": "Operators should have symmetrical overloads",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2226"
}
},
{
"CA2227": {
"description": "Collection properties should be read only",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2227"
}
},
{
"CA2229": {
"description": "Implement serialization constructors",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2229"
}
},
{
"CA2231": {
"description": "Overload operator equals on overriding ValueType.Equals",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2231"
}
},
{
"CA2234": {
"description": "Pass System.Uri objects instead of strings",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2234"
}
},
{
"CA2235": {
"description": "Mark all non-serializable fields",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2235"
}
},
{
"CA2237": {
"description": "Mark ISerializable types with SerializableAttribute",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2237"
}
},
{
"CA2241": {
"description": "Provide correct arguments to formatting methods",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2241"
}
},
{
"CA2242": {
"description": "Test for NaN correctly",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2242"
}
},
{
"CA2243": {
"description": "Attribute string literals should parse correctly",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2243"
}
},
{
"CA2244": {
"description": "Do not duplicate indexed element initializations",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2244"
}
},
{
"CA2245": {
"description": "Do not assign a property to itself",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2245"
}
},
{
"CA2246": {
"description": "Do not assign a symbol and its member in the same statement",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2246"
}
},
{
"CA2247": {
"description": "Argument passed to TaskCompletionSource constructor should be TaskCreationOptions enum instead of TaskContinuationOptions enum.",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2247"
}
},
{
"CA2248": {
"description": "Provide correct enum argument to Enum.HasFlag",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2248"
}
},
{
"CA2249": {
"description": "Consider using String.Contains instead of String.IndexOf",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2249"
}
},
{
"CA2250": {
"description": "Use `ThrowIfCancellationRequested`",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2250"
}
},
{
"CA2251": {
"description": "Use `String.Equals` over `String.Compare`",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2251"
}
},
{
"CA2252": {
"description": "Opt in to preview features",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2252"
}
},
{
"CA2253": {
"description": "Named placeholders should not be numeric values",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2253"
}
},
{
"CA2254": {
"description": "Template should be a static expression",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2254"
}
},
{
"CA2255": {
"description": "The `ModuleInitializer` attribute should not be used in libraries",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2255"
}
},
{
"CA2256": {
"description": "All members declared in parent interfaces must have an implementation in a DynamicInterfaceCastableImplementation-attributed interface",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2256"
}
},
{
"CA2257": {
"description": "Members defined on an interface with 'DynamicInterfaceCastableImplementationAttribute' should be 'static'",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2257"
}
},
{
"CA2258": {
"description": "Providing a 'DynamicInterfaceCastableImplementation' interface in Visual Basic is unsupported",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2258"
}
},
{
"CA2259": {
"description": "Ensure `ThreadStatic` is only used with static fields",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2259"
}
},
{
"CA2260": {
"description": "Implement generic math interfaces correctly",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2260"
}
},
{
"CA2261": {
"description": "Do not use `ConfigureAwaitOptions.SuppressThrowing` with `Task<TResult>`",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2261"
}
},
{
"CA2262": {
"description": "Set `MaxResponseHeadersLength` properly",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2262"
}
},
{
"CA2263": {
"description": "Prefer generic overload when type is known",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2263"
}
},
{
"CA2300": {
"description": "Do not use insecure deserializer BinaryFormatter",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2300"
}
},
{
"CA2301": {
"description": "Do not call BinaryFormatter.Deserialize without first setting BinaryFormatter.Binder",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2301"
}
},
{
"CA2302": {
"description": "Ensure BinaryFormatter.Binder is set before calling BinaryFormatter.Deserialize",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2302"
}
},
{
"CA2305": {
"description": "Do not use insecure deserializer LosFormatter",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2305"
}
},
{
"CA2310": {
"description": "Do not use insecure deserializer NetDataContractSerializer",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2310"
}
},
{
"CA2311": {
"description": "Do not deserialize without first setting NetDataContractSerializer.Binder",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2311"
}
},
{
"CA2312": {
"description": "Ensure NetDataContractSerializer.Binder is set before deserializing",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2312"
}
},
{
"CA2315": {
"description": "Do not use insecure deserializer ObjectStateFormatter",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2315"
}
},
{
"CA2321": {
"description": "Do not deserialize with JavaScriptSerializer using a SimpleTypeResolver",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2321"
}
},
{
"CA2322": {
"description": "Ensure JavaScriptSerializer is not initialized with SimpleTypeResolver before deserializing",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2322"
}
},
{
"CA2326": {
"description": "Do not use TypeNameHandling values other than None",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2326"
}
},
{
"CA2327": {
"description": "Do not use insecure JsonSerializerSettings",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2327"
}
},
{
"CA2328": {
"description": "Ensure that JsonSerializerSettings are secure",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2328"
}
},
{
"CA2329": {
"description": "Do not deserialize with JsonSerializer using an insecure configuration",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2329"
}
},
{
"CA2330": {
"description": "Ensure that JsonSerializer has a secure configuration when deserializing",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2330"
}
},
{
"CA2350": {
"description": "Ensure DataTable.ReadXml()'s input is trusted",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2350"
}
},
{
"CA2351": {
"description": "Ensure DataSet.ReadXml()'s input is trusted",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2351"
}
},
{
"CA2352": {
"description": "Unsafe DataSet or DataTable in serializable type can be vulnerable to remote code execution attacks",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2352"
}
},
{
"CA2353": {
"description": "Unsafe DataSet or DataTable in serializable type",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2353"
}
},
{
"CA2354": {
"description": "Unsafe DataSet or DataTable in deserialized object graph can be vulnerable to remote code execution attack",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2354"
}
},
{
"CA2355": {
"description": "Unsafe DataSet or DataTable in deserialized object graph",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2355"
}
},
{
"CA2356": {
"description": "Unsafe DataSet or DataTable in web deserialized object graph",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2356"
}
},
{
"CA2361": {
"description": "Ensure autogenerated class containing DataSet.ReadXml() is not used with untrusted data",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2361"
}
},
{
"CA2362": {
"description": "Unsafe DataSet or DataTable in autogenerated serializable type can be vulnerable to remote code execution attacks",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2362"
}
},
{
"CA3001": {
"description": "Review code for SQL injection vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3001"
}
},
{
"CA3002": {
"description": "Review code for XSS vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3002"
}
},
{
"CA3003": {
"description": "Review code for file path injection vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3003"
}
},
{
"CA3004": {
"description": "Review code for information disclosure vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3004"
}
},
{
"CA3005": {
"description": "Review code for LDAP injection vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3005"
}
},
{
"CA3006": {
"description": "Review code for process command injection vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3006"
}
},
{
"CA3007": {
"description": "Review code for open redirect vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3007"
}
},
{
"CA3008": {
"description": "Review code for XPath injection vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3008"
}
},
{
"CA3009": {
"description": "Review code for XML injection vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3009"
}
},
{
"CA3010": {
"description": "Review code for XAML injection vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3010"
}
},
{
"CA3011": {
"description": "Review code for DLL injection vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3011"
}
},
{
"CA3012": {
"description": "Review code for regex injection vulnerabilities",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3012"
}
},
{
"CA3061": {
"description": "Do not add schema by URL",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3061"
}
},
{
"CA3075": {
"description": "Insecure DTD Processing",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3075"
}
},
{
"CA3076": {
"description": "Insecure XSLT Script Execution",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3076"
}
},
{
"CA3077": {
"description": "Insecure Processing in API Design, XML Document and XML Text Reader",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3077"
}
},
{
"CA3147": {
"description": "Mark verb handlers with ValidateAntiForgeryToken",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca3147"
}
},
{
"CA5350": {
"description": "Do Not Use Weak Cryptographic Algorithms",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5350"
}
},
{
"CA5351": {
"description": "Do Not Use Broken Cryptographic Algorithms",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5351"
}
},
{
"CA5358": {
"description": "Do Not Use Unsafe Cipher Modes",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5358"
}
},
{
"CA5359": {
"description": "Do not disable certificate validation",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5359"
}
},
{
"CA5360": {
"description": "Do not call dangerous methods in deserialization",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5360"
}
},
{
"CA5361": {
"description": "Do not disable Schannel use of strong crypto",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5361"
}
},
{
"CA5362": {
"description": "Potential reference cycle in deserialized object graph",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5362"
}
},
{
"CA5363": {
"description": "Do not disable request validation",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5363"
}
},
{
"CA5364": {
"description": "Do not use deprecated security protocols",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5364"
}
},
{
"CA5365": {
"description": "Do Not Disable HTTP Header Checking",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5365"
}
},
{
"CA5366": {
"description": "Use XmlReader For DataSet Read XML",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5366"
}
},
{
"CA5367": {
"description": "Do Not Serialize Types With Pointer Fields",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5367"
}
},
{
"CA5368": {
"description": "Set ViewStateUserKey For Classes Derived From Page",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5368"
}
},
{
"CA5369": {
"description": "Use XmlReader for Deserialize",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5369"
}
},
{
"CA5370": {
"description": "Use XmlReader for validating reader",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5370"
}
},
{
"CA5371": {
"description": "Use XmlReader for schema read",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5371"
}
},
{
"CA5372": {
"description": "Use XmlReader for XPathDocument",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5372"
}
},
{
"CA5373": {
"description": "Do not use obsolete key derivation function",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5373"
}
},
{
"CA5374": {
"description": "Do Not Use XslTransform",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5374"
}
},
{
"CA5375": {
"description": "Do not use account shared access signature",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5375"
}
},
{
"CA5376": {
"description": "Use SharedAccessProtocol HttpsOnly",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5376"
}
},
{
"CA5377": {
"description": "Use container level access policy",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5377"
}
},
{
"CA5378": {
"description": "Do not disable ServicePointManagerSecurityProtocols",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5378"
}
},
{
"CA5379": {
"description": "Do not use weak key derivation function algorithm",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5379"
}
},
{
"CA5380": {
"description": "Do not add certificates to root store",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5380"
}
},
{
"CA5381": {
"description": "Ensure certificates are not added to root store",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5381"
}
},
{
"CA5382": {
"description": "Use secure cookies in ASP.NET Core",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5382"
}
},
{
"CA5383": {
"description": "Ensure use secure cookies in ASP.NET Core",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5383"
}
},
{
"CA5384": {
"description": "Do not use digital signature algorithm (DSA)",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5384"
}
},
{
"CA5385": {
"description": "Use Rivest–Shamir–Adleman (RSA) algorithm with sufficient key size",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5385"
}
},
{
"CA5386": {
"description": "Avoid hardcoding SecurityProtocolType value",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5386"
}
},
{
"CA5387": {
"description": "Do not use weak key derivation function with insufficient iteration count",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5387"
}
},
{
"CA5388": {
"description": "Ensure sufficient iteration count when using weak key derivation function",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5388"
}
},
{
"CA5389": {
"description": "Do not add archive item's path to the target file system path",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5389"
}
},
{
"CA5390": {
"description": "Do not hard-code encryption key",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5390"
}
},
{
"CA5391": {
"description": "Use antiforgery tokens in ASP.NET Core MVC controllers",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5391"
}
},
{
"CA5392": {
"description": "Use DefaultDllImportSearchPaths attribute for P/Invokes",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5392"
}
},
{
"CA5393": {
"description": "Do not use unsafe DllImportSearchPath value",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5393"
}
},
{
"CA5394": {
"description": "Do not use insecure randomness",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5394"
}
},
{
"CA5395": {
"description": "Miss HttpVerb attribute for action methods",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5395"
}
},
{
"CA5396": {
"description": "Set HttpOnly to true for HttpCookie",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5396"
}
},
{
"CA5397": {
"description": "Do not use deprecated SslProtocols values",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5397"
}
},
{
"CA5398": {
"description": "Avoid hardcoded SslProtocols values",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5398"
}
},
{
"CA5399": {
"description": "Definitely disable HttpClient certificate revocation list check",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5399"
}
},
{
"CA5400": {
"description": "Ensure HttpClient certificate revocation list check is not disabled",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5400"
}
},
{
"CA5401": {
"description": "Do not use CreateEncryptor with non-default IV",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5401"
}
},
{
"CA5402": {
"description": "Use CreateEncryptor with the default IV",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5402"
}
},
{
"CA5403": {
"description": "Do not hard-code certificate",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5403"
}
},
{
"CA5404": {
"description": "Do not disable token validation checks",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5404"
}
},
{
"CA5405": {
"description": "Do not always skip token validation in delegates",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca5405"
}
},
{
"IL3000": {
"description": "Avoid accessing Assembly file path when publishing as a single file",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/il3000"
}
},
{
"IL3001": {
"description": "Avoid accessing Assembly file path when publishing as a single-file",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/il3001"
}
},
{
"IL3002": {
"description": "Avoid calling members annotated with 'RequiresAssemblyFilesAttribute' when publishing as a single file",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/il3002"
}
},
{
"IL3003": {
"description": "'RequiresAssemblyFilesAttribute' annotations must match across all interface implementations or overrides.",
"helpUrl": "https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/il3003"
}
}
This approach is good. I used a similar approach to generate the C# warning codes schema, and indicated this in the comments, both to attribute the imported docs, and to provide pointers to folks updating the list of warning codes. The tool I used took the Roslyn source repo as the canonical source of data, and used the docs repo only to compute the help links, as I did not entirely trust docs to have absolutely everything, and I also needed to be able to omit the error codes.
However, I'm not sure any of those concerns apply here and using the list you generated as-is will be a big improvement.
If you could make a pull request that adds these in an additional AnalyzerWarningCodes.buildschema.json
schema file (with a header comment indicating where they came from) that would be awesome, thank you 😁
That schema file can be set to load when the C# targets are loaded (or maybe Roslyn is better for these?) as I did with the C# warning codes: https://github.com/mhutch/MonoDevelop.MSBuildEditor/commit/2640d57455c1e6a0ab40e55b433aaf63606062fd
Note that completion displays the warning descriptions inline so it can be useful to edit them so that they remain useful when ellipsized: https://github.com/mhutch/MonoDevelop.MSBuildEditor/pull/151. However, this is not essential and can be done later. If you do decide to make the edits, I would suggest commit the file first then making the edits in a separate commit, so it's clear what was changed from the original imported description.
Great to hear that, Thank you very much for giving me the opportunity to contribute. hopefully, this will be the outset for more contributions. I will open the PR tomorrow.
Thanks a lot.
This is the greatest extension that exists for .NET and VS. I wish it will be included in VS by default.
I have this line in my project
but the extension gives error