Skip to content

Roslyn analyzers enforcing code quality, AOT safety, and best practices for C#. Auto-injected via ANcpLua.NET.Sdk.

License

Notifications You must be signed in to change notification settings

ANcpLua/ANcpLua.Analyzers

Repository files navigation

NuGet .NET Standard 2.0 License: MIT

ANcpLua.Analyzers

Roslyn analyzers for modern C# patterns, OpenTelemetry instrumentation, AOT safety, and ANcpLua ecosystem conventions.

Installation

dotnet add package ANcpLua.Analyzers

Using ANcpLua.NET.Sdk? This package is auto-injected - no installation needed.

What you get

  • 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 .editorconfig severity configuration.

Rule coverage by category

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

Full rule catalog

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.

Code fixes

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

Configuration

[*.cs]
dotnet_diagnostic.AL0001.severity = error
dotnet_diagnostic.AL0014.severity = none

Development commands

# 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

Documentation

Related projects

License

MIT

About

Roslyn analyzers enforcing code quality, AOT safety, and best practices for C#. Auto-injected via ANcpLua.NET.Sdk.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •