Browse Source

Enable IDE0059 (#39434)

Contributes to https://github.com/dotnet/aspnetcore/issues/24055
Pranav K 4 years ago
parent
commit
fd1891536f
74 changed files with 141 additions and 169 deletions
  1. 11 0
      .editorconfig
  2. 1 1
      src/Azure/AzureAD/Authentication.AzureADB2C.UI/src/AzureAdB2COpenIDConnectEventHandlers.cs
  3. 3 3
      src/Caching/StackExchangeRedis/src/RedisCache.cs
  4. 1 1
      src/Components/WebView/Samples/PhotinoPlatform/src/PhotinoWebViewManager.cs
  5. 1 2
      src/DataProtection/Cryptography.Internal/src/SafeHandles/SafeLibraryHandle.cs
  6. 1 1
      src/DataProtection/DataProtection/src/ArraySegmentExtensions.cs
  7. 1 2
      src/DataProtection/DataProtection/src/Cng/DpapiSecretSerializerHelper.cs
  8. 2 3
      src/DataProtection/DataProtection/src/KeyManagement/KeyRingBasedDataProtector.cs
  9. 1 1
      src/DataProtection/DataProtection/src/KeyManagement/XmlKeyManager.cs
  10. 1 2
      src/DataProtection/Extensions/src/TimeLimitedDataProtector.cs
  11. 4 6
      src/Features/JsonPatch/src/Internal/ListAdapter.cs
  12. 3 3
      src/FileProviders/Embedded/src/Manifest/ManifestDirectory.cs
  13. 1 2
      src/Http/Headers/src/BaseHeaderParser.cs
  14. 1 2
      src/Http/Headers/src/CacheControlHeaderValue.cs
  15. 1 1
      src/Http/Headers/src/ContentDispositionHeaderValue.cs
  16. 2 6
      src/Http/Headers/src/ContentRangeHeaderValue.cs
  17. 1 2
      src/Http/Headers/src/EntityTagHeaderValue.cs
  18. 1 2
      src/Http/Headers/src/HeaderUtilities.cs
  19. 1 1
      src/Http/Headers/src/MediaTypeHeaderValue.cs
  20. 2 2
      src/Http/Headers/src/RangeItemHeaderValue.cs
  21. 2 2
      src/Http/Http.Abstractions/src/HostString.cs
  22. 2 4
      src/Http/Owin/src/OwinEnvironment.cs
  23. 1 2
      src/Http/Owin/src/OwinFeatureCollection.cs
  24. 1 1
      src/Http/Routing/src/Constraints/OptionalRouteConstraint.cs
  25. 1 2
      src/Http/Routing/src/Matching/DfaMatcherBuilder.cs
  26. 2 2
      src/Http/Routing/src/Matching/HttpMethodMatcherPolicy.cs
  27. 23 28
      src/Http/Shared/HttpRuleParser.cs
  28. 1 1
      src/Http/WebUtilities/src/BufferedReadStream.cs
  29. 1 3
      src/Http/WebUtilities/src/MultipartReaderStream.cs
  30. 1 1
      src/Identity/ApiAuthorization.IdentityServer/src/Extensions/AutoRedirectEndSessionEndpoint.cs
  31. 1 1
      src/Identity/ApiAuthorization.IdentityServer/src/Extensions/DefaultClientRequestParametersProvider.cs
  32. 3 3
      src/Identity/EntityFrameworkCore/src/IdentityEntityFrameworkBuilderExtensions.cs
  33. 2 2
      src/Identity/Extensions.Core/src/UserManager.cs
  34. 9 9
      src/Identity/Specification.Tests/src/UserManagerSpecificationTests.cs
  35. 1 1
      src/Identity/UI/src/Areas/Identity/Pages/V4/Account/LoginWith2fa.cshtml.cs
  36. 1 1
      src/Identity/UI/src/Areas/Identity/Pages/V4/Account/LoginWithRecoveryCode.cshtml.cs
  37. 1 1
      src/Identity/UI/src/Areas/Identity/Pages/V4/Account/Manage/DeletePersonalData.cshtml.cs
  38. 1 1
      src/Identity/UI/src/Areas/Identity/Pages/V4/Account/Manage/EnableAuthenticator.cshtml.cs
  39. 1 1
      src/Identity/UI/src/Areas/Identity/Pages/V4/Account/Manage/ResetAuthenticator.cshtml.cs
  40. 1 1
      src/Identity/UI/src/Areas/Identity/Pages/V5/Account/LoginWith2fa.cshtml.cs
  41. 1 1
      src/Identity/UI/src/Areas/Identity/Pages/V5/Account/LoginWithRecoveryCode.cshtml.cs
  42. 1 1
      src/Identity/UI/src/Areas/Identity/Pages/V5/Account/Manage/DeletePersonalData.cshtml.cs
  43. 1 1
      src/Identity/UI/src/Areas/Identity/Pages/V5/Account/Manage/EnableAuthenticator.cshtml.cs
  44. 1 1
      src/Identity/UI/src/Areas/Identity/Pages/V5/Account/Manage/ResetAuthenticator.cshtml.cs
  45. 1 2
      src/Middleware/Rewrite/src/ApacheModRewrite/ConditionPatternParser.cs
  46. 1 1
      src/Middleware/Rewrite/src/IISUrlRewrite/UrlRewriteFileParser.cs
  47. 1 2
      src/Middleware/Rewrite/src/RewriteRule.cs
  48. 1 2
      src/Middleware/Rewrite/src/UrlActions/RewriteAction.cs
  49. 2 2
      src/Middleware/Spa/SpaServices.Extensions/src/Util/EventedStreamReader.cs
  50. 0 1
      src/Mvc/Mvc.Core/src/ApplicationModels/ApplicationModelFactory.cs
  51. 3 3
      src/Mvc/Mvc.Core/src/Formatters/AcceptHeaderParser.cs
  52. 1 1
      src/Mvc/Mvc.Core/src/Infrastructure/ResourceInvoker.cs
  53. 1 1
      src/Mvc/Mvc.RazorPages/src/ApplicationModels/AuthorizationPageApplicationModelProvider.cs
  54. 1 1
      src/Mvc/Mvc.TagHelpers/src/Cache/DistributedCacheTagHelperService.cs
  55. 2 3
      src/Mvc/Mvc.TagHelpers/src/GlobbingUrlBuilder.cs
  56. 1 1
      src/Mvc/Mvc.TagHelpers/src/InputTagHelper.cs
  57. 0 2
      src/Mvc/Mvc.TagHelpers/src/PartialTagHelper.cs
  58. 0 1
      src/Mvc/Mvc.ViewFeatures/src/FormatWeekHelper.cs
  59. 0 2
      src/ProjectTemplates/Shared/Project.cs
  60. 1 1
      src/Security/Authentication/JwtBearer/src/JwtBearerHandler.cs
  61. 1 1
      src/Servers/HttpSys/src/RequestProcessing/ResponseBody.cs
  62. 2 2
      src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs
  63. 1 1
      src/Servers/IIS/IntegrationTesting.IIS/src/LoggingHandler.cs
  64. 2 3
      src/Servers/Kestrel/Core/src/Internal/Http3/Http3FrameReader.cs
  65. 5 5
      src/Servers/Kestrel/shared/KnownHeaders.cs
  66. 1 1
      src/Shared/E2ETesting/BrowserFixture.cs
  67. 0 1
      src/Shared/HttpSys/RequestProcessing/HeaderParser.cs
  68. 3 3
      src/Shared/HttpSys/RequestProcessing/RequestUriBuilder.cs
  69. 0 1
      src/Shared/ResultsTests/FileStreamResultTestBase.cs
  70. 6 6
      src/Shared/UrlDecoder/UrlDecoder.cs
  71. 1 1
      src/SignalR/clients/csharp/Client.SourceGenerator/src/HubServerProxyGenerator.Emitter.cs
  72. 1 1
      src/SignalR/common/testassets/Tests.Utils/TestClient.cs
  73. 1 2
      src/SignalR/server/StackExchangeRedis/src/RedisHubLifetimeManager.cs
  74. 1 1
      src/Testing/src/xunit/QuarantinedTestTraitDiscoverer.cs

+ 11 - 0
.editorconfig

@@ -199,6 +199,12 @@ dotnet_diagnostic.CA2200.severity = warning
 # CA2208: Instantiate argument exceptions correctly
 dotnet_diagnostic.CA2208.severity = warning
 
+# CA2245: Do not assign a property to itself
+dotnet_diagnostic.CA2245.severity = warning
+
+# CA2246: Assigning symbol and its member in the same statement
+dotnet_diagnostic.CA2246.severity = warning
+
 # IDE0005: Remove unnecessary usings
 dotnet_diagnostic.IDE0005.severity = warning
 
@@ -224,6 +230,9 @@ dotnet_diagnostic.IDE0051.severity = warning
 # IDE0055: All formatting rules
 dotnet_diagnostic.IDE0055.severity = warning
 
+# IDE0059: Unnecessary assignment to a value
+dotnet_diagnostic.IDE0059.severity = warning
+
 # IDE0073: File header
 dotnet_diagnostic.IDE0073.severity = warning
 file_header_template = Licensed to the .NET Foundation under one or more agreements.\nThe .NET Foundation licenses this file to you under the MIT license.
@@ -274,6 +283,8 @@ dotnet_diagnostic.CA2012.severity = suggestion
 dotnet_diagnostic.IDE0044.severity = suggestion
 # IDE0051: Remove unused private members
 dotnet_diagnostic.IDE0051.severity = suggestion
+# IDE0059: Unnecessary assignment to a value
+dotnet_diagnostic.IDE0059.severity = suggestion
 
 # CA2016: Forward the 'CancellationToken' parameter to methods that take one
 dotnet_diagnostic.CA2016.severity = suggestion

+ 1 - 1
src/Azure/AzureAD/Authentication.AzureADB2C.UI/src/AzureAdB2COpenIDConnectEventHandlers.cs

@@ -40,7 +40,7 @@ internal class AzureADB2COpenIDConnectEventHandlers
 
     private string BuildIssuerAddress(RedirectContext context, string defaultPolicy, string policy)
     {
-        if (!_policyToIssuerAddress.TryGetValue(policy, out var issuerAddress))
+        if (!_policyToIssuerAddress.TryGetValue(policy, out _))
         {
             _policyToIssuerAddress[policy] = context.ProtocolMessage.IssuerAddress.ToLowerInvariant()
                 .Replace($"/{defaultPolicy.ToLowerInvariant()}/", $"/{policy.ToLowerInvariant()}/");

+ 3 - 3
src/Caching/StackExchangeRedis/src/RedisCache.cs

@@ -124,7 +124,7 @@ public class RedisCache : IDistributedCache, IDisposable
 
         var absoluteExpiration = GetAbsoluteExpiration(creationTime, options);
 
-        var result = _cache.ScriptEvaluate(_setScript, new RedisKey[] { _instance + key },
+        _cache.ScriptEvaluate(_setScript, new RedisKey[] { _instance + key },
             new RedisValue[]
             {
                         absoluteExpiration?.Ticks ?? NotPresent,
@@ -430,9 +430,9 @@ public class RedisCache : IDistributedCache, IDisposable
         }
 
         // Note Refresh has no effect if there is just an absolute expiration (or neither).
-        TimeSpan? expr = null;
         if (sldExpr.HasValue)
         {
+            TimeSpan? expr;
             if (absExpr.HasValue)
             {
                 var relExpr = absExpr.Value - DateTimeOffset.Now;
@@ -457,9 +457,9 @@ public class RedisCache : IDistributedCache, IDisposable
         token.ThrowIfCancellationRequested();
 
         // Note Refresh has no effect if there is just an absolute expiration (or neither).
-        TimeSpan? expr = null;
         if (sldExpr.HasValue)
         {
+            TimeSpan? expr;
             if (absExpr.HasValue)
             {
                 var relExpr = absExpr.Value - DateTimeOffset.Now;

+ 1 - 1
src/Components/WebView/Samples/PhotinoPlatform/src/PhotinoWebViewManager.cs

@@ -49,7 +49,7 @@ internal class PhotinoWebViewManager : WebViewManager
         var hasFileExtension = url.LastIndexOf('.') > url.LastIndexOf('/');
 
         if (url.StartsWith(AppBaseUri, StringComparison.Ordinal)
-            && TryGetResponseContent(url, !hasFileExtension, out var statusCode, out var statusMessage, out var content, out var headers))
+            && TryGetResponseContent(url, !hasFileExtension, out _, out _, out var content, out var headers))
         {
             headers.TryGetValue("Content-Type", out contentType);
             return content;

+ 1 - 2
src/DataProtection/Cryptography.Internal/src/SafeHandles/SafeLibraryHandle.cs

@@ -39,8 +39,7 @@ internal sealed unsafe class SafeLibraryHandle : SafeHandleZeroOrMinusOneIsInval
         const uint GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 0x00000004U;
         const uint GET_MODULE_HANDLE_EX_FLAG_PIN = 0x00000001U;
 
-        IntPtr unused;
-        bool retVal = UnsafeNativeMethods.GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_PIN, this, out unused);
+        bool retVal = UnsafeNativeMethods.GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_PIN, this, out _);
         if (!retVal)
         {
             UnsafeNativeMethods.ThrowExceptionForLastWin32Error();

+ 1 - 1
src/DataProtection/DataProtection/src/ArraySegmentExtensions.cs

@@ -24,6 +24,6 @@ internal static class ArraySegmentExtensions
     {
         // Since ArraySegment<T> is a struct, it can be improperly initialized or torn.
         // We call the ctor again to make sure the instance data is valid.
-        var unused = new ArraySegment<T>(arraySegment.Array!, arraySegment.Offset, arraySegment.Count);
+        _ = new ArraySegment<T>(arraySegment.Array!, arraySegment.Offset, arraySegment.Count);
     }
 }

+ 1 - 2
src/DataProtection/DataProtection/src/Cng/DpapiSecretSerializerHelper.cs

@@ -336,7 +336,6 @@ internal static unsafe class DpapiSecretSerializerHelper
 
         NCryptDescriptorHandle descriptorHandle;
         LocalAllocHandle unprotectedDataHandle;
-        uint cbUnprotectedData;
         var ntstatus = UnsafeNativeMethods.NCryptUnprotectSecret(
             phDescriptor: out descriptorHandle,
             dwFlags: NCRYPT_UNPROTECT_NO_DECRYPT,
@@ -345,7 +344,7 @@ internal static unsafe class DpapiSecretSerializerHelper
             pMemPara: IntPtr.Zero,
             hWnd: IntPtr.Zero,
             ppbData: out unprotectedDataHandle,
-            pcbData: out cbUnprotectedData);
+            pcbData: out _);
         UnsafeNativeMethods.ThrowExceptionForNCryptStatus(ntstatus);
         CryptoUtil.AssertSafeHandleIsValid(descriptorHandle);
 

+ 2 - 3
src/DataProtection/DataProtection/src/KeyManagement/KeyRingBasedDataProtector.cs

@@ -187,11 +187,10 @@ internal sealed unsafe class KeyRingBasedDataProtector : IDataProtector, IPersis
         }
 
         // Argument checking will be done by the callee
-        bool requiresMigration, wasRevoked; // unused
         return DangerousUnprotect(protectedData,
             ignoreRevocationErrors: false,
-            requiresMigration: out requiresMigration,
-            wasRevoked: out wasRevoked);
+            requiresMigration: out _,
+            wasRevoked: out _);
     }
 
     private byte[] UnprotectCore(byte[] protectedData, bool allowOperationsOnRevokedKeys, out UnprotectStatus status)

+ 1 - 1
src/DataProtection/DataProtection/src/KeyManagement/XmlKeyManager.cs

@@ -489,7 +489,7 @@ public sealed class XmlKeyManager : IKeyManager, IInternalXmlKeyManager
 
     internal KeyValuePair<IXmlRepository, IXmlEncryptor?> GetFallbackKeyRepositoryEncryptorPair()
     {
-        IXmlRepository? repository = null;
+        IXmlRepository? repository;
         IXmlEncryptor? encryptor = null;
 
         // If we're running in Azure Web Sites, the key repository goes in the %HOME% directory.

+ 1 - 2
src/DataProtection/Extensions/src/TimeLimitedDataProtector.cs

@@ -142,7 +142,6 @@ internal sealed class TimeLimitedDataProtector : ITimeLimitedDataProtector
             throw new ArgumentNullException(nameof(protectedData));
         }
 
-        DateTimeOffset expiration; // unused
-        return Unprotect(protectedData, out expiration);
+        return Unprotect(protectedData, out _);
     }
 }

+ 4 - 6
src/Features/JsonPatch/src/Internal/ListAdapter.cs

@@ -63,7 +63,7 @@ public class ListAdapter : IAdapter
     {
         var list = (IList)target;
 
-        if (!TryGetListTypeArgument(list, out var typeArgument, out errorMessage))
+        if (!TryGetListTypeArgument(list, out _, out errorMessage))
         {
             value = null;
             return false;
@@ -96,7 +96,7 @@ public class ListAdapter : IAdapter
     {
         var list = (IList)target;
 
-        if (!TryGetListTypeArgument(list, out var typeArgument, out errorMessage))
+        if (!TryGetListTypeArgument(list, out _, out errorMessage))
         {
             return false;
         }
@@ -208,8 +208,7 @@ public class ListAdapter : IAdapter
             return false;
         }
 
-        var index = -1;
-        if (!int.TryParse(segment, out index))
+        if (!int.TryParse(segment, out var index))
         {
             value = null;
             errorMessage = Resources.FormatInvalidIndexValue(segment);
@@ -307,8 +306,7 @@ public class ListAdapter : IAdapter
             return true;
         }
 
-        var position = -1;
-        if (int.TryParse(segment, out position))
+        if (int.TryParse(segment, out var position))
         {
             if (position >= 0 && position < list.Count)
             {

+ 3 - 3
src/FileProviders/Embedded/src/Manifest/ManifestDirectory.cs

@@ -99,13 +99,13 @@ internal class ManifestDirectory : ManifestEntry
     private ManifestEntry[] CopyChildren()
     {
         var list = new List<ManifestEntry>(Children.Count);
-        for (int i = 0; i < Children.Count; i++)
+        for (var i = 0; i < Children.Count; i++)
         {
             var child = Children[i];
             switch (child)
             {
-                case ManifestSinkDirectory s:
-                case ManifestRootDirectory r:
+                case ManifestSinkDirectory:
+                case ManifestRootDirectory:
                     throw new InvalidOperationException("Unexpected manifest node.");
                 case ManifestDirectory d:
                     var grandChildren = d.CopyChildren();

+ 1 - 2
src/Http/Headers/src/BaseHeaderParser.cs

@@ -28,9 +28,8 @@ internal abstract class BaseHeaderParser<T> : HttpHeaderParser<T>
             return SupportsMultipleValues;
         }
 
-        var separatorFound = false;
         var current = HeaderUtilities.GetNextNonEmptyOrWhitespaceIndex(value, index, SupportsMultipleValues,
-            out separatorFound);
+            out var separatorFound);
 
         if (separatorFound && !SupportsMultipleValues)
         {

+ 1 - 2
src/Http/Headers/src/CacheControlHeaderValue.cs

@@ -728,12 +728,11 @@ public class CacheControlHeaderValue
         // We have a quoted string. Now verify that the string contains a list of valid tokens separated by ','.
         var current = 1; // skip the initial '"' character.
         var maxLength = valueString.Length - 1; // -1 because we don't want to parse the final '"'.
-        var separatorFound = false;
         var originalValueCount = destination == null ? 0 : destination.Count;
         while (current < maxLength)
         {
             current = HeaderUtilities.GetNextNonEmptyOrWhitespaceIndex(valueString, current, true,
-                out separatorFound);
+                out var separatorFound);
 
             if (current == maxLength)
             {

+ 1 - 1
src/Http/Headers/src/ContentDispositionHeaderValue.cs

@@ -435,7 +435,7 @@ public class ContentDispositionHeaderValue
         }
         else
         {
-            var processedValue = StringSegment.Empty;
+            StringSegment processedValue;
             if (parameter.EndsWith("*", StringComparison.Ordinal))
             {
                 processedValue = Encode5987(value);

+ 2 - 6
src/Http/Headers/src/ContentRangeHeaderValue.cs

@@ -264,10 +264,7 @@ public class ContentRangeHeaderValue
 
         // Read range values <from> and <to> in '<unit> <from>-<to>/<length>'
         var fromStartIndex = current;
-        var fromLength = 0;
-        var toStartIndex = 0;
-        var toLength = 0;
-        if (!TryGetRangeLength(input, ref current, out fromLength, out toStartIndex, out toLength))
+        if (!TryGetRangeLength(input, ref current, out var fromLength, out var toStartIndex, out var toLength))
         {
             return 0;
         }
@@ -288,8 +285,7 @@ public class ContentRangeHeaderValue
 
         // We may not have a length (e.g. 'bytes 1-2/*'). But if we do, parse the length now.
         var lengthStartIndex = current;
-        var lengthLength = 0;
-        if (!TryGetLengthLength(input, ref current, out lengthLength))
+        if (!TryGetLengthLength(input, ref current, out var lengthLength))
         {
             return 0;
         }

+ 1 - 2
src/Http/Headers/src/EntityTagHeaderValue.cs

@@ -246,8 +246,7 @@ public class EntityTagHeaderValue
             }
 
             var tagStartIndex = current;
-            var tagLength = 0;
-            if (HttpRuleParser.GetQuotedStringLength(input, current, out tagLength) != HttpParseResult.Parsed)
+            if (HttpRuleParser.GetQuotedStringLength(input, current, out var tagLength) != HttpParseResult.Parsed)
             {
                 return 0;
             }

+ 1 - 2
src/Http/Headers/src/HeaderUtilities.cs

@@ -414,8 +414,6 @@ public static class HeaderUtilities
         var inputLength = input.Length;
         var current = startIndex;
         var limit = startIndex + _qualityValueMaxCharCount;
-
-        var intPart = 0;
         var decPart = 0;
         var decPow = 1;
 
@@ -426,6 +424,7 @@ public static class HeaderUtilities
 
         var ch = input[current];
 
+        int intPart;
         if (ch >= '0' && ch <= '1') // Only values between 0 and 1 are accepted, according to RFC
         {
             intPart = ch - '0';

+ 1 - 1
src/Http/Headers/src/MediaTypeHeaderValue.cs

@@ -579,7 +579,7 @@ public class MediaTypeHeaderValue
 
         var current = startIndex + mediaTypeLength;
         current = current + HttpRuleParser.GetWhitespaceLength(input, current);
-        MediaTypeHeaderValue? mediaTypeHeader = null;
+        MediaTypeHeaderValue? mediaTypeHeader;
 
         // If we're not done and we have a parameter delimiter, then we have a list of parameters.
         if ((current < input.Length) && (input[current] == ';'))

+ 2 - 2
src/Http/Headers/src/RangeItemHeaderValue.cs

@@ -115,7 +115,7 @@ public class RangeItemHeaderValue
         }
 
         // Empty segments are allowed, so skip all delimiter-only segments (e.g. ", ,").
-        var current = HeaderUtilities.GetNextNonEmptyOrWhitespaceIndex(input, startIndex, true, out var separatorFound);
+        var current = HeaderUtilities.GetNextNonEmptyOrWhitespaceIndex(input, startIndex, true, separatorFound: out _);
         // It's OK if we didn't find leading separator characters. Ignore 'separatorFound'.
 
         if (current == input.Length)
@@ -135,7 +135,7 @@ public class RangeItemHeaderValue
             rangeCollection!.Add(range!);
 
             current = current + rangeLength;
-            current = HeaderUtilities.GetNextNonEmptyOrWhitespaceIndex(input, current, true, out separatorFound);
+            current = HeaderUtilities.GetNextNonEmptyOrWhitespaceIndex(input, current, true, out var separatorFound);
 
             // If the string is not consumed, we must have a delimiter, otherwise the string is not a valid
             // range list.

+ 2 - 2
src/Http/Http.Abstractions/src/HostString.cs

@@ -80,7 +80,7 @@ public readonly struct HostString : IEquatable<HostString>
     {
         get
         {
-            GetParts(_value, out var host, out var port);
+            GetParts(_value, out var host, out _);
 
             return host.ToString();
         }
@@ -94,7 +94,7 @@ public readonly struct HostString : IEquatable<HostString>
     {
         get
         {
-            GetParts(_value, out var host, out var port);
+            GetParts(_value, out _, out var port);
 
             if (!StringSegment.IsNullOrEmpty(port)
                 && int.TryParse(port.AsSpan(), NumberStyles.None, CultureInfo.InvariantCulture, out var p))

+ 2 - 4
src/Http/Owin/src/OwinEnvironment.cs

@@ -152,16 +152,14 @@ public class OwinEnvironment : IDictionary<string, object>
 
     bool IDictionary<string, object>.ContainsKey(string key)
     {
-        object value;
-        return ((IDictionary<string, object>)this).TryGetValue(key, out value);
+        return ((IDictionary<string, object>)this).TryGetValue(key, out _);
     }
 
     ICollection<string> IDictionary<string, object>.Keys
     {
         get
         {
-            object value;
-            return _entries.Where(pair => pair.Value.TryGet(_context, out value))
+            return _entries.Where(pair => pair.Value.TryGet(_context, out _))
                 .Select(pair => pair.Key).Concat(_context.Items.Keys.Select(key => Convert.ToString(key, CultureInfo.InvariantCulture))).ToList();
         }
     }

+ 1 - 2
src/Http/Owin/src/OwinFeatureCollection.cs

@@ -304,8 +304,7 @@ public class OwinFeatureCollection :
     {
         get
         {
-            object obj;
-            return Environment.TryGetValue(OwinConstants.WebSocket.AcceptAlt, out obj);
+            return Environment.TryGetValue(OwinConstants.WebSocket.AcceptAlt, out _);
         }
     }
 

+ 1 - 1
src/Http/Routing/src/Constraints/OptionalRouteConstraint.cs

@@ -47,7 +47,7 @@ public class OptionalRouteConstraint : IRouteConstraint
             throw new ArgumentNullException(nameof(values));
         }
 
-        if (values.TryGetValue(routeKey, out var value))
+        if (values.TryGetValue(routeKey, out _))
         {
             return InnerConstraint.Match(httpContext,
                                          route,

+ 1 - 2
src/Http/Routing/src/Matching/DfaMatcherBuilder.cs

@@ -447,9 +447,8 @@ internal class DfaMatcherBuilder : MatcherBuilder
 
     private static void AddLiteralNode(bool includeLabel, List<DfaNode> nextParents, DfaNode parent, string literal)
     {
-        DfaNode next = null;
         if (parent.Literals == null ||
-            !parent.Literals.TryGetValue(literal, out next))
+            !parent.Literals.TryGetValue(literal, out var next))
         {
             next = new DfaNode()
             {

+ 2 - 2
src/Http/Routing/src/Matching/HttpMethodMatcherPolicy.cs

@@ -291,11 +291,11 @@ public sealed class HttpMethodMatcherPolicy : MatcherPolicy, IEndpointComparerPo
         // We don't bother returning a 405 when the CORS preflight method doesn't exist.
         // The developer calling the API will see it as a CORS error, which is fine because
         // there isn't an endpoint to check for a CORS policy.
-        if (!edges.TryGetValue(new EdgeKey(AnyMethod, false), out var matches))
+        if (!edges.TryGetValue(new EdgeKey(AnyMethod, false), out _))
         {
             // Methods sorted for testability.
             var endpoint = CreateRejectionEndpoint(allHttpMethods);
-            matches = new List<Endpoint>() { endpoint, };
+            var matches = new List<Endpoint>() { endpoint, };
             edges[new EdgeKey(AnyMethod, false)] = matches;
         }
 

+ 23 - 28
src/Http/Shared/HttpRuleParser.cs

@@ -12,27 +12,28 @@ internal static class HttpRuleParser
 {
     private static readonly bool[] TokenChars = CreateTokenChars();
     private const int MaxNestedCount = 5;
-    private static readonly string[] DateFormats = new string[] {
-            // "r", // RFC 1123, required output format but too strict for input
-            "ddd, d MMM yyyy H:m:s 'GMT'", // RFC 1123 (r, except it allows both 1 and 01 for date and time)
-            "ddd, d MMM yyyy H:m:s", // RFC 1123, no zone - assume GMT
-            "d MMM yyyy H:m:s 'GMT'", // RFC 1123, no day-of-week
-            "d MMM yyyy H:m:s", // RFC 1123, no day-of-week, no zone
-            "ddd, d MMM yy H:m:s 'GMT'", // RFC 1123, short year
-            "ddd, d MMM yy H:m:s", // RFC 1123, short year, no zone
-            "d MMM yy H:m:s 'GMT'", // RFC 1123, no day-of-week, short year
-            "d MMM yy H:m:s", // RFC 1123, no day-of-week, short year, no zone
-
-            "dddd, d'-'MMM'-'yy H:m:s 'GMT'", // RFC 850, short year
-            "dddd, d'-'MMM'-'yy H:m:s", // RFC 850 no zone
-            "ddd, d'-'MMM'-'yyyy H:m:s 'GMT'", // RFC 850, long year
-            "ddd MMM d H:m:s yyyy", // ANSI C's asctime() format
-
-            "ddd, d MMM yyyy H:m:s zzz", // RFC 5322
-            "ddd, d MMM yyyy H:m:s", // RFC 5322 no zone
-            "d MMM yyyy H:m:s zzz", // RFC 5322 no day-of-week
-            "d MMM yyyy H:m:s", // RFC 5322 no day-of-week, no zone
-        };
+    private static readonly string[] DateFormats = new string[]
+    {
+        // "r", // RFC 1123, required output format but too strict for input
+        "ddd, d MMM yyyy H:m:s 'GMT'", // RFC 1123 (r, except it allows both 1 and 01 for date and time)
+        "ddd, d MMM yyyy H:m:s", // RFC 1123, no zone - assume GMT
+        "d MMM yyyy H:m:s 'GMT'", // RFC 1123, no day-of-week
+        "d MMM yyyy H:m:s", // RFC 1123, no day-of-week, no zone
+        "ddd, d MMM yy H:m:s 'GMT'", // RFC 1123, short year
+        "ddd, d MMM yy H:m:s", // RFC 1123, short year, no zone
+        "d MMM yy H:m:s 'GMT'", // RFC 1123, no day-of-week, short year
+        "d MMM yy H:m:s", // RFC 1123, no day-of-week, short year, no zone
+
+        "dddd, d'-'MMM'-'yy H:m:s 'GMT'", // RFC 850, short year
+        "dddd, d'-'MMM'-'yy H:m:s", // RFC 850 no zone
+        "ddd, d'-'MMM'-'yyyy H:m:s 'GMT'", // RFC 850, long year
+        "ddd MMM d H:m:s yyyy", // ANSI C's asctime() format
+
+        "ddd, d MMM yyyy H:m:s zzz", // RFC 5322
+        "ddd, d MMM yyyy H:m:s", // RFC 5322 no zone
+        "d MMM yyyy H:m:s zzz", // RFC 5322 no day-of-week
+        "d MMM yyyy H:m:s", // RFC 5322 no day-of-week, no zone
+    };
 
     internal const char CR = '\r';
     internal const char LF = '\n';
@@ -210,9 +211,6 @@ internal static class HttpRuleParser
     internal static HttpParseResult GetQuotedPairLength(StringSegment input, int startIndex, out int length)
     {
         Contract.Requires((startIndex >= 0) && (startIndex < input.Length));
-        Contract.Ensures((Contract.ValueAtReturn(out length) >= 0) &&
-            (Contract.ValueAtReturn(out length) <= (input.Length - startIndex)));
-
         length = 0;
 
         if (input[startIndex] != '\\')
@@ -260,8 +258,6 @@ internal static class HttpRuleParser
     {
         Contract.Requires(input != null);
         Contract.Requires((startIndex >= 0) && (startIndex < input.Length));
-        Contract.Ensures((Contract.Result<HttpParseResult>() != HttpParseResult.Parsed) ||
-            (Contract.ValueAtReturn<int>(out length) > 0));
 
         length = 0;
 
@@ -275,9 +271,8 @@ internal static class HttpRuleParser
         {
             // Only check whether we have a quoted char, if we have at least 3 characters left to read (i.e.
             // quoted char + closing char). Otherwise the closing char may be considered part of the quoted char.
-            var quotedPairLength = 0;
             if ((current + 2 < input.Length) &&
-                (GetQuotedPairLength(input, current, out quotedPairLength) == HttpParseResult.Parsed))
+                (GetQuotedPairLength(input, current, out var quotedPairLength) == HttpParseResult.Parsed))
             {
                 // We ignore invalid quoted-pairs. Invalid quoted-pairs may mean that it looked like a quoted pair,
                 // but we actually have a quoted-string: e.g. "\ü" ('\' followed by a char >127 - quoted-pair only

+ 1 - 1
src/Http/WebUtilities/src/BufferedReadStream.cs

@@ -422,7 +422,7 @@ public class BufferedReadStream : Stream
     private static void ValidateBuffer(byte[] buffer, int offset, int count)
     {
         // Delegate most of our validation.
-        var ignored = new ArraySegment<byte>(buffer, offset, count);
+        _ = new ArraySegment<byte>(buffer, offset, count);
         if (count == 0)
         {
             throw new ArgumentOutOfRangeException(nameof(count), "The value must be greater than zero.");

+ 1 - 3
src/Http/WebUtilities/src/MultipartReaderStream.cs

@@ -271,9 +271,6 @@ internal sealed class MultipartReaderStream : Stream
     // 2:      BBBBB
     private bool SubMatch(ArraySegment<byte> segment1, byte[] matchBytes, out int matchOffset, out int matchCount)
     {
-        // clear matchCount to zero
-        matchCount = 0;
-
         // case 1: does segment1 fully contain matchBytes?
         {
             var matchBytesLengthMinusOne = matchBytes.Length - 1;
@@ -297,6 +294,7 @@ internal sealed class MultipartReaderStream : Stream
         // case 2: does segment1 end with the start of matchBytes?
         var segmentEnd = segment1.Offset + segment1.Count;
 
+        // clear matchCount to zero
         matchCount = 0;
         for (; matchOffset < segmentEnd; matchOffset++)
         {

+ 1 - 1
src/Identity/ApiAuthorization.IdentityServer/src/Extensions/AutoRedirectEndSessionEndpoint.cs

@@ -56,7 +56,7 @@ internal class AutoRedirectEndSessionEndpoint : IEndpointHandler
 
         var client = result.ValidatedRequest?.Client;
         if (client != null &&
-            client.Properties.TryGetValue(ApplicationProfilesPropertyNames.Profile, out var type))
+            client.Properties.TryGetValue(ApplicationProfilesPropertyNames.Profile, out _))
         {
             var signInScheme = _identityServerOptions.Value.Authentication.CookieAuthenticationScheme;
             if (signInScheme != null)

+ 1 - 1
src/Identity/ApiAuthorization.IdentityServer/src/Extensions/DefaultClientRequestParametersProvider.cs

@@ -26,12 +26,12 @@ internal class DefaultClientRequestParametersProvider : IClientRequestParameters
     {
         var client = Options.Value.Clients[clientId];
         var authority = context.GetIdentityServerIssuerUri();
-        var responseType = "";
         if (!client.Properties.TryGetValue(ApplicationProfilesPropertyNames.Profile, out var type))
         {
             throw new InvalidOperationException($"Can't determine the type for the client '{clientId}'");
         }
 
+        string responseType;
         switch (type)
         {
             case ApplicationProfiles.IdentityServerSPA:

+ 3 - 3
src/Identity/EntityFrameworkCore/src/IdentityEntityFrameworkBuilderExtensions.cs

@@ -44,8 +44,8 @@ public static class IdentityEntityFrameworkBuilderExtensions
                 throw new InvalidOperationException(Resources.NotIdentityRole);
             }
 
-            Type userStoreType = null;
-            Type roleStoreType = null;
+            Type userStoreType;
+            Type roleStoreType;
             var identityContext = FindGenericBaseType(contextType, typeof(IdentityDbContext<,,,,,,,>));
             if (identityContext == null)
             {
@@ -72,7 +72,7 @@ public static class IdentityEntityFrameworkBuilderExtensions
         }
         else
         {   // No Roles
-            Type userStoreType = null;
+            Type userStoreType;
             var identityContext = FindGenericBaseType(contextType, typeof(IdentityUserContext<,,,,>));
             if (identityContext == null)
             {

+ 2 - 2
src/Identity/Extensions.Core/src/UserManager.cs

@@ -1056,7 +1056,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     public virtual Task<IdentityResult> AddClaimAsync(TUser user, Claim claim)
     {
         ThrowIfDisposed();
-        var claimStore = GetClaimStore();
+        GetClaimStore();
         if (claim == null)
         {
             throw new ArgumentNullException(nameof(claim));
@@ -1137,7 +1137,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     public virtual Task<IdentityResult> RemoveClaimAsync(TUser user, Claim claim)
     {
         ThrowIfDisposed();
-        var claimStore = GetClaimStore();
+        GetClaimStore();
         if (user == null)
         {
             throw new ArgumentNullException(nameof(user));

+ 9 - 9
src/Identity/Specification.Tests/src/UserManagerSpecificationTests.cs

@@ -192,7 +192,7 @@ public abstract class UserManagerSpecificationTestBase<TUser, TKey>
         var manager = CreateManager();
         var user = CreateTestUser();
         IdentityResultAssert.IsSuccess(await manager.CreateAsync(user));
-        var userId = await manager.GetUserIdAsync(user);
+        await manager.GetUserIdAsync(user);
     }
 
     /// <summary>
@@ -324,7 +324,7 @@ public abstract class UserManagerSpecificationTestBase<TUser, TKey>
         var user = CreateTestUser("UpdatePassword");
         IdentityResultAssert.IsSuccess(await manager.CreateAsync(user, "password"));
         Assert.True(await manager.CheckPasswordAsync(user, "password"));
-        var userId = await manager.GetUserIdAsync(user);
+        await manager.GetUserIdAsync(user);
 
         SetUserPasswordHash(user, manager.PasswordHasher.HashPassword(user, "New"));
         IdentityResultAssert.IsSuccess(await manager.UpdateAsync(user));
@@ -711,7 +711,7 @@ public abstract class UserManagerSpecificationTestBase<TUser, TKey>
         {
             IdentityResultAssert.IsSuccess(await manager.AddClaimAsync(user, c));
         }
-        var userId = await manager.GetUserIdAsync(user);
+        await manager.GetUserIdAsync(user);
         var userClaims = await manager.GetClaimsAsync(user);
         Assert.Equal(3, userClaims.Count);
         IdentityResultAssert.IsSuccess(await manager.RemoveClaimAsync(user, claims[0]));
@@ -997,7 +997,7 @@ public abstract class UserManagerSpecificationTestBase<TUser, TKey>
         Assert.NotNull(stamp);
         var token = await manager.GeneratePasswordResetTokenAsync(user);
         Assert.NotNull(token);
-        var userId = await manager.GetUserIdAsync(user);
+        await manager.GetUserIdAsync(user);
         IdentityResultAssert.IsSuccess(await manager.ResetPasswordAsync(user, token, newPassword));
         Assert.False(await manager.CheckPasswordAsync(user, password));
         Assert.True(await manager.CheckPasswordAsync(user, newPassword));
@@ -1065,7 +1065,7 @@ public abstract class UserManagerSpecificationTestBase<TUser, TKey>
         var user2 = CreateTestUser();
         IdentityResultAssert.IsSuccess(await manager.CreateAsync(user));
         IdentityResultAssert.IsSuccess(await manager.CreateAsync(user2));
-        var userId = await manager.GetUserIdAsync(user);
+        await manager.GetUserIdAsync(user);
         var token = await manager.GenerateUserTokenAsync(user, "Static", "test");
 
         Assert.True(await manager.VerifyUserTokenAsync(user, "Static", "test", token));
@@ -1095,7 +1095,7 @@ public abstract class UserManagerSpecificationTestBase<TUser, TKey>
         IdentityResultAssert.IsSuccess(await manager.CreateAsync(user));
         var token = await manager.GenerateEmailConfirmationTokenAsync(user);
         Assert.NotNull(token);
-        var userId = await manager.GetUserIdAsync(user);
+        await manager.GetUserIdAsync(user);
         IdentityResultAssert.IsSuccess(await manager.ConfirmEmailAsync(user, token));
         Assert.True(await manager.IsEmailConfirmedAsync(user));
         IdentityResultAssert.IsSuccess(await manager.SetEmailAsync(user, null));
@@ -1387,7 +1387,7 @@ public abstract class UserManagerSpecificationTestBase<TUser, TKey>
         var user = CreateTestUser(phoneNumber: "123-456-7890");
         IdentityResultAssert.IsSuccess(await manager.CreateAsync(user));
         var token1 = await manager.GenerateChangePhoneNumberTokenAsync(user, "111-111-1111");
-        Assert.True(int.TryParse(token1, out var ignored));
+        Assert.True(int.TryParse(token1, out _));
     }
 
     /// <summary>
@@ -1474,7 +1474,7 @@ public abstract class UserManagerSpecificationTestBase<TUser, TKey>
         IdentityResultAssert.IsSuccess(await manager.CreateAsync(user));
         const string num1 = "111-123-4567";
         const string num2 = "111-111-1111";
-        var userId = await manager.GetUserIdAsync(user);
+        await manager.GetUserIdAsync(user);
         var token1 = await manager.GenerateChangePhoneNumberTokenAsync(user, num1);
 
         var token2 = await manager.GenerateChangePhoneNumberTokenAsync(user, num2);
@@ -1805,7 +1805,7 @@ public abstract class UserManagerSpecificationTestBase<TUser, TKey>
         var manager = CreateManager();
         var user = CreateTestUser();
         IdentityResultAssert.IsSuccess(await manager.CreateAsync(user));
-        var userId = await manager.GetUserIdAsync(user);
+        await manager.GetUserIdAsync(user);
         var factors = await manager.GetValidTwoFactorProvidersAsync(user);
         Assert.NotNull(factors);
         Assert.False(factors.Any());

+ 1 - 1
src/Identity/UI/src/Areas/Identity/Pages/V4/Account/LoginWith2fa.cshtml.cs

@@ -124,7 +124,7 @@ internal class LoginWith2faModel<TUser> : LoginWith2faModel where TUser : class
 
         var result = await _signInManager.TwoFactorAuthenticatorSignInAsync(authenticatorCode, rememberMe, Input.RememberMachine);
 
-        var userId = await _userManager.GetUserIdAsync(user);
+        await _userManager.GetUserIdAsync(user);
 
         if (result.Succeeded)
         {

+ 1 - 1
src/Identity/UI/src/Areas/Identity/Pages/V4/Account/LoginWithRecoveryCode.cshtml.cs

@@ -107,7 +107,7 @@ internal class LoginWithRecoveryCodeModel<TUser> : LoginWithRecoveryCodeModel wh
 
         var result = await _signInManager.TwoFactorRecoveryCodeSignInAsync(recoveryCode);
 
-        var userId = await _userManager.GetUserIdAsync(user);
+        await _userManager.GetUserIdAsync(user);
 
         if (result.Succeeded)
         {

+ 1 - 1
src/Identity/UI/src/Areas/Identity/Pages/V4/Account/Manage/DeletePersonalData.cshtml.cs

@@ -103,7 +103,7 @@ internal class DeletePersonalDataModel<TUser> : DeletePersonalDataModel where TU
         }
 
         var result = await _userManager.DeleteAsync(user);
-        var userId = await _userManager.GetUserIdAsync(user);
+        await _userManager.GetUserIdAsync(user);
         if (!result.Succeeded)
         {
             throw new InvalidOperationException("Unexpected error occurred deleting user.");

+ 1 - 1
src/Identity/UI/src/Areas/Identity/Pages/V4/Account/Manage/EnableAuthenticator.cshtml.cs

@@ -141,7 +141,7 @@ internal class EnableAuthenticatorModel<TUser> : EnableAuthenticatorModel where
         }
 
         await _userManager.SetTwoFactorEnabledAsync(user, true);
-        var userId = await _userManager.GetUserIdAsync(user);
+        await _userManager.GetUserIdAsync(user);
         _logger.LogInformation(LoggerEventIds.TwoFAEnabled, "User has enabled 2FA with an authenticator app.");
 
         StatusMessage = "Your authenticator app has been verified.";

+ 1 - 1
src/Identity/UI/src/Areas/Identity/Pages/V4/Account/Manage/ResetAuthenticator.cshtml.cs

@@ -71,7 +71,7 @@ internal class ResetAuthenticatorModel<TUser> : ResetAuthenticatorModel where TU
 
         await _userManager.SetTwoFactorEnabledAsync(user, false);
         await _userManager.ResetAuthenticatorKeyAsync(user);
-        var userId = await _userManager.GetUserIdAsync(user);
+        await _userManager.GetUserIdAsync(user);
         _logger.LogInformation(LoggerEventIds.AuthenticationAppKeyReset, "User has reset their authentication app key.");
 
         await _signInManager.RefreshSignInAsync(user);

+ 1 - 1
src/Identity/UI/src/Areas/Identity/Pages/V5/Account/LoginWith2fa.cshtml.cs

@@ -124,7 +124,7 @@ internal class LoginWith2faModel<TUser> : LoginWith2faModel where TUser : class
 
         var result = await _signInManager.TwoFactorAuthenticatorSignInAsync(authenticatorCode, rememberMe, Input.RememberMachine);
 
-        var userId = await _userManager.GetUserIdAsync(user);
+        await _userManager.GetUserIdAsync(user);
 
         if (result.Succeeded)
         {

+ 1 - 1
src/Identity/UI/src/Areas/Identity/Pages/V5/Account/LoginWithRecoveryCode.cshtml.cs

@@ -107,7 +107,7 @@ internal class LoginWithRecoveryCodeModel<TUser> : LoginWithRecoveryCodeModel wh
 
         var result = await _signInManager.TwoFactorRecoveryCodeSignInAsync(recoveryCode);
 
-        var userId = await _userManager.GetUserIdAsync(user);
+        await _userManager.GetUserIdAsync(user);
 
         if (result.Succeeded)
         {

+ 1 - 1
src/Identity/UI/src/Areas/Identity/Pages/V5/Account/Manage/DeletePersonalData.cshtml.cs

@@ -103,7 +103,7 @@ internal class DeletePersonalDataModel<TUser> : DeletePersonalDataModel where TU
         }
 
         var result = await _userManager.DeleteAsync(user);
-        var userId = await _userManager.GetUserIdAsync(user);
+        await _userManager.GetUserIdAsync(user);
         if (!result.Succeeded)
         {
             throw new InvalidOperationException($"Unexpected error occurred deleting user.");

+ 1 - 1
src/Identity/UI/src/Areas/Identity/Pages/V5/Account/Manage/EnableAuthenticator.cshtml.cs

@@ -141,7 +141,7 @@ internal class EnableAuthenticatorModel<TUser> : EnableAuthenticatorModel where
         }
 
         await _userManager.SetTwoFactorEnabledAsync(user, true);
-        var userId = await _userManager.GetUserIdAsync(user);
+        await _userManager.GetUserIdAsync(user);
         _logger.LogInformation(LoggerEventIds.TwoFAEnabled, "User has enabled 2FA with an authenticator app.");
 
         StatusMessage = "Your authenticator app has been verified.";

+ 1 - 1
src/Identity/UI/src/Areas/Identity/Pages/V5/Account/Manage/ResetAuthenticator.cshtml.cs

@@ -71,7 +71,7 @@ internal class ResetAuthenticatorModel<TUser> : ResetAuthenticatorModel where TU
 
         await _userManager.SetTwoFactorEnabledAsync(user, false);
         await _userManager.ResetAuthenticatorKeyAsync(user);
-        var userId = await _userManager.GetUserIdAsync(user);
+        await _userManager.GetUserIdAsync(user);
         _logger.LogInformation(LoggerEventIds.AuthenticationAppKeyReset, "User has reset their authentication app key.");
 
         await _signInManager.RefreshSignInAsync(user);

+ 1 - 2
src/Middleware/Rewrite/src/ApacheModRewrite/ConditionPatternParser.cs

@@ -215,8 +215,7 @@ internal class ConditionPatternParser
         if (results.ConditionType == ConditionType.IntComp)
         {
             // If the type is an integer, verify operand is actually an int
-            int res;
-            if (!int.TryParse(results.Operand, NumberStyles.None, CultureInfo.InvariantCulture, out res))
+            if (!int.TryParse(results.Operand, NumberStyles.None, CultureInfo.InvariantCulture, out _))
             {
                 return false;
             }

+ 1 - 1
src/Middleware/Rewrite/src/IISUrlRewrite/UrlRewriteFileParser.cs

@@ -268,7 +268,7 @@ internal class UrlRewriteFileParser
     private static TEnum ParseEnum<TEnum>(XElement element, string rewriteTag, TEnum defaultValue)
         where TEnum : struct
     {
-        TEnum enumResult = default(TEnum);
+        TEnum enumResult;
         var attribute = element.Attribute(rewriteTag);
         if (attribute == null)
         {

+ 1 - 2
src/Middleware/Rewrite/src/RewriteRule.cs

@@ -65,8 +65,7 @@ internal class RewriteRule : IRule
                 HostString host;
                 PathString pathString;
                 QueryString query;
-                FragmentString fragment;
-                UriHelper.FromAbsolute(result, out scheme, out host, out pathString, out query, out fragment);
+                UriHelper.FromAbsolute(result, out scheme, out host, out pathString, out query, out _);
 
                 request.Scheme = scheme;
                 request.Host = host;

+ 1 - 2
src/Middleware/Rewrite/src/UrlActions/RewriteAction.cs

@@ -66,8 +66,7 @@ internal class RewriteAction : UrlAction
             HostString host;
             PathString path;
             QueryString query;
-            FragmentString fragment;
-            UriHelper.FromAbsolute(pattern, out scheme, out host, out path, out query, out fragment);
+            UriHelper.FromAbsolute(pattern, out scheme, out host, out path, out query, out _);
 
             if (query.HasValue)
             {

+ 2 - 2
src/Middleware/Spa/SpaServices.Extensions/src/Util/EventedStreamReader.cs

@@ -91,8 +91,8 @@ internal class EventedStreamReader
 
             OnChunk(new ArraySegment<char>(buf, 0, chunkLength));
 
-            int lineBreakPos = -1;
-            int startPos = 0;
+            int lineBreakPos;
+            var startPos = 0;
 
             // get all the newlines
             while ((lineBreakPos = Array.IndexOf(buf, '\n', startPos, chunkLength - startPos)) >= 0 && startPos < chunkLength)

+ 0 - 1
src/Mvc/Mvc.Core/src/ApplicationModels/ApplicationModelFactory.cs

@@ -66,7 +66,6 @@ internal class ApplicationModelFactory
         Func<ApplicationModel, ControllerModel, ActionModel, SelectorModel, TResult> flattener)
     {
         var results = new List<TResult>();
-        var errors = new Dictionary<MethodInfo, IList<string>>();
 
         var actionsByMethod = new Dictionary<MethodInfo, List<(ActionModel, SelectorModel)>>();
         var actionsByRouteName = new Dictionary<string, List<(ActionModel, SelectorModel)>>(StringComparer.OrdinalIgnoreCase);

+ 3 - 3
src/Mvc/Mvc.Core/src/Formatters/AcceptHeaderParser.cs

@@ -68,7 +68,7 @@ internal static class AcceptHeaderParser
             return true;
         }
 
-        var currentIndex = GetNextNonEmptyOrWhitespaceIndex(value, index, out var separatorFound);
+        var currentIndex = GetNextNonEmptyOrWhitespaceIndex(value, index, out _);
 
         if (currentIndex == value.Length)
         {
@@ -84,7 +84,7 @@ internal static class AcceptHeaderParser
         // In case we don't find the next separator, we simply advance the cursor to the
         // end of the string to signal that we are done parsing.
         var result = default(MediaTypeSegmentWithQuality);
-        var length = 0;
+        int length;
         try
         {
             length = GetMediaTypeWithQualityLength(value, currentIndex, out result);
@@ -108,7 +108,7 @@ internal static class AcceptHeaderParser
         }
 
         currentIndex = currentIndex + length;
-        currentIndex = GetNextNonEmptyOrWhitespaceIndex(value, currentIndex, out separatorFound);
+        currentIndex = GetNextNonEmptyOrWhitespaceIndex(value, currentIndex, out var separatorFound);
 
         // If we've not reached the end of the string, then we must have a separator.
         // E. g application/json, text/plain <- We must be at ',' otherwise, we've failed parsing.

+ 1 - 1
src/Mvc/Mvc.Core/src/Infrastructure/ResourceInvoker.cs

@@ -142,7 +142,7 @@ internal abstract class ResourceInvoker
     internal ValueTask ReleaseResourcesCore(IDisposable? scope)
     {
         Exception? releaseException = null;
-        ValueTask releaseResult = default;
+        ValueTask releaseResult;
         try
         {
             releaseResult = ReleaseResources();

+ 1 - 1
src/Mvc/Mvc.RazorPages/src/ApplicationModels/AuthorizationPageApplicationModelProvider.cs

@@ -44,7 +44,7 @@ internal class AuthorizationPageApplicationModelProvider : IPageApplicationModel
         {
             pageModel.Filters.Add(AuthorizationApplicationModelProvider.GetFilter(_policyProvider, authorizeData));
         }
-        foreach (var attribute in pageModel.HandlerTypeAttributes.OfType<IAllowAnonymous>())
+        foreach (var _ in pageModel.HandlerTypeAttributes.OfType<IAllowAnonymous>())
         {
             pageModel.Filters.Add(new AllowAnonymousFilter());
         }

+ 1 - 1
src/Mvc/Mvc.TagHelpers/src/Cache/DistributedCacheTagHelperService.cs

@@ -161,7 +161,7 @@ public class DistributedCacheTagHelperService : IDistributedCacheTagHelperServic
                     // Remove the worker task before setting the result.
                     // If the result is null, other threads would potentially
                     // acquire it otherwise.
-                    _workers.TryRemove(key, out result);
+                    _workers.TryRemove(key, out _);
 
                     // Notify all other awaiters to render the content
                     tcs.TrySetResult(content);

+ 2 - 3
src/Mvc/Mvc.TagHelpers/src/GlobbingUrlBuilder.cs

@@ -233,10 +233,9 @@ public class GlobbingUrlBuilder
             var result = 0;
             var xEnumerator = new StringTokenizer(xNoExt, PathSeparator).GetEnumerator();
             var yEnumerator = new StringTokenizer(yNoExt, PathSeparator).GetEnumerator();
-            StringSegment ySegment;
             while (TryGetNextSegment(ref xEnumerator, out var xSegment))
             {
-                if (!TryGetNextSegment(ref yEnumerator, out ySegment))
+                if (!TryGetNextSegment(ref yEnumerator, out var ySegment))
                 {
                     // Different path depths (right is shorter), so shallower path wins.
                     return 1;
@@ -259,7 +258,7 @@ public class GlobbingUrlBuilder
                     StringComparison.Ordinal);
             }
 
-            if (TryGetNextSegment(ref yEnumerator, out ySegment))
+            if (TryGetNextSegment(ref yEnumerator, out _))
             {
                 // Different path depths (left is shorter). Shallower path wins.
                 return -1;

+ 1 - 1
src/Mvc/Mvc.TagHelpers/src/InputTagHelper.cs

@@ -286,7 +286,7 @@ public class InputTagHelper : TagHelper
         {
             if (modelExplorer.Model != null)
             {
-                if (!bool.TryParse(modelExplorer.Model.ToString(), out var potentialBool))
+                if (!bool.TryParse(modelExplorer.Model.ToString(), out _))
                 {
                     throw new InvalidOperationException(Resources.FormatInputTagHelper_InvalidStringResult(
                         ForAttributeName,

+ 0 - 2
src/Mvc/Mvc.TagHelpers/src/PartialTagHelper.cs

@@ -118,12 +118,10 @@ public class PartialTagHelper : TagHelper
 
         var result = FindView(Name);
         var viewSearchedLocations = result.SearchedLocations;
-        var fallBackViewSearchedLocations = Enumerable.Empty<string>();
 
         if (!result.Success && !string.IsNullOrEmpty(FallbackName))
         {
             result = FindView(FallbackName);
-            fallBackViewSearchedLocations = result.SearchedLocations;
         }
 
         if (!result.Success)

+ 0 - 1
src/Mvc/Mvc.ViewFeatures/src/FormatWeekHelper.cs

@@ -10,7 +10,6 @@ internal static class FormatWeekHelper
     public static string GetFormattedWeek(ModelExplorer modelExplorer)
     {
         var value = modelExplorer.Model;
-        var metadata = modelExplorer.Metadata;
 
         if (value is DateTimeOffset dateTimeOffset)
         {

+ 0 - 2
src/ProjectTemplates/Shared/Project.cs

@@ -234,8 +234,6 @@ public class Project : IDisposable
 
     internal async Task<ProcessResult> RunDotNetEfUpdateDatabaseAsync()
     {
-        var assembly = typeof(ProjectFactoryFixture).Assembly;
-
         var args = "--verbose --no-build database update";
 
         // Only run one instance of 'dotnet new' at once, as a workaround for

+ 1 - 1
src/Security/Authentication/JwtBearer/src/JwtBearerHandler.cs

@@ -49,7 +49,7 @@ public class JwtBearerHandler : AuthenticationHandler<JwtBearerOptions>
     /// <returns></returns>
     protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
     {
-        string? token = null;
+        string? token;
         try
         {
             // Give application opportunity to find from a different location, adjust, or reject token

+ 1 - 1
src/Servers/HttpSys/src/RequestProcessing/ResponseBody.cs

@@ -315,7 +315,7 @@ internal class ResponseBody : Stream
 
         // Make sure all validation is performed before this computes the headers
         var flags = ComputeLeftToWrite(data.Count);
-        uint statusCode = 0;
+        uint statusCode;
         var chunked = _requestContext.Response.BoundaryType == BoundaryType.Chunked;
         var asyncResult = new ResponseStreamAsyncResult(this, data, chunked, cancellationToken);
         uint bytesSent = 0;

+ 2 - 2
src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs

@@ -51,7 +51,7 @@ public class IISExpressDeployer : IISDeployerBase
             // and contentRoot points to the project directory so you get things like static assets.
             // For a published app both point to the publish directory.
             var dllRoot = CheckIfPublishIsRequired();
-            var contentRoot = string.Empty;
+            string contentRoot;
             if (DeploymentParameters.PublishApplicationBeforeDeployment)
             {
                 DotnetPublish();
@@ -66,7 +66,7 @@ public class IISExpressDeployer : IISDeployerBase
                 var executableExtension = DeploymentParameters.ApplicationType == ApplicationType.Portable ? ".dll" : ".exe";
                 var entryPoint = Path.Combine(dllRoot, DeploymentParameters.ApplicationName + executableExtension);
 
-                var executableName = string.Empty;
+                string executableName;
                 var executableArgs = string.Empty;
 
                 if (DeploymentParameters.RuntimeFlavor == RuntimeFlavor.CoreClr && DeploymentParameters.ApplicationType == ApplicationType.Portable)

+ 1 - 1
src/Servers/IIS/IntegrationTesting.IIS/src/LoggingHandler.cs

@@ -38,7 +38,7 @@ public class LoggingHandler : DelegatingHandler
             var readAsStreamAsync = await response.Content.ReadAsStreamAsync();
             var buffer = new byte[_maxBodyLogSize];
             var offset = 0;
-            var count = 0;
+            int count;
             do
             {
                 count = await readAsStreamAsync.ReadAsync(buffer.AsMemory(offset));

+ 2 - 3
src/Servers/Kestrel/Core/src/Internal/Http3/Http3FrameReader.cs

@@ -23,9 +23,8 @@ internal class Http3FrameReader
     {
         framePayload = ReadOnlySequence<byte>.Empty;
         SequencePosition consumed;
-        SequencePosition examined;
 
-        var type = VariableLengthIntegerHelper.GetInteger(readableBuffer, out consumed, out examined);
+        var type = VariableLengthIntegerHelper.GetInteger(readableBuffer, out consumed, out _);
         if (type == -1)
         {
             return false;
@@ -33,7 +32,7 @@ internal class Http3FrameReader
 
         var firstLengthBuffer = readableBuffer.Slice(consumed);
 
-        var length = VariableLengthIntegerHelper.GetInteger(firstLengthBuffer, out consumed, out examined);
+        var length = VariableLengthIntegerHelper.GetInteger(firstLengthBuffer, out consumed, out _);
 
         // Make sure the whole frame is buffered
         if (length == -1)

+ 5 - 5
src/Servers/Kestrel/shared/KnownHeaders.cs

@@ -485,7 +485,7 @@ public class KnownHeaders
 
         private static string NameTerm(string name, int offset, int count, string type, string suffix)
         {
-            GetMaskAndComp(name, offset, count, out var mask, out var comp);
+            GetMaskAndComp(name, offset, count, out var mask, out _);
 
             if (offset == 0)
             {
@@ -518,21 +518,21 @@ public class KnownHeaders
 
         private static string EqualityTerm(string name, int offset, int count, string type, string suffix)
         {
-            GetMaskAndComp(name, offset, count, out var mask, out var comp);
+            GetMaskAndComp(name, offset, count, out _, out var comp);
 
             return $"0x{comp:x}{suffix}";
         }
 
         private static string Term(string name, int offset, int count, string type, string suffix)
         {
-            GetMaskAndComp(name, offset, count, out var mask, out var comp);
+            GetMaskAndComp(name, offset, count, out _, out _);
 
             return $"({NameTerm(name, offset, count, type, suffix)} == {EqualityTerm(name, offset, count, type, suffix)})";
         }
 
         public string FirstNameIgnoreCaseSegment()
         {
-            var result = "";
+            string result;
             if (Name.Length >= 8)
             {
                 result = NameTerm(Name, 0, 8, "ulong", "uL");
@@ -655,7 +655,7 @@ public class KnownHeaders
 
         public string EqualIgnoreCaseBytesFirstTerm()
         {
-            var result = "";
+            string result;
             if (Name.Length >= 8)
             {
                 result = Term(Name, 0, 8, "ulong", "uL");

+ 1 - 1
src/Shared/E2ETesting/BrowserFixture.cs

@@ -72,7 +72,7 @@ public class BrowserFixture : IAsyncLifetime
     public async Task DisposeAsync()
     {
         var browsers = await Task.WhenAll(_browsers.Values);
-        foreach (var (browser, log) in browsers)
+        foreach (var (browser, _) in browsers)
         {
             browser?.Quit();
             browser?.Dispose();

+ 0 - 1
src/Shared/HttpSys/RequestProcessing/HeaderParser.cs

@@ -50,7 +50,6 @@ internal static class HeaderParser
                 if (!string.IsNullOrWhiteSpace(subValue))
                 {
                     yield return subValue.Trim();
-                    start = current + 1;
                 }
             }
         }

+ 3 - 3
src/Shared/HttpSys/RequestProcessing/RequestUriBuilder.cs

@@ -125,9 +125,9 @@ internal static class RequestUriBuilder
         int byte2 = 0, byte3 = 0, byte4 = 0;
 
         // anticipate more bytes
-        var currentDecodeBits = 0;
-        var byteCount = 1;
-        var expectValueMin = 0;
+        int currentDecodeBits;
+        int byteCount;
+        int expectValueMin;
         if ((byte1 & 0xE0) == 0xC0)
         {
             // 110x xxxx, expect one more byte

+ 0 - 1
src/Shared/ResultsTests/FileStreamResultTestBase.cs

@@ -196,7 +196,6 @@ public abstract class FileStreamResultTestBase
         var readStream = new MemoryStream(byteArray);
 
         var httpContext = GetHttpContext();
-        var requestHeaders = httpContext.Request.GetTypedHeaders();
         httpContext.Request.Headers.Range = rangeString;
         httpContext.Request.Method = HttpMethods.Get;
         httpContext.Response.Body = new MemoryStream();

+ 6 - 6
src/Shared/UrlDecoder/UrlDecoder.cs

@@ -118,9 +118,9 @@ internal class UrlDecoder
         int byte2 = 0, byte3 = 0, byte4 = 0;
 
         // anticipate more bytes
-        var currentDecodeBits = 0;
-        var byteCount = 1;
-        var expectValueMin = 0;
+        int currentDecodeBits;
+        int byteCount;
+        int expectValueMin;
         if ((byte1 & 0xE0) == 0xC0)
         {
             // 110x xxxx, expect one more byte
@@ -454,9 +454,9 @@ internal class UrlDecoder
         }
 
         // anticipate more code units
-        var currentDecodeBits = 0;
-        var codeUnitCount = 1;
-        var expectValueMin = 0;
+        int currentDecodeBits;
+        int codeUnitCount;
+        int expectValueMin;
         if ((codeUnit1 & 0xE0) == 0xC0)
         {
             // 110x xxxx, expect one more code unit

+ 1 - 1
src/SignalR/clients/csharp/Client.SourceGenerator/src/HubServerProxyGenerator.Emitter.cs

@@ -105,7 +105,7 @@ namespace {_spec.GetterNamespace}
                 signature.Append(')');
 
                 // Prepare method body
-                var body = "";
+                string body;
                 if (methodSpec.Support != SupportClassification.Supported)
                 {
                     body = methodSpec.SupportHint is null

+ 1 - 1
src/SignalR/common/testassets/Tests.Utils/TestClient.cs

@@ -160,7 +160,7 @@ internal
 
             switch (message)
             {
-                case StreamItemMessage result:
+                case StreamItemMessage:
                     throw new NotSupportedException("Use 'StreamAsync' to call a streaming method");
                 case CompletionMessage completion:
                     return completion;

+ 1 - 2
src/SignalR/server/StackExchangeRedis/src/RedisHubLifetimeManager.cs

@@ -85,12 +85,11 @@ public class RedisHubLifetimeManager<THub> : HubLifetimeManager<THub>, IDisposab
         var feature = new RedisFeature();
         connection.Features.Set<IRedisFeature>(feature);
 
-        var connectionTask = Task.CompletedTask;
         var userTask = Task.CompletedTask;
 
         _connections.Add(connection);
 
-        connectionTask = SubscribeToConnection(connection);
+        var connectionTask = SubscribeToConnection(connection);
 
         if (!string.IsNullOrEmpty(connection.UserIdentifier))
         {

+ 1 - 1
src/Testing/src/xunit/QuarantinedTestTraitDiscoverer.cs

@@ -13,7 +13,7 @@ public class QuarantinedTestTraitDiscoverer : ITraitDiscoverer
 {
     public IEnumerable<KeyValuePair<string, string>> GetTraits(IAttributeInfo traitAttribute)
     {
-        if (traitAttribute is ReflectionAttributeInfo attribute && attribute.Attribute is QuarantinedTestAttribute quarantinedTestAttribute)
+        if (traitAttribute is ReflectionAttributeInfo { Attribute: QuarantinedTestAttribute })
         {
             yield return new KeyValuePair<string, string>("Quarantined", "true");
         }