Lindhart.Analyser.MissingAwaitWarning 2.0.0

When using dependency injection and async-await pattern it is possible to end up with an interface with a method that returns a Task. If this interface method is used in a synchronous method there is a likelihood that it will erroneously be run as a fire and forget method. In this situation this analyser generates a warning.

Install-Package Lindhart.Analyser.MissingAwaitWarning -Version 2.0.0
dotnet add package Lindhart.Analyser.MissingAwaitWarning --version 2.0.0
<PackageReference Include="Lindhart.Analyser.MissingAwaitWarning" Version="2.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Lindhart.Analyser.MissingAwaitWarning --version 2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Lindhart.Analyser.MissingAwaitWarning, 2.0.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Lindhart.Analyser.MissingAwaitWarning as a Cake Addin
#addin nuget:?package=Lindhart.Analyser.MissingAwaitWarning&version=2.0.0

// Install Lindhart.Analyser.MissingAwaitWarning as a Cake Tool
#tool nuget:?package=Lindhart.Analyser.MissingAwaitWarning&version=2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

unused-task-warning

When using dependency injection and async-await pattern it is possible to end up with an interface with a method that returns a Task. If this interface method is used in a synchronous method there is a likelihood that it will erroneously be run as a fire and forget method (which will not trigger inbuilt warning CS4014). In this situation this analyser generates a warning.

Can both be used as a Visual Studio extension or preferably as a project analyser available from NuGet.

Example:

using System.Threading.Tasks;

namespace AsyncAwaitProblem
{
	public interface ICallee
	{
		bool ProblemSolved { get; }
		Task SolveProblemAsync();
	}

	public class Callee : ICallee
	{
		public bool ProblemSolved { get; set; }

		public async Task SolveProblemAsync()
		{
			await Task.Delay(10);
			ProblemSolved = true;
		}
	}
	
	public class Caller
	{
		public bool DoCall()
		{
			ICallee xxx = new Callee();

			// This analyser will give a warning at the following line
			xxx.SolveProblemAsync(); // This is most likely an undesired fire and forget. 

			return xxx.ProblemSolved; // Will return false - we expected it to return true
		}
	}
}

Note that this analyser currently only checks for the currently known awaitable types. If another 'Awaitable' type is returned this analyser will not give the warning. This might be fixed in a future version.

unused-task-warning

When using dependency injection and async-await pattern it is possible to end up with an interface with a method that returns a Task. If this interface method is used in a synchronous method there is a likelihood that it will erroneously be run as a fire and forget method (which will not trigger inbuilt warning CS4014). In this situation this analyser generates a warning.

Can both be used as a Visual Studio extension or preferably as a project analyser available from NuGet.

Example:

using System.Threading.Tasks;

namespace AsyncAwaitProblem
{
	public interface ICallee
	{
		bool ProblemSolved { get; }
		Task SolveProblemAsync();
	}

	public class Callee : ICallee
	{
		public bool ProblemSolved { get; set; }

		public async Task SolveProblemAsync()
		{
			await Task.Delay(10);
			ProblemSolved = true;
		}
	}
	
	public class Caller
	{
		public bool DoCall()
		{
			ICallee xxx = new Callee();

			// This analyser will give a warning at the following line
			xxx.SolveProblemAsync(); // This is most likely an undesired fire and forget. 

			return xxx.ProblemSolved; // Will return false - we expected it to return true
		}
	}
}

Note that this analyser currently only checks for the currently known awaitable types. If another 'Awaitable' type is returned this analyser will not give the warning. This might be fixed in a future version.

Release Notes

Package is no longer signed. Upgraded target framework from .net Standard 1.3 -> 2.0. Changed from license file to license expression (still MIT license). Added more types.

  • .NETStandard 2.0

    • No dependencies.

NuGet packages (10)

Showing the top 5 NuGet packages that depend on Lindhart.Analyser.MissingAwaitWarning:

Package Downloads
Miki.Framework
Miki discord bot framework
Miki.Framework.Commands
Core library for command scaffolding and handling for Discord bots
Miki.Framework.Arguments
Argument parsing providers for input strings to types.
Miki.Framework.Commands.Scopes
Flags to allow commands for users.
Miki.Framework.Commands.Permissions
ACL for your commands

GitHub repositories (3)

Showing the top 3 popular GitHub repositories that depend on Lindhart.Analyser.MissingAwaitWarning:

Repository Stars
RayTale/Ray
项目停止更新,新项目:https://github.com/RayTale/Vertex
RayTale/Vertex
Vertex is a distributed, ultimately consistent, event traceable cross platform framework based on Orleans, which is used to build high-performance, high throughput, low latency, scalable distributed applications
Mikibot/bot
Miki Discord Bot

Version History

Version Downloads Last updated
2.0.0 101,349 12/7/2020
2.0.0-beta2 435 10/26/2020
2.0.0-beta 202 10/26/2020
1.2.1 29,998 9/28/2020
1.2.1-beta 416 5/8/2020
1.2.0 254,408 6/6/2019
1.2.0-beta 397 4/16/2019
1.0.1 141,754 8/10/2018
1.0.0 26,359 1/6/2018