Browse Source

Cleanup IDE errors in SignalR (#33918)

Brennan 4 năm trước cách đây
mục cha
commit
f3ae70fdbb

+ 3 - 0
.editorconfig

@@ -244,6 +244,9 @@ dotnet_diagnostic.CA1846.severity = suggestion
 dotnet_diagnostic.CA2008.severity = suggestion
 # CA2012: Use ValueTask correctly
 dotnet_diagnostic.CA2012.severity = suggestion
+# IDE0044: Make field readonly
+dotnet_diagnostic.IDE0044.severity = suggestion
+
 
 # CA2016: Forward the 'CancellationToken' parameter to methods that take one
 dotnet_diagnostic.CA2016.severity = suggestion

+ 1 - 1
src/Shared/ValueStopwatch/ValueStopwatch.cs

@@ -10,7 +10,7 @@ namespace Microsoft.Extensions.Internal
     {
         private static readonly double TimestampToTicks = TimeSpan.TicksPerSecond / (double)Stopwatch.Frequency;
 
-        private long _startTimestamp;
+        private readonly long _startTimestamp;
 
         public bool IsActive => _startTimestamp != 0;
 

+ 1 - 1
src/SignalR/clients/csharp/Client.Core/src/Internal/DefaultRetryPolicy.cs

@@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.Internal
             null,
         };
 
-        private TimeSpan?[] _retryDelays;
+        private readonly TimeSpan?[] _retryDelays;
 
         public DefaultRetryPolicy()
         {

+ 1 - 1
src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/WebSocketsTransport.cs

@@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Client.Internal
         private readonly ILogger _logger;
         private readonly TimeSpan _closeTimeout;
         private volatile bool _aborted;
-        private HttpConnectionOptions _httpConnectionOptions;
+        private readonly HttpConnectionOptions _httpConnectionOptions;
 
         private IDuplexPipe? _transport;
 

+ 9 - 9
src/SignalR/common/Http.Connections.Common/src/NegotiateProtocol.cs

@@ -17,23 +17,23 @@ namespace Microsoft.AspNetCore.Http.Connections
     public static class NegotiateProtocol
     {
         private const string ConnectionIdPropertyName = "connectionId";
-        private static JsonEncodedText ConnectionIdPropertyNameBytes = JsonEncodedText.Encode(ConnectionIdPropertyName);
+        private static readonly JsonEncodedText ConnectionIdPropertyNameBytes = JsonEncodedText.Encode(ConnectionIdPropertyName);
         private const string ConnectionTokenPropertyName = "connectionToken";
-        private static JsonEncodedText ConnectionTokenPropertyNameBytes = JsonEncodedText.Encode(ConnectionTokenPropertyName);
+        private static readonly JsonEncodedText ConnectionTokenPropertyNameBytes = JsonEncodedText.Encode(ConnectionTokenPropertyName);
         private const string UrlPropertyName = "url";
-        private static JsonEncodedText UrlPropertyNameBytes = JsonEncodedText.Encode(UrlPropertyName);
+        private static readonly JsonEncodedText UrlPropertyNameBytes = JsonEncodedText.Encode(UrlPropertyName);
         private const string AccessTokenPropertyName = "accessToken";
-        private static JsonEncodedText AccessTokenPropertyNameBytes = JsonEncodedText.Encode(AccessTokenPropertyName);
+        private static readonly JsonEncodedText AccessTokenPropertyNameBytes = JsonEncodedText.Encode(AccessTokenPropertyName);
         private const string AvailableTransportsPropertyName = "availableTransports";
-        private static JsonEncodedText AvailableTransportsPropertyNameBytes = JsonEncodedText.Encode(AvailableTransportsPropertyName);
+        private static readonly JsonEncodedText AvailableTransportsPropertyNameBytes = JsonEncodedText.Encode(AvailableTransportsPropertyName);
         private const string TransportPropertyName = "transport";
-        private static JsonEncodedText TransportPropertyNameBytes = JsonEncodedText.Encode(TransportPropertyName);
+        private static readonly JsonEncodedText TransportPropertyNameBytes = JsonEncodedText.Encode(TransportPropertyName);
         private const string TransferFormatsPropertyName = "transferFormats";
-        private static JsonEncodedText TransferFormatsPropertyNameBytes = JsonEncodedText.Encode(TransferFormatsPropertyName);
+        private static readonly JsonEncodedText TransferFormatsPropertyNameBytes = JsonEncodedText.Encode(TransferFormatsPropertyName);
         private const string ErrorPropertyName = "error";
-        private static JsonEncodedText ErrorPropertyNameBytes = JsonEncodedText.Encode(ErrorPropertyName);
+        private static readonly JsonEncodedText ErrorPropertyNameBytes = JsonEncodedText.Encode(ErrorPropertyName);
         private const string NegotiateVersionPropertyName = "negotiateVersion";
-        private static JsonEncodedText NegotiateVersionPropertyNameBytes = JsonEncodedText.Encode(NegotiateVersionPropertyName);
+        private static readonly JsonEncodedText NegotiateVersionPropertyNameBytes = JsonEncodedText.Encode(NegotiateVersionPropertyName);
 
         // Use C#7.3's ReadOnlySpan<byte> optimization for static data https://vcsjones.com/2019/02/01/csharp-readonly-span-bytes-static/
         // Used to detect ASP.NET SignalR Server connection attempt

+ 1 - 1
src/SignalR/common/Http.Connections/src/Internal/HttpConnectionContext.cs

@@ -42,7 +42,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
         private PipeWriterStream _applicationStream;
         private IDuplexPipe _application;
         private IDictionary<object, object?>? _items;
-        private CancellationTokenSource _connectionClosedTokenSource;
+        private readonly CancellationTokenSource _connectionClosedTokenSource;
 
         private CancellationTokenSource? _sendCts;
         private bool _activeSend;

+ 3 - 0
src/SignalR/common/Http.Connections/src/LongPollingOptions.cs

@@ -1,3 +1,6 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
 using System;
 
 namespace Microsoft.AspNetCore.Http.Connections

+ 10 - 10
src/SignalR/common/Protocols.Json/src/Protocol/JsonHubProtocol.cs

@@ -23,25 +23,25 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
     public sealed class JsonHubProtocol : IHubProtocol
     {
         private const string ResultPropertyName = "result";
-        private static JsonEncodedText ResultPropertyNameBytes = JsonEncodedText.Encode(ResultPropertyName);
+        private static readonly JsonEncodedText ResultPropertyNameBytes = JsonEncodedText.Encode(ResultPropertyName);
         private const string ItemPropertyName = "item";
-        private static JsonEncodedText ItemPropertyNameBytes = JsonEncodedText.Encode(ItemPropertyName);
+        private static readonly JsonEncodedText ItemPropertyNameBytes = JsonEncodedText.Encode(ItemPropertyName);
         private const string InvocationIdPropertyName = "invocationId";
-        private static JsonEncodedText InvocationIdPropertyNameBytes = JsonEncodedText.Encode(InvocationIdPropertyName);
+        private static readonly JsonEncodedText InvocationIdPropertyNameBytes = JsonEncodedText.Encode(InvocationIdPropertyName);
         private const string StreamIdsPropertyName = "streamIds";
-        private static JsonEncodedText StreamIdsPropertyNameBytes = JsonEncodedText.Encode(StreamIdsPropertyName);
+        private static readonly JsonEncodedText StreamIdsPropertyNameBytes = JsonEncodedText.Encode(StreamIdsPropertyName);
         private const string TypePropertyName = "type";
-        private static JsonEncodedText TypePropertyNameBytes = JsonEncodedText.Encode(TypePropertyName);
+        private static readonly JsonEncodedText TypePropertyNameBytes = JsonEncodedText.Encode(TypePropertyName);
         private const string ErrorPropertyName = "error";
-        private static JsonEncodedText ErrorPropertyNameBytes = JsonEncodedText.Encode(ErrorPropertyName);
+        private static readonly JsonEncodedText ErrorPropertyNameBytes = JsonEncodedText.Encode(ErrorPropertyName);
         private const string AllowReconnectPropertyName = "allowReconnect";
-        private static JsonEncodedText AllowReconnectPropertyNameBytes = JsonEncodedText.Encode(AllowReconnectPropertyName);
+        private static readonly JsonEncodedText AllowReconnectPropertyNameBytes = JsonEncodedText.Encode(AllowReconnectPropertyName);
         private const string TargetPropertyName = "target";
-        private static JsonEncodedText TargetPropertyNameBytes = JsonEncodedText.Encode(TargetPropertyName);
+        private static readonly JsonEncodedText TargetPropertyNameBytes = JsonEncodedText.Encode(TargetPropertyName);
         private const string ArgumentsPropertyName = "arguments";
-        private static JsonEncodedText ArgumentsPropertyNameBytes = JsonEncodedText.Encode(ArgumentsPropertyName);
+        private static readonly JsonEncodedText ArgumentsPropertyNameBytes = JsonEncodedText.Encode(ArgumentsPropertyName);
         private const string HeadersPropertyName = "headers";
-        private static JsonEncodedText HeadersPropertyNameBytes = JsonEncodedText.Encode(HeadersPropertyName);
+        private static readonly JsonEncodedText HeadersPropertyNameBytes = JsonEncodedText.Encode(HeadersPropertyName);
 
         private const string ProtocolName = "json";
         private const int ProtocolVersion = 1;

+ 2 - 2
src/SignalR/common/Shared/AsyncEnumerableAdapters.cs

@@ -92,7 +92,7 @@ namespace Microsoft.AspNetCore.SignalR.Internal
 
             private class CancelableEnumerator<T> : IAsyncEnumerator<T>
             {
-                private IAsyncEnumerator<T> _asyncEnumerator;
+                private readonly IAsyncEnumerator<T> _asyncEnumerator;
                 private readonly CancellationTokenRegistration _cancellationTokenRegistration;
 
                 public T Current => (T)_asyncEnumerator.Current;
@@ -118,7 +118,7 @@ namespace Microsoft.AspNetCore.SignalR.Internal
 
         private class BoxedAsyncEnumerator<T> : IAsyncEnumerator<object?>
         {
-            private IAsyncEnumerator<T> _asyncEnumerator;
+            private readonly IAsyncEnumerator<T> _asyncEnumerator;
 
             public BoxedAsyncEnumerator(IAsyncEnumerator<T> asyncEnumerator)
             {

+ 4 - 1
src/SignalR/common/Shared/DuplexPipe.cs

@@ -1,3 +1,6 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
 using System.Buffers;
 
 namespace System.IO.Pipelines
@@ -38,4 +41,4 @@ namespace System.IO.Pipelines
             }
         }
     }
-}
+}

+ 4 - 1
src/SignalR/common/SignalR.Common/src/Protocol/StreamBindingFailureMessage.cs

@@ -1,4 +1,7 @@
-using System;
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System;
 using System.Collections.Generic;
 using System.Runtime.ExceptionServices;
 using System.Text;

+ 2 - 2
src/SignalR/server/Core/src/HubConnectionContext.cs

@@ -46,8 +46,8 @@ namespace Microsoft.AspNetCore.SignalR
         private bool _clientTimeoutActive;
         private volatile bool _connectionAborted;
         private volatile bool _allowReconnect = true;
-        private int _streamBufferCapacity;
-        private long? _maxMessageSize;
+        private readonly int _streamBufferCapacity;
+        private readonly long? _maxMessageSize;
         private bool _receivedMessageTimeoutEnabled;
         private long _receivedMessageElapsedTicks;
         private long _receivedMessageTimestamp;

+ 4 - 4
src/SignalR/server/Core/src/Internal/HubConnectionBinder.cs

@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// Copyright (c) .NET Foundation. All rights reserved.
 // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
 
 using System;
@@ -9,8 +9,8 @@ namespace Microsoft.AspNetCore.SignalR.Internal
 {
     internal class HubConnectionBinder<THub> : IInvocationBinder where THub : Hub
     {
-        private HubDispatcher<THub> _dispatcher;
-        private HubConnectionContext _connection;
+        private readonly HubDispatcher<THub> _dispatcher;
+        private readonly HubConnectionContext _connection;
 
         public HubConnectionBinder(HubDispatcher<THub> dispatcher, HubConnectionContext connection)
         {
@@ -33,4 +33,4 @@ namespace Microsoft.AspNetCore.SignalR.Internal
             return _connection.StreamTracker.GetStreamItemType(streamId);
         }
     }
-}
+}

+ 2 - 2
src/SignalR/server/Core/src/StreamTracker.cs

@@ -17,7 +17,7 @@ namespace Microsoft.AspNetCore.SignalR
     {
         private static readonly MethodInfo _buildConverterMethod = typeof(StreamTracker).GetMethods(BindingFlags.NonPublic | BindingFlags.Static).Single(m => m.Name.Equals("BuildStream"));
         private readonly object[] _streamConverterArgs;
-        private ConcurrentDictionary<string, IStreamConverter> _lookup = new ConcurrentDictionary<string, IStreamConverter>();
+        private readonly ConcurrentDictionary<string, IStreamConverter> _lookup = new ConcurrentDictionary<string, IStreamConverter>();
 
         public StreamTracker(int streamBufferCapacity)
         {
@@ -100,7 +100,7 @@ namespace Microsoft.AspNetCore.SignalR
 
         private class ChannelConverter<T> : IStreamConverter
         {
-            private Channel<T?> _channel;
+            private readonly Channel<T?> _channel;
 
             public ChannelConverter(int streamBufferCapacity)
             {