.NET代码分析器未检测到异步API错误用法,求推荐可用分析器
能检测此类异步API错误用法的.NET代码分析器
你的代码中,创建Task.Delay实例后未等待就直接检查IsCompleted,这种错误确实无法被CS4014或VSTHRD110检测到——前者仅在直接丢弃异步方法返回的Task(未赋值给变量)时触发,后者侧重检测async方法内未等待的Task,而你的方法是普通void方法且持有了Task变量,因此避开了现有规则。
以下是可以检测此类场景的分析器:
- SonarAnalyzer for .NET:规则
S1699会标记所有被赋值但未被await、返回、或通过Wait()/Result同步等待的Task,完全覆盖你代码中的场景。 - Roslynator:规则
RCS1090("Call 'await' on task")会检测到持有Task变量但未执行等待操作的情况,触发警告提示你需要等待Task完成。 - StyleCop Analyzers:部分扩展规则也能覆盖类似未正确处理Task的场景,但需要确认启用对应规则集。
这些分析器都可以通过NuGet包安装到项目中,配置对应的规则严重性后,就能在编译或IDE实时分析时捕获这类错误。
内容的提问来源于stack exchange,提问作者stefan.seeland
相关产品推荐
相关产品推荐

