Roslyn analyzers for modern C# patterns, OpenTelemetry instrumentation, AOT safety, and ANcpLua ecosystem conventions.
dotnet add package ANcpLua.AnalyzersUsing ANcpLua.NET.Sdk? This package is auto-injected - no installation needed.
- 99 diagnostics spanning design, reliability, performance, OpenTelemetry, ASP.NET Core, AOT, and version management.
- 38 automatic code fixes for high-confidence transformations.
- CI-friendly enforcement through
.editorconfigseverity configuration.
| Category | Rules |
|---|---|
| Roslyn Utilities | 20 |
| OpenTelemetry | 19 |
| AOT Testing | 10 |
| ASP.NET Core | 8 |
| Usage | 8 |
| VersionManagement | 6 |
| Configuration | 5 |
| Design | 5 |
| Metrics | 5 |
| Threading | 5 |
| GenAI | 4 |
| Style | 3 |
| Reliability | 1 |
| Rule | Category | Severity | Analyzer |
|---|---|---|---|
| AL0001 | Design | Error | Al0001ProhibitPrimaryConstructorParameterReassignmentAnalyzer |
| AL0002 | Design | Warning | Al0002DontRepeatNegatedPatternAnalyzer |
| AL0003 | Reliability | Error | Al0003DontDivideByConstantZeroAnalyzer |
| AL0004 | Usage | Warning | Al0004ToAl0005SpanComparisonAnalyzer |
| AL0005 | Usage | Warning | Al0004ToAl0005SpanComparisonAnalyzer |
| AL0006 | Design | Warning | Al0006FieldNameConflictWithPrimaryConstructorAnalyzer |
| AL0007 | Usage | Error | Al0007ToAl0009IXmlSerializableAnalyzer |
| AL0008 | Usage | Error | Al0007ToAl0009IXmlSerializableAnalyzer |
| AL0009 | Usage | Error | Al0007ToAl0009IXmlSerializableAnalyzer |
| AL0010 | Design | Disabled | Al0010PartialTypeAnalyzer |
| AL0011 | Threading | Warning | Al0011LockKeywordAnalyzer |
| AL0012 | OpenTelemetry | Warning | Al0012DeprecatedAttributeAnalyzer |
| AL0013 | OpenTelemetry | Info | Al0013MissingSchemaUrlAnalyzer |
| AL0014 | Style | Warning | Al0014PreferPatternMatchingAnalyzer |
| AL0015 | Style | Info | Al0015NormalizeNullGuardStyleAnalyzer |
| AL0016 | Style | Info | Al0016CombineDeclarationWithNullCheckAnalyzer |
| AL0017 | VersionManagement | Warning | Al0017HardcodedPackageVersionAnalyzer |
| AL0018 | VersionManagement | Warning | Al0018VersionPropsNotImportedAnalyzer |
| AL0019 | VersionManagement | Warning | Al0019UndefinedVersionVariableAnalyzer |
| AL0020 | ASP.NET Core | Error | Al0020ToAl0024FormBindingAnalyzer |
| AL0021 | ASP.NET Core | Error | Al0020ToAl0024FormBindingAnalyzer |
| AL0022 | ASP.NET Core | Error | Al0020ToAl0024FormBindingAnalyzer |
| AL0023 | ASP.NET Core | Error | Al0020ToAl0024FormBindingAnalyzer |
| AL0024 | ASP.NET Core | Error | Al0020ToAl0024FormBindingAnalyzer |
| AL0025 | Usage | Warning | Al0025PreferStaticLambdaAnalyzer |
| AL0026 | Usage | Warning | Al0026AvoidDateTimeNowAnalyzer |
| AL0027 | Usage | Warning | Al0027AvoidNewtonsoftJsonAnalyzer |
| AL0028 | Roslyn Utilities | Info | Al0028UseIsEqualToAnalyzer |
| AL0029 | Roslyn Utilities | Info | Al0029UseHasAttributeAnalyzer |
| AL0030 | Roslyn Utilities | Info | Al0030UseTypeHierarchyAnalyzer |
| AL0031 | Roslyn Utilities | Info | Al0031UseOperationExtensionsAnalyzer |
| AL0032 | Roslyn Utilities | Info | Al0032UseOrEmptyAnalyzer |
| AL0033 | Roslyn Utilities | Info | Al0033UseToImmutableArrayOrEmptyAnalyzer |
| AL0034 | Roslyn Utilities | Info | Al0034UseWhereNotNullAnalyzer |
| AL0035 | Roslyn Utilities | Info | Al0035UseToDisplayStringExtensionsAnalyzer |
| AL0036 | Roslyn Utilities | Warning | Al0036UseGuardNotNullAnalyzer |
| AL0037 | Roslyn Utilities | Warning | Al0037UseTryParseExtensionsAnalyzer |
| AL0038 | Roslyn Utilities | Warning | Al0038UseGetOrNullAnalyzer |
| AL0039 | Roslyn Utilities | Warning | Al0039UseStringComparisonExtensionsAnalyzer |
| AL0040 | Roslyn Utilities | Warning | Al0040UseAttributeExtensionsAnalyzer |
| AL0041 | AOT Testing | Error | Al0041AotTestMustReturnIntAnalyzer |
| AL0042 | AOT Testing | Warning | Al0042AotTestExitCode100Analyzer |
| AL0043 | AOT Testing | Warning | Al0043TrimSafeViolationAnalyzer |
| AL0044 | AOT Testing | Warning | Al0044AotSafeViolationAnalyzer |
| AL0045 | Roslyn Utilities | Warning | Al0045UseGuardNotNullOrEmptyAnalyzer |
| AL0046 | Roslyn Utilities | Warning | Al0046UseGuardNotNullOrWhiteSpaceAnalyzer |
| AL0047 | Roslyn Utilities | Warning | Al0047UseGuardNotZeroAnalyzer |
| AL0048 | Roslyn Utilities | Warning | Al0048UseGuardNotNegativeAnalyzer |
| AL0049 | Roslyn Utilities | Warning | Al0049UseGuardPositiveAnalyzer |
| AL0050 | Roslyn Utilities | Warning | Al0050UseGuardNotEmptyGuidAnalyzer |
| AL0051 | Roslyn Utilities | Warning | Al0051UseGuardDefinedEnumAnalyzer |
| AL0052 | AOT Testing | Error | Al0052AotSafeCallsAotUnsafeAnalyzer |
| AL0053 | AOT Testing | Warning | Al0053UnnecessaryAotUnsafeAnalyzer |
| AL0054 | VersionManagement | Warning | Al0054ToAl0056DiagnosticsAlignmentAnalyzer |
| AL0055 | VersionManagement | Warning | Al0054ToAl0056DiagnosticsAlignmentAnalyzer |
| AL0056 | VersionManagement | Warning | Al0054ToAl0056DiagnosticsAlignmentAnalyzer |
| AL0057 | Threading | Warning | Al0057ToAl0060ThreadingAnalyzer |
| AL0058 | Threading | Warning | Al0057ToAl0060ThreadingAnalyzer |
| AL0059 | Threading | Warning | Al0057ToAl0060ThreadingAnalyzer |
| AL0060 | Threading | Warning | Al0057ToAl0060ThreadingAnalyzer |
| AL0061 | OpenTelemetry | Warning | Al0061ActivityMissingSemconvAnalyzer |
| AL0062 | OpenTelemetry | Warning | Al0062DeprecatedSemconvAnalyzer |
| AL0063 | OpenTelemetry | Warning | Al0063UnregisteredActivitySourceAnalyzer |
| AL0064 | GenAI | Warning | Al0064GenAiMissingRequiredAttributesAnalyzer |
| AL0065 | GenAI | Warning | Al0065UseTokenUsageHistogramAnalyzer |
| AL0066 | GenAI | Warning | Al0066InvalidGenAiOperationNameAnalyzer |
| AL0067 | Metrics | Warning | Al0067UnregisteredMeterAnalyzer |
| AL0068 | Metrics | Warning | Al0068InvalidMetricNameAnalyzer |
| AL0069 | Configuration | Warning | Al0069IncompleteServiceDefaultsAnalyzer |
| AL0070 | Configuration | Warning | Al0070NonOtlpCollectorEndpointAnalyzer |
| AL0071 | Metrics | Error | Al0071MeterClassMustBePartialStaticAnalyzer |
| AL0072 | Metrics | Error | Al0072MetricMethodMustBePartialAnalyzer |
| AL0073 | OpenTelemetry | Error | Al0073TracedActivitySourceNameAnalyzer |
| AL0074 | GenAI | Warning | Al0074DeprecatedGenAiAttributeAnalyzer |
| AL0075 | Metrics | Warning | Al0075HighCardinalityMetricTagAnalyzer |
| AL0076 | OpenTelemetry | Warning | Al0076MissingOTelConfigurationAnalyzer |
| AL0077 | OpenTelemetry | Warning | Al0077DuplicateInstrumentationAnalyzer |
| AL0078 | OpenTelemetry | Error | Al0078InvalidActivitySourceNameAnalyzer |
| AL0079 | OpenTelemetry | Info | Al0079ManualSpanRecommendedAnalyzer |
| AL0080 | ASP.NET Core | Warning | Al0080MissingResilienceConfigurationAnalyzer |
| AL0081 | ASP.NET Core | Warning | Al0081MissingHealthChecksAnalyzer |
| AL0082 | Configuration | Info | Al0082ConsiderConnectionStringAnalyzer |
| AL0083 | Configuration | Warning | Al0083InsecureEndpointAnalyzer |
| AL0084 | ASP.NET Core | Warning | Al0084MissingServiceDiscoveryAnalyzer |
| AL0085 | OpenTelemetry | Error | Al0085InvalidAttributeValueAnalyzer |
| AL0086 | OpenTelemetry | Warning | Al0086IncorrectAttributeTypeAnalyzer |
| AL0087 | OpenTelemetry | Info | Al0087PreferConstantAttributeAnalyzer |
| AL0088 | OpenTelemetry | Warning | Al0088SensitiveDataInAttributeAnalyzer |
| AL0089 | OpenTelemetry | Warning | Al0089MissingOtlpConfigurationAnalyzer |
| AL0090 | OpenTelemetry | Warning | Al0090UncompressedExportAnalyzer |
| AL0091 | OpenTelemetry | Warning | Al0091BatchExportDisabledAnalyzer |
| AL0092 | OpenTelemetry | Info | Al0092ConsiderSamplingAnalyzer |
| AL0093 | OpenTelemetry | Warning | Al0093MissingResourceAttributesAnalyzer |
| AL0094 | AOT Testing | Warning | Al0094AvoidDynamicKeywordAnalyzer |
| AL0095 | AOT Testing | Warning | Al0095AvoidExpressionCompileAnalyzer |
| AL0096 | Configuration | Warning | Al0096EnableEventSourceSupportAnalyzer |
| AL0101 | AOT Testing | Warning | Al0101AvoidActivatorCreateInstanceAnalyzer |
| AL0102 | AOT Testing | Warning | Al0102AvoidTypeGetTypeAnalyzer |
| AL0103 | Design | Warning | Al0103ClosedTypeHierarchySwitchAnalyzer |
Legend: Error = build error, Warning = build warning, Info = IDE suggestion, Disabled = off by default.
Automatic fixes are currently available for:
AL0002, AL0004, AL0005, AL0008, AL0010, AL0011, AL0012, AL0014, AL0015, AL0016, AL0025, AL0026, AL0027, AL0028, AL0029, AL0030, AL0031, AL0032, AL0033, AL0034, AL0035, AL0036, AL0037, AL0038, AL0039, AL0040, AL0045, AL0046, AL0047, AL0048, AL0049, AL0050, AL0051, AL0071, AL0072, AL0073, AL0074, AL0103
[*.cs]
dotnet_diagnostic.AL0001.severity = error
dotnet_diagnostic.AL0014.severity = none# Build
dotnet build ANcpLua.Analyzers.slnx -c Release
# Test
dotnet test --project tests/ANcpLua.Analyzers.Tests/ANcpLua.Analyzers.Tests.csproj
# Pack
dotnet pack src/ANcpLua.Analyzers/ANcpLua.Analyzers.csproj -c Release -o artifacts -p:PackageId=ANcpLua.Analyzers- Overview: ancplua.mintlify.app/analyzers/overview
- Rule docs: ancplua.mintlify.app/analyzers/rules
- ANcpLua.NET.Sdk - MSBuild SDK (auto-injects this analyzer package)
- ANcpLua.Roslyn.Utilities - Shared Roslyn helpers and extensions