Lindhart.Analyser.MissingAwaitWarning 2.1.0-beta

Additional Details

This package has logic that should find possible missing awaits in lambda functions. But it does also report false positives in some edge cases.

This is a prerelease version of Lindhart.Analyser.MissingAwaitWarning.
There is a newer prerelease version of this package available.
See the version list below for details.
The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package Lindhart.Analyser.MissingAwaitWarning --version 2.1.0-beta
NuGet\Install-Package Lindhart.Analyser.MissingAwaitWarning -Version 2.1.0-beta
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Lindhart.Analyser.MissingAwaitWarning" Version="2.1.0-beta" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Lindhart.Analyser.MissingAwaitWarning --version 2.1.0-beta
#r "nuget: Lindhart.Analyser.MissingAwaitWarning, 2.1.0-beta"
#r directive can be used in F# Interactive and Polyglot Notebooks. 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.1.0-beta&prerelease

// Install Lindhart.Analyser.MissingAwaitWarning as a Cake Tool
#tool nuget:?package=Lindhart.Analyser.MissingAwaitWarning&version=2.1.0-beta&prerelease

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
		}
	}
}

Strict option

The analyser also has a strict option that can be enabled by folding out the analyser in the dependency tree in Visual Studio, right clicking the strict rule and selecting the severity.

The strict option also gives warnings in lambda functions and storing the result of a Task returning method in a variable.

Notes

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.

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

  • .NETStandard 2.0

    • No dependencies.

NuGet packages (81)

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

Package Downloads
DogmaSolutions.Contracts

Package Description

DogmaSolutions.Log4NetExtensions

Package Description

DogmaSolutions.PrimitiveTypes

Package Description

DogmaSolutions.Csv

Package Description

DogmaSolutions.FileSystem

Package Description

GitHub repositories (5)

Showing the top 5 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
MrCMS/MrCMS
Mr CMS is an open source C# MVC CMS Framework
veldtech/bot
Miki Discord Bot
nullpainter/sanchez
False-colour geostationary satellite image compositor
Version Downloads Last updated
3.0.0-beta 35,827 8/9/2022
2.0.0 3,120,220 12/7/2020
2.0.0-beta2 609 10/26/2020
2.0.0-beta 401 10/26/2020
1.2.1 48,444 9/28/2020
1.2.1-beta 676 5/8/2020
1.2.0 413,295 6/6/2019
1.2.0-beta 638 4/16/2019
1.0.1 169,650 8/10/2018
1.0.0 50,145 1/6/2018