From 843374fb8bfd943453c30a38e8ac5902d89976fd Mon Sep 17 00:00:00 2001 From: Travis Illig Date: Thu, 28 May 2026 12:35:48 -0700 Subject: [PATCH 1/8] Add SonarAnalyzer.CSharp and unified analyzer rulesets. Adds SonarAnalyzer.CSharp 10.27.0.140913 to all projects. Replaces existing Source.ruleset and Test.ruleset with unified versions shared across the Autofac organization. Ensures all projects have AnalysisMode=AllEnabledByDefault and EnforceCodeStyleInBuild=true. --- ...ofac.Extras.DynamicProxy.Benchmarks.csproj | 6 + build/Source.ruleset | 42 +++++-- build/Test.ruleset | 103 +++++++++++++----- .../Autofac.Extras.DynamicProxy.csproj | 4 + ...DynamicProxy.Test.SatelliteAssembly.csproj | 5 + .../Autofac.Extras.DynamicProxy.Test.csproj | 5 + 6 files changed, 124 insertions(+), 41 deletions(-) diff --git a/bench/Autofac.Extras.DynamicProxy.Benchmarks/Autofac.Extras.DynamicProxy.Benchmarks.csproj b/bench/Autofac.Extras.DynamicProxy.Benchmarks/Autofac.Extras.DynamicProxy.Benchmarks.csproj index a254c1b..9b5de05 100644 --- a/bench/Autofac.Extras.DynamicProxy.Benchmarks/Autofac.Extras.DynamicProxy.Benchmarks.csproj +++ b/bench/Autofac.Extras.DynamicProxy.Benchmarks/Autofac.Extras.DynamicProxy.Benchmarks.csproj @@ -11,6 +11,8 @@ Autofac.Extras.DynamicProxy.Benchmarks true ../../build/Test.ruleset + AllEnabledByDefault + true @@ -27,6 +29,10 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/build/Source.ruleset b/build/Source.ruleset index 459e4e0..b1e5bb6 100644 --- a/build/Source.ruleset +++ b/build/Source.ruleset @@ -1,8 +1,8 @@ - - + + - - + + @@ -12,23 +12,41 @@ - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + diff --git a/build/Test.ruleset b/build/Test.ruleset index 3c26c01..9434578 100644 --- a/build/Test.ruleset +++ b/build/Test.ruleset @@ -1,16 +1,12 @@ - - + + - - - - + + - - - + - + @@ -20,37 +16,79 @@ - - - + - + - - - + - + - + - + + + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -58,11 +96,11 @@ - + - + - + @@ -82,6 +120,13 @@ + + + + + + + diff --git a/src/Autofac.Extras.DynamicProxy/Autofac.Extras.DynamicProxy.csproj b/src/Autofac.Extras.DynamicProxy/Autofac.Extras.DynamicProxy.csproj index 2c19af4..0e6669b 100644 --- a/src/Autofac.Extras.DynamicProxy/Autofac.Extras.DynamicProxy.csproj +++ b/src/Autofac.Extras.DynamicProxy/Autofac.Extras.DynamicProxy.csproj @@ -68,6 +68,10 @@ all + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/test/Autofac.Extras.DynamicProxy.Test.SatelliteAssembly/Autofac.Extras.DynamicProxy.Test.SatelliteAssembly.csproj b/test/Autofac.Extras.DynamicProxy.Test.SatelliteAssembly/Autofac.Extras.DynamicProxy.Test.SatelliteAssembly.csproj index 3f4c457..1816eba 100644 --- a/test/Autofac.Extras.DynamicProxy.Test.SatelliteAssembly/Autofac.Extras.DynamicProxy.Test.SatelliteAssembly.csproj +++ b/test/Autofac.Extras.DynamicProxy.Test.SatelliteAssembly/Autofac.Extras.DynamicProxy.Test.SatelliteAssembly.csproj @@ -10,6 +10,7 @@ Autofac.Extras.DynamicProxy.Test.SatelliteAssembly false ../../build/Test.ruleset + AllEnabledByDefault true enable @@ -18,6 +19,10 @@ all + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/test/Autofac.Extras.DynamicProxy.Test/Autofac.Extras.DynamicProxy.Test.csproj b/test/Autofac.Extras.DynamicProxy.Test/Autofac.Extras.DynamicProxy.Test.csproj index dce39d8..94eb78d 100644 --- a/test/Autofac.Extras.DynamicProxy.Test/Autofac.Extras.DynamicProxy.Test.csproj +++ b/test/Autofac.Extras.DynamicProxy.Test/Autofac.Extras.DynamicProxy.Test.csproj @@ -8,6 +8,7 @@ true true ../../build/Test.ruleset + AllEnabledByDefault true false latest @@ -42,6 +43,10 @@ all + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + all From 121780b12dff3523eee47041dd9f45410e469799 Mon Sep 17 00:00:00 2001 From: Travis Illig Date: Thu, 28 May 2026 14:43:51 -0700 Subject: [PATCH 2/8] Disable CA1034 in Test.ruleset: nested types are standard in test fixtures. --- build/Test.ruleset | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/Test.ruleset b/build/Test.ruleset index 9434578..742a68c 100644 --- a/build/Test.ruleset +++ b/build/Test.ruleset @@ -42,6 +42,8 @@ + + From 66bbc9a25085f609b460e3bea7606b9b24f645f6 Mon Sep 17 00:00:00 2001 From: Travis Illig Date: Thu, 28 May 2026 14:45:34 -0700 Subject: [PATCH 3/8] Fix S6608: use indexer instead of LINQ First(). --- src/Autofac.Extras.DynamicProxy/RegistrationExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Autofac.Extras.DynamicProxy/RegistrationExtensions.cs b/src/Autofac.Extras.DynamicProxy/RegistrationExtensions.cs index 0554fe8..68989f2 100644 --- a/src/Autofac.Extras.DynamicProxy/RegistrationExtensions.cs +++ b/src/Autofac.Extras.DynamicProxy/RegistrationExtensions.cs @@ -178,7 +178,7 @@ public static IRegistrationBuilder Date: Thu, 28 May 2026 14:45:36 -0700 Subject: [PATCH 4/8] Fix S2699: add assertions to tests that verify no exception is thrown. --- bench/Autofac.Extras.DynamicProxy.Benchmarks/Harness.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bench/Autofac.Extras.DynamicProxy.Benchmarks/Harness.cs b/bench/Autofac.Extras.DynamicProxy.Benchmarks/Harness.cs index 37ce060..55d6563 100644 --- a/bench/Autofac.Extras.DynamicProxy.Benchmarks/Harness.cs +++ b/bench/Autofac.Extras.DynamicProxy.Benchmarks/Harness.cs @@ -33,13 +33,15 @@ public class Harness [Fact] public void ClassInterception() { - BenchmarkRunner.Run(); + var exception = Record.Exception(() => BenchmarkRunner.Run()); + Assert.Null(exception); } [Fact] public void InterfaceInterception() { - BenchmarkRunner.Run(); + var exception = Record.Exception(() => BenchmarkRunner.Run()); + Assert.Null(exception); } } } From 293c10fe04400d8220d2b070b3baa471dbdce0ae Mon Sep 17 00:00:00 2001 From: Travis Illig Date: Thu, 28 May 2026 17:45:15 -0700 Subject: [PATCH 5/8] Disable S1133: do not warn on use of obsolete/deprecated members. Autofac intentionally maintains deprecated APIs for backward compatibility. Tests exercise deprecated APIs to verify they still work. Warnings about using deprecated code are not actionable in this context. --- build/Source.ruleset | 2 ++ build/Test.ruleset | 2 ++ 2 files changed, 4 insertions(+) diff --git a/build/Source.ruleset b/build/Source.ruleset index b1e5bb6..1cd02ff 100644 --- a/build/Source.ruleset +++ b/build/Source.ruleset @@ -32,6 +32,8 @@ + + diff --git a/build/Test.ruleset b/build/Test.ruleset index 742a68c..7729333 100644 --- a/build/Test.ruleset +++ b/build/Test.ruleset @@ -55,6 +55,8 @@ + + From f6321a695982ef45ab3db67023cf16f583b6b78e Mon Sep 17 00:00:00 2001 From: Travis Illig Date: Fri, 29 May 2026 07:19:09 -0700 Subject: [PATCH 6/8] Enable CA1063, disable S3881, fix ruleset comment ordering. - CA1063 (Implement IDisposable correctly): enabled as Warning in both Source and Test rulesets for explicit enforcement. - S3881 (IDisposable pattern): disabled because Autofac uses non-standard dispose patterns for container lifecycle management. - Fixed comment/rule ordering where S1133 insertion displaced comments. --- build/Source.ruleset | 4 ++++ build/Test.ruleset | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/build/Source.ruleset b/build/Source.ruleset index 1cd02ff..8994858 100644 --- a/build/Source.ruleset +++ b/build/Source.ruleset @@ -4,6 +4,8 @@ + + @@ -44,6 +46,8 @@ + + diff --git a/build/Test.ruleset b/build/Test.ruleset index 7729333..cd29cf9 100644 --- a/build/Test.ruleset +++ b/build/Test.ruleset @@ -6,6 +6,8 @@ + + @@ -54,9 +56,9 @@ - + @@ -80,6 +82,8 @@ + + From 91a0b7e091708d21121bdbf37a8bbcf15177a7d3 Mon Sep 17 00:00:00 2001 From: Travis Illig Date: Fri, 29 May 2026 10:38:58 -0700 Subject: [PATCH 7/8] Disable CA2201 in Test.ruleset: tests use generic exceptions for simulation. --- build/Test.ruleset | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/Test.ruleset b/build/Test.ruleset index cd29cf9..8559de5 100644 --- a/build/Test.ruleset +++ b/build/Test.ruleset @@ -39,6 +39,8 @@ + + From 45151dfafa187f896898c3359a75a519cee3d1e4 Mon Sep 17 00:00:00 2001 From: Travis Illig Date: Fri, 29 May 2026 12:58:19 -0700 Subject: [PATCH 8/8] Disable CA1711, CA1721, S125 in Test.ruleset. - CA1711: test classes commonly use suffixes like Impl, Handler, etc. - CA1721: test interfaces intentionally have properties matching methods. - S125: commented-out code in tests is acceptable for examples/notes. --- build/Test.ruleset | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/build/Test.ruleset b/build/Test.ruleset index 8559de5..b64a37a 100644 --- a/build/Test.ruleset +++ b/build/Test.ruleset @@ -23,6 +23,10 @@ + + + + @@ -55,6 +59,8 @@ + +