From e653ead98992bfb866d7eeb9105f6db8afe61f01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Thu, 11 Dec 2025 20:19:39 +0100 Subject: [PATCH 1/2] refactor: fix sonar issues --- Source/Mockolate/It.Is.cs | 39 +++++++++++---------------- Source/Mockolate/It.IsAny.cs | 2 ++ Source/Mockolate/It.IsFalse.cs | 2 ++ Source/Mockolate/It.IsInRange.cs | 3 +++ Source/Mockolate/It.IsNull.cs | 2 ++ Source/Mockolate/It.IsOut.cs | 2 ++ Source/Mockolate/It.IsReadOnlySpan.cs | 2 ++ Source/Mockolate/It.IsRef.cs | 2 ++ Source/Mockolate/It.IsSpan.cs | 2 ++ Source/Mockolate/It.IsTrue.cs | 2 ++ Source/Mockolate/It.Matches.cs | 2 ++ Source/Mockolate/It.cs | 2 ++ 12 files changed, 39 insertions(+), 23 deletions(-) diff --git a/Source/Mockolate/It.Is.cs b/Source/Mockolate/It.Is.cs index 3e9c02cb..ba23d132 100644 --- a/Source/Mockolate/It.Is.cs +++ b/Source/Mockolate/It.Is.cs @@ -7,6 +7,7 @@ namespace Mockolate; #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning disable S3218 // Inner class members should not shadow outer class "static" or type members public partial class It { /// @@ -35,42 +36,33 @@ public static IParameter Is(Func predicate, string doNotPopulateThisValue = "") => new PredicateParameterMatch(predicate, doNotPopulateThisValue); - private sealed class ParameterEqualsMatch : TypedMatch + private sealed class ParameterEqualsMatch( + T value, + string valueExpression, + IEqualityComparer? comparer = null, + string? comparerExpression = null) + : TypedMatch { - private readonly IEqualityComparer? _comparer; - private readonly string? _comparerExpression; - private readonly T _value; - private readonly string _valueExpression; - - public ParameterEqualsMatch(T value, string valueExpression, IEqualityComparer? comparer = null, - string? comparerExpression = null) - { - _value = value; - _valueExpression = valueExpression; - _comparer = comparer; - _comparerExpression = comparerExpression; - } - /// - protected override bool Matches(T value) + protected override bool Matches(T value1) { - if (_comparer is not null) + if (comparer is not null) { - return _comparer.Equals(value, _value); + return comparer.Equals(value1, value); } - return EqualityComparer.Default.Equals(value, _value); + return EqualityComparer.Default.Equals(value1, value); } /// - public override string? ToString() + public override string ToString() { - if (_comparer is not null) + if (comparer is not null) { - return $"It.Is({_valueExpression}, {_comparerExpression})"; + return $"It.Is({valueExpression}, {comparerExpression})"; } - return _valueExpression; + return valueExpression; } } @@ -80,4 +72,5 @@ private sealed class PredicateParameterMatch(Func predicate, string public override string ToString() => $"It.Is<{typeof(T).FormatType()}>({predicateExpression})"; } } +#pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. diff --git a/Source/Mockolate/It.IsAny.cs b/Source/Mockolate/It.IsAny.cs index 2e80ecb7..39e3613c 100644 --- a/Source/Mockolate/It.IsAny.cs +++ b/Source/Mockolate/It.IsAny.cs @@ -4,6 +4,7 @@ namespace Mockolate; #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning disable S3218 // Inner class members should not shadow outer class "static" or type members public partial class It { /// @@ -21,4 +22,5 @@ private sealed class AnyParameterMatch : TypedMatch public override string ToString() => $"It.IsAny<{typeof(T).FormatType()}>()"; } } +#pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members #pragma warning restore S3453 // This class can't be instantiated; make its constructor 'public'. diff --git a/Source/Mockolate/It.IsFalse.cs b/Source/Mockolate/It.IsFalse.cs index c03677f6..f693e51f 100644 --- a/Source/Mockolate/It.IsFalse.cs +++ b/Source/Mockolate/It.IsFalse.cs @@ -3,6 +3,7 @@ namespace Mockolate; #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning disable S3218 // Inner class members should not shadow outer class "static" or type members public partial class It { /// @@ -19,4 +20,5 @@ private sealed class FalseParameterMatch : TypedMatch public override string ToString() => "It.IsFalse()"; } } +#pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members #pragma warning restore S3453 // This class can't be instantiated; make its constructor 'public'. diff --git a/Source/Mockolate/It.IsInRange.cs b/Source/Mockolate/It.IsInRange.cs index 042836e4..27888f89 100644 --- a/Source/Mockolate/It.IsInRange.cs +++ b/Source/Mockolate/It.IsInRange.cs @@ -5,6 +5,7 @@ namespace Mockolate; #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning disable S3218 // Inner class members should not shadow outer class "static" or type members public partial class It { /// @@ -49,6 +50,7 @@ public InRangeMatch(T minimum, T maximum, string minimumExpression, string maxim if (minimum.CompareTo(maximum) > 0) { throw new ArgumentOutOfRangeException(nameof(maximum), + // ReSharper disable once LocalizableElement "The maximum value must be greater than or equal to the minimum value."); } @@ -88,4 +90,5 @@ public override string ToString() => _includeBounds : $"It.IsInRange({_minimumExpression}, {_maximumExpression}).Exclusive()"; } } +#pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members #pragma warning restore S3453 // This class can't be instantiated; make its constructor 'public'. diff --git a/Source/Mockolate/It.IsNull.cs b/Source/Mockolate/It.IsNull.cs index 3b918b57..fbd74b49 100644 --- a/Source/Mockolate/It.IsNull.cs +++ b/Source/Mockolate/It.IsNull.cs @@ -4,6 +4,7 @@ namespace Mockolate; #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning disable S3218 // Inner class members should not shadow outer class "static" or type members public partial class It { /// @@ -20,4 +21,5 @@ private sealed class NullParameterMatch : TypedMatch public override string ToString() => $"It.IsNull<{typeof(T).FormatType()}>()"; } } +#pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members #pragma warning restore S3453 // This class can't be instantiated; make its constructor 'public'. diff --git a/Source/Mockolate/It.IsOut.cs b/Source/Mockolate/It.IsOut.cs index 569cc176..1f8074cc 100644 --- a/Source/Mockolate/It.IsOut.cs +++ b/Source/Mockolate/It.IsOut.cs @@ -7,6 +7,7 @@ namespace Mockolate; #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning disable S3218 // Inner class members should not shadow outer class "static" or type members public partial class It { /// @@ -107,4 +108,5 @@ public void InvokeCallbacks(object? value) } } } +#pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members #pragma warning restore S3453 // This class can't be instantiated; make its constructor 'public'. diff --git a/Source/Mockolate/It.IsReadOnlySpan.cs b/Source/Mockolate/It.IsReadOnlySpan.cs index fc7989cc..6a176479 100644 --- a/Source/Mockolate/It.IsReadOnlySpan.cs +++ b/Source/Mockolate/It.IsReadOnlySpan.cs @@ -7,6 +7,7 @@ namespace Mockolate; #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning disable S3218 // Inner class members should not shadow outer class "static" or type members public partial class It { /// @@ -32,5 +33,6 @@ protected override bool Matches(ReadOnlySpanWrapper value) => predicate?.Invoke(value.ReadOnlySpanValues) ?? true; } } +#pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members #pragma warning restore S3453 // This class can't be instantiated; make its constructor 'public'. #endif diff --git a/Source/Mockolate/It.IsRef.cs b/Source/Mockolate/It.IsRef.cs index 2d3f6dbc..a81d8fc0 100644 --- a/Source/Mockolate/It.IsRef.cs +++ b/Source/Mockolate/It.IsRef.cs @@ -7,6 +7,7 @@ namespace Mockolate; #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning disable S3218 // Inner class members should not shadow outer class "static" or type members public partial class It { /// @@ -166,4 +167,5 @@ public IRefParameter Do(Action callback) protected abstract bool Matches(T value); } } +#pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members #pragma warning restore S3453 // This class can't be instantiated; make its constructor 'public'. diff --git a/Source/Mockolate/It.IsSpan.cs b/Source/Mockolate/It.IsSpan.cs index 90b17c22..b1158a51 100644 --- a/Source/Mockolate/It.IsSpan.cs +++ b/Source/Mockolate/It.IsSpan.cs @@ -7,6 +7,7 @@ namespace Mockolate; #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning disable S3218 // Inner class members should not shadow outer class "static" or type members public partial class It { /// @@ -32,5 +33,6 @@ protected override bool Matches(SpanWrapper value) => predicate?.Invoke(value.SpanValues) ?? true; } } +#pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members #pragma warning restore S3453 // This class can't be instantiated; make its constructor 'public'. #endif diff --git a/Source/Mockolate/It.IsTrue.cs b/Source/Mockolate/It.IsTrue.cs index fe70e4ef..e0e4f810 100644 --- a/Source/Mockolate/It.IsTrue.cs +++ b/Source/Mockolate/It.IsTrue.cs @@ -3,6 +3,7 @@ namespace Mockolate; #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning disable S3218 // Inner class members should not shadow outer class "static" or type members public partial class It { /// @@ -19,4 +20,5 @@ private sealed class TrueParameterMatch : TypedMatch public override string ToString() => "It.IsTrue()"; } } +#pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members #pragma warning restore S3453 // This class can't be instantiated; make its constructor 'public'. diff --git a/Source/Mockolate/It.Matches.cs b/Source/Mockolate/It.Matches.cs index b0e0d022..da59234b 100644 --- a/Source/Mockolate/It.Matches.cs +++ b/Source/Mockolate/It.Matches.cs @@ -5,6 +5,7 @@ namespace Mockolate; #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning disable S3218 // Inner class members should not shadow outer class "static" or type members public partial class It { /// @@ -88,4 +89,5 @@ private static string WildcardToRegularExpression(string value) } } } +#pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members #pragma warning restore S3453 // This class can't be instantiated; make its constructor 'public'. diff --git a/Source/Mockolate/It.cs b/Source/Mockolate/It.cs index 59a3fddc..37f00604 100644 --- a/Source/Mockolate/It.cs +++ b/Source/Mockolate/It.cs @@ -5,6 +5,7 @@ namespace Mockolate; #pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning disable S3218 // Inner class members should not shadow outer class "static" or type members /// /// Specify a matching condition for a parameter. /// @@ -78,4 +79,5 @@ public IParameter Do(Action callback) protected abstract bool Matches(T value); } } +#pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members #pragma warning restore S3453 // This class can't be instantiated; make its constructor 'public'. From a4134e71ff8fd1dcb6263177fc8bd61f145e251f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Thu, 11 Dec 2025 20:24:26 +0100 Subject: [PATCH 2/2] Fix review issues --- Source/Mockolate/It.Is.cs | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/Source/Mockolate/It.Is.cs b/Source/Mockolate/It.Is.cs index ba23d132..ffe161af 100644 --- a/Source/Mockolate/It.Is.cs +++ b/Source/Mockolate/It.Is.cs @@ -36,33 +36,42 @@ public static IParameter Is(Func predicate, string doNotPopulateThisValue = "") => new PredicateParameterMatch(predicate, doNotPopulateThisValue); - private sealed class ParameterEqualsMatch( - T value, - string valueExpression, - IEqualityComparer? comparer = null, - string? comparerExpression = null) - : TypedMatch + private sealed class ParameterEqualsMatch : TypedMatch { + private readonly IEqualityComparer? _comparer; + private readonly string? _comparerExpression; + private readonly T _value; + private readonly string _valueExpression; + + public ParameterEqualsMatch(T value, string valueExpression, IEqualityComparer? comparer = null, + string? comparerExpression = null) + { + _value = value; + _valueExpression = valueExpression; + _comparer = comparer; + _comparerExpression = comparerExpression; + } + /// - protected override bool Matches(T value1) + protected override bool Matches(T value) { - if (comparer is not null) + if (_comparer is not null) { - return comparer.Equals(value1, value); + return _comparer.Equals(value, _value); } - return EqualityComparer.Default.Equals(value1, value); + return EqualityComparer.Default.Equals(value, _value); } /// public override string ToString() { - if (comparer is not null) + if (_comparer is not null) { - return $"It.Is({valueExpression}, {comparerExpression})"; + return $"It.Is({_valueExpression}, {_comparerExpression})"; } - return valueExpression; + return _valueExpression; } } @@ -73,4 +82,4 @@ private sealed class PredicateParameterMatch(Func predicate, string } } #pragma warning restore S3218 // Inner class members should not shadow outer class "static" or type members -#pragma warning disable S3453 // This class can't be instantiated; make its constructor 'public'. +#pragma warning restore S3453 // This class can't be instantiated; make its constructor 'public'.