ErrorProne.NET is a set of Roslyn-based analyzers that will help you to write correct code. The idea is similar to Google's error-prone but instead of Java, the analyzers are focusing on correctness (and, maybe, performance) of C# programs.
Add the following nuget package to you project: https://www.nuget.org/packages/ErrorProne.NET.CoreAnalyzers/
| Id | Description |
|---|---|
| EPC14 | ConfigureAwait(false) call is redundant |
| EPC15 | ConfigureAwait(false) must be used |
| EPC16 | Awaiting a result of a null-conditional expression will cause NullReferenceException |
| EPC17 | Avoid async-void delegates |
| EPC18 | A task instance is implicitly converted to a string |
| EPC26 | Do not use tasks in using block |
| EPC27 | Avoid async void methods |
| EPC31 | Do not return null for Task-like types |
| EPC32 | TaskCompletionSource should use RunContinuationsAsynchronously |
| EPC33 | Do not use Thread.Sleep in async methods |
| EPC35 | Do not block unnecessarily in async methods |
| EPC36 | Do not use async delegates with Task.Factory.StartNew and TaskCreationOptions.LongRunning |
| EPC37 | Do not validate arguments in async methods |
| Id | Description |
|---|---|
| EPC19 | Observe and Dispose a 'CancellationTokenRegistration' to avoid memory leaks |
| EPC20 | Avoid using default ToString implementation |
| EPC28 | Do not use ExcludeFromCodeCoverage on partial classes |
| EPC29 | ExcludeFromCodeCoverageAttribute should provide a message |
| EPC30 | Method calls itself recursively |
| ERP041 | EventSource class should be sealed |
| ERP042 | EventSource implementation is not correct |
| Id | Description |
|---|---|
| ERP031 | The API is not thread-safe |
| Id | Description |
|---|---|
| EPC11 | Suspicious equality implementation |
| EPC12 | Suspicious exception handling: only the 'Message' property is observed in the catch block |
| EPC13 | Suspiciously unobserved result |
| EPC34 | Method return value marked with MustUseResultAttribute must be used |
| ERP021 | Incorrect exception propagation |
| ERP022 | Unobserved exception in a generic exception handler |
| Id | Description |
|---|---|
| EPC23 | Avoid using Enumerable.Contains on HashSet |
| EPC24 | A hash table "unfriendly" type is used as the key in a hash table |
| EPC25 | Avoid using default Equals or HashCode implementation from structs |