diff --git a/.editorconfig b/.editorconfig
index 4cbf46047..81d812533 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -128,7 +128,11 @@ resharper_web_config_module_not_resolved_highlighting=warning
resharper_web_config_type_not_resolved_highlighting=warning
resharper_web_config_wrong_module_highlighting=warning
+# .NET Analzyer settings
+# VSTHRD200: Use "Async" suffix for awaitable methods
dotnet_diagnostic.VSTHRD200.severity = none
+# CA2007: Do not directly await a Task
+dotnet_diagnostic.CA2007.severity = error
[*.{cs,cshtml}]
charset=utf-8
diff --git a/Directory.Build.props b/Directory.Build.props
index 5e69a2809..2b19c9ec0 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -13,6 +13,8 @@
https://github.com/OmniSharp/csharp-language-server-protocol
lsp;language server;language server protocol;language client;language server client
$(MSBuildThisFileDirectory)\lsp.snk
+
+ true
true
diff --git a/sample/SampleServer/Program.cs b/sample/SampleServer/Program.cs
index fa2fabf71..d86b96a49 100644
--- a/sample/SampleServer/Program.cs
+++ b/sample/SampleServer/Program.cs
@@ -83,7 +83,7 @@ private static async Task MainAsync(string[] args)
);
workDone = manager;
- await Task.Delay(2000);
+ await Task.Delay(2000).ConfigureAwait(false);
manager.OnNext(
new WorkDoneProgressReport {
@@ -102,7 +102,7 @@ private static async Task MainAsync(string[] args)
}
);
- await Task.Delay(2000);
+ await Task.Delay(2000).ConfigureAwait(false);
workDone.OnNext(
new WorkDoneProgressReport {
@@ -115,12 +115,12 @@ private static async Task MainAsync(string[] args)
)
.OnStarted(
async (languageServer, token) => {
- using var manager = await languageServer.WorkDoneManager.Create(new WorkDoneProgressBegin { Title = "Doing some work..." });
+ using var manager = await languageServer.WorkDoneManager.Create(new WorkDoneProgressBegin { Title = "Doing some work..." }).ConfigureAwait(false);
manager.OnNext(new WorkDoneProgressReport { Message = "doing things..." });
- await Task.Delay(10000);
+ await Task.Delay(10000).ConfigureAwait(false);
manager.OnNext(new WorkDoneProgressReport { Message = "doing things... 1234" });
- await Task.Delay(10000);
+ await Task.Delay(10000).ConfigureAwait(false);
manager.OnNext(new WorkDoneProgressReport { Message = "doing things... 56789" });
var logger = languageServer.Services.GetService>();
@@ -130,7 +130,7 @@ private static async Task MainAsync(string[] args)
}, new ConfigurationItem {
Section = "terminal",
}
- );
+ ).ConfigureAwait(false);
var baseConfig = new JObject();
foreach (var config in languageServer.Configuration.AsEnumerable())
@@ -149,9 +149,9 @@ private static async Task MainAsync(string[] args)
logger.LogInformation("Scoped Config: {Config}", scopedConfig);
}
)
- );
+ ).ConfigureAwait(false);
- await server.WaitForExit;
+ await server.WaitForExit.ConfigureAwait(false);
}
}
diff --git a/sample/SampleServer/SemanticTokensHandler.cs b/sample/SampleServer/SemanticTokensHandler.cs
index 30b0b0c41..6f1a5db36 100644
--- a/sample/SampleServer/SemanticTokensHandler.cs
+++ b/sample/SampleServer/SemanticTokensHandler.cs
@@ -25,7 +25,7 @@ public SemanticTokensHandler(ILogger logger) =>
SemanticTokensParams request, CancellationToken cancellationToken
)
{
- var result = await base.Handle(request, cancellationToken);
+ var result = await base.Handle(request, cancellationToken).ConfigureAwait(false);
return result;
}
@@ -33,7 +33,7 @@ public SemanticTokensHandler(ILogger logger) =>
SemanticTokensRangeParams request, CancellationToken cancellationToken
)
{
- var result = await base.Handle(request, cancellationToken);
+ var result = await base.Handle(request, cancellationToken).ConfigureAwait(false);
return result;
}
@@ -42,7 +42,7 @@ public SemanticTokensHandler(ILogger logger) =>
CancellationToken cancellationToken
)
{
- var result = await base.Handle(request, cancellationToken);
+ var result = await base.Handle(request, cancellationToken).ConfigureAwait(false);
return result;
}
@@ -54,7 +54,7 @@ CancellationToken cancellationToken
using var typesEnumerator = RotateEnum(SemanticTokenType.Defaults).GetEnumerator();
using var modifiersEnumerator = RotateEnum(SemanticTokenModifier.Defaults).GetEnumerator();
// you would normally get this from a common source that is managed by current open editor, current active editor, etc.
- var content = await File.ReadAllTextAsync(DocumentUri.GetFileSystemPath(identifier), cancellationToken);
+ var content = await File.ReadAllTextAsync(DocumentUri.GetFileSystemPath(identifier), cancellationToken).ConfigureAwait(false);
await Task.Yield();
foreach (var (line, text) in content.Split('\n').Select((text, line) => (line, text)))
diff --git a/sample/SampleServer/TextDocumentHandler.cs b/sample/SampleServer/TextDocumentHandler.cs
index 3d78c6f9b..701b67278 100644
--- a/sample/SampleServer/TextDocumentHandler.cs
+++ b/sample/SampleServer/TextDocumentHandler.cs
@@ -51,7 +51,7 @@ public override async Task Handle(DidOpenTextDocumentParams notification,
{
await Task.Yield();
_logger.LogInformation("Hello world!");
- await _configuration.GetScopedConfiguration(notification.TextDocument.Uri, token);
+ await _configuration.GetScopedConfiguration(notification.TextDocument.Uri, token).ConfigureAwait(false);
return Unit.Value;
}
@@ -84,7 +84,7 @@ CancellationToken cancellationToken
)
{
// you would normally get this from a common source that is managed by current open editor, current active editor, etc.
- var content = await File.ReadAllTextAsync(DocumentUri.GetFileSystemPath(request), cancellationToken);
+ var content = await File.ReadAllTextAsync(DocumentUri.GetFileSystemPath(request), cancellationToken).ConfigureAwait(false);
var lines = content.Split('\n');
var symbols = new List();
for (var lineIndex = 0; lineIndex < lines.Length; lineIndex++)
@@ -160,7 +160,7 @@ CancellationToken cancellationToken
using var partialResults = _progressManager.For(request, cancellationToken);
if (partialResults != null)
{
- await Task.Delay(2000, cancellationToken);
+ await Task.Delay(2000, cancellationToken).ConfigureAwait(false);
reporter.OnNext(
new WorkDoneProgressReport {
@@ -168,7 +168,7 @@ CancellationToken cancellationToken
Percentage = 20
}
);
- await Task.Delay(500, cancellationToken);
+ await Task.Delay(500, cancellationToken).ConfigureAwait(false);
reporter.OnNext(
new WorkDoneProgressReport {
@@ -176,7 +176,7 @@ CancellationToken cancellationToken
Percentage = 40
}
);
- await Task.Delay(500, cancellationToken);
+ await Task.Delay(500, cancellationToken).ConfigureAwait(false);
reporter.OnNext(
new WorkDoneProgressReport {
@@ -184,7 +184,7 @@ CancellationToken cancellationToken
Percentage = 50
}
);
- await Task.Delay(500, cancellationToken);
+ await Task.Delay(500, cancellationToken).ConfigureAwait(false);
partialResults.OnNext(
new[] {
@@ -209,7 +209,7 @@ CancellationToken cancellationToken
Percentage = 70
}
);
- await Task.Delay(500, cancellationToken);
+ await Task.Delay(500, cancellationToken).ConfigureAwait(false);
reporter.OnNext(
new WorkDoneProgressReport {
diff --git a/src/Dap.Client/DebugAdapterClient.cs b/src/Dap.Client/DebugAdapterClient.cs
index f2ec06604..3141c0605 100644
--- a/src/Dap.Client/DebugAdapterClient.cs
+++ b/src/Dap.Client/DebugAdapterClient.cs
@@ -154,7 +154,7 @@ await DebugAdapterEventingHelper.Run(
token
).ConfigureAwait(false);
- await _initializedComplete.ToTask(token, _scheduler);
+ await _initializedComplete.ToTask(token, _scheduler).ConfigureAwait(false);
await DebugAdapterEventingHelper.Run(
_startedDelegates,
diff --git a/src/Dap.Testing/DebugAdapterProtocolTestBase.cs b/src/Dap.Testing/DebugAdapterProtocolTestBase.cs
index 2cbe87d4e..14d12b7f6 100644
--- a/src/Dap.Testing/DebugAdapterProtocolTestBase.cs
+++ b/src/Dap.Testing/DebugAdapterProtocolTestBase.cs
@@ -79,7 +79,7 @@ Action serverOptionsAction
return await Observable.FromAsync(_client.Initialize)
.ForkJoin(Observable.FromAsync(_server.Initialize), (_, _) => ( _client, _server ))
- .ToTask(CancellationToken);
+ .ToTask(CancellationToken).ConfigureAwait(false);
}
}
}
diff --git a/src/JsonRpc/OutputHandler.cs b/src/JsonRpc/OutputHandler.cs
index f20d06d3b..4402c7c28 100644
--- a/src/JsonRpc/OutputHandler.cs
+++ b/src/JsonRpc/OutputHandler.cs
@@ -132,7 +132,7 @@ private async Task ProcessOutputStream(CancellationToken cancellationToken)
{
do
{
- var value = await _queue.ReadAsync(cancellationToken);
+ var value = await _queue.ReadAsync(cancellationToken).ConfigureAwait(false);
if (value is ITraceData traceData)
{
_activityTracingStrategy?.ApplyOutgoing(traceData);
diff --git a/src/Protocol/Features/Document/CallHierarchyFeature.cs b/src/Protocol/Features/Document/CallHierarchyFeature.cs
index b0d9b5aef..cdfa8096c 100644
--- a/src/Protocol/Features/Document/CallHierarchyFeature.cs
+++ b/src/Protocol/Features/Document/CallHierarchyFeature.cs
@@ -393,7 +393,7 @@ protected CallHierarchyHandlerBase() : this(Guid.NewGuid())
public sealed override async Task?> Handle(CallHierarchyPrepareParams request, CancellationToken cancellationToken)
{
- var response = await HandlePrepare(request, cancellationToken);
+ var response = await HandlePrepare(request, cancellationToken).ConfigureAwait(false);
return Container.From(response?.Select(CallHierarchyItem.From)!);
}
diff --git a/src/Server/LanguageServer.Shutdown.cs b/src/Server/LanguageServer.Shutdown.cs
index 9f260c60d..7b52b0ae8 100644
--- a/src/Server/LanguageServer.Shutdown.cs
+++ b/src/Server/LanguageServer.Shutdown.cs
@@ -24,8 +24,8 @@ public partial class LanguageServer : IExitHandler, IShutdownHandler
#pragma warning disable VSTHRD100
public async void ForcefulShutdown()
{
- await ( (IShutdownHandler) this ).Handle(ShutdownParams.Instance, CancellationToken.None);
- await ( (IExitHandler) this ).Handle(ExitParams.Instance, CancellationToken.None);
+ await ( (IShutdownHandler) this ).Handle(ShutdownParams.Instance, CancellationToken.None).ConfigureAwait(false);
+ await ( (IExitHandler) this ).Handle(ExitParams.Instance, CancellationToken.None).ConfigureAwait(false);
}
async Task IRequestHandler.Handle(ExitParams request, CancellationToken token)
diff --git a/test/.editorconfig b/test/.editorconfig
index e076c5fc2..f508dbdfa 100644
--- a/test/.editorconfig
+++ b/test/.editorconfig
@@ -1,4 +1,5 @@
[*]
+dotnet_diagnostic.CA2007.severity = none
dotnet_diagnostic.CS0618.severity = none
dotnet_diagnostic.CS4014.severity = none
dotnet_diagnostic.CS1998.severity = none