Diagnostic Analyzers¶
The following are the diagnostic analyzers installed with the Microsoft.VisualStudio.Threading.Analyzers NuGet package. Learn more about how to install and configure these analyzers.
ID | Title | Severity | Supports | Default diagnostic severity
—- | — | — | — | — |
VSTHRD001 | Avoid legacy thread switching methods | Critical | 1st rule | 🔡 Warning
VSTHRD002 | Avoid problematic synchronous waits | Critical | 2nd rule | Warning
VSTHRD003 | Avoid awaiting foreign Tasks | Critical | 3rd rule | Warning
VSTHRD004 | Await SwitchToMainThreadAsync | Critical | 1st rule | Error
VSTHRD010 | Invoke single-threaded types on Main thread | Critical | 1st rule | Warning
VSTHRD011 | Use AsyncLazy<T>
| Critical | 3rd rule | Error
VSTHRD012 | Provide JoinableTaskFactory where allowed | Critical | All rules | Warning
VSTHRD100 | Avoid async void
methods | Advisory | | Warning
VSTHRD101 | Avoid unsupported async delegates | Advisory | VSTHRD100 | Warning
VSTHRD102 | Implement internal logic asynchronously | Advisory | 2nd rule | Info
VSTHRD103 | Call async methods when in an async method | Advisory | | Warning
VSTHRD104 | Offer async option | Advisory | | Info
VSTHRD105 | Avoid method overloads that assume TaskScheduler.Current
| Advisory | | Warning
VSTHRD106 | Use InvokeAsync
to raise async events | Advisory | | Warning
VSTHRD107 | Await Task within using expression | Advisory | | Error
VSTHRD108 | Assert thread affinity unconditionally | Advisory | 1st rule, VSTHRD010 | Warning
VSTHRD109 | Switch instead of assert in async methods | Advisory | 1st rule | Error
VSTHRD110 | Observe result of async calls | Advisory | | Warning
VSTHRD111 | Use .ConfigureAwait(bool)
| Advisory | | Hidden
VSTHRD112 | Implement System.IAsyncDisposable
| Advisory | | Info
VSTHRD113 | Check for System.IAsyncDisposable
| Advisory | | Info
VSTHRD114 | Avoid returning null from a Task
-returning method. | Advisory | | Warning
VSTHRD200 | Use Async
naming convention | Guideline | VSTHRD103 | Warning
Severity descriptions¶
Severity | IDs | Analyzer catches… ——— | ——- | ——————- Critical | 1-99 | Code issues that often result in deadlocks Advisory | 100-199 | Code that may perform differently than intended or lead to occasional deadlocks Guideline | 200-299 | Code that deviates from best practices and may limit the benefits of other analyzers
Default diagnostic severity legend¶
| Icon | Meaning | | —- | ——- | | 🔡 | The analyzer only produces diagnostics when configured.
Configuration¶
Some analyzers’ behavior can be configured. See our configuration topic for more information.