AsyncConverter
Plugin for resharper, for converting code for async.
Install / Use
/learn @BigBabay/AsyncConverterREADME
AsyncConverter
This is an implementation of a ReSharper Plugin that converts your synchronous code to its asynchronous version and helps you to write your own asynchronous applications.
Convert Any Method to Its Async Implementation
AsyncConverter can:
- Replace a returning type with generic or non-generic
Task<T>orTask - Rename a hierarchy of overridden methods from <MethodName> to <MethodName>Async
- Add the
System.Threading.Tasksto a usings declaration - Analyze a method body and replace the every synchronous call with its
asyncimplementation if exists. - Analyze a method body and replace the every
.Resultcall with theawaitcall. - Analyze usage of a processed method. If the method is called from
asynccontext the AsyncConverter will replace its call with theawaitexpression, otherwise it will just call.Resultor.Wait()

Highlightings
Convert Wait() and Result to await
Under async method replace Wait() and Result to await.


Return null as Task
If expected returning type is Task or Task<T> but null is returned instead, AsyncConverter warn you that execution point can await expected 'Task' and get NullReferenceException.

Async suffix in a method name
AsyncConverter will suggest you to add the Async suffix to an asynchronous method name in all cases except:
- Classes inherited from
ControllerorApiController - Methods of test classes. NUnit, XUnit and MsUnit are supported. This may be turn off in Resharper → Options → Code Inspection → Async Converter → Async Suffix

Suggesting to configure an every await expression with ConfigureAwait
<details> <summary>Suggesting ConfigureAwait demo</summary>
Suggesting to use the async method if exists
If a synchronous method is called in the async context and its asynchronous implementation exists (e.g method has same signature Async suffix and Task or Task<T> as the returning type) AsyncConverter will suggest you to use this asynchronous implementation.
Do not suggest to use obsolete async methods.
<details> <summary>Suggesting method name with Async suffix demo</summary>
Async/await ignoring
An await expression can be ignored if this await expression is the single in a method and awaited value is returned from a method.

