C# 警告开发人员使用异步方法的代码分析器

C# 警告开发人员使用异步方法的代码分析器,c#,visual-studio,visual-studio-code,code-analysis,roslyn-code-analysis,C#,Visual Studio,Visual Studio Code,Code Analysis,Roslyn Code Analysis,我想通过使用分析器来改进我的遗留代码,但我找不到“强制”异步使用的规则 因此,调用ToList()而不是其异步等价的ToListSync()应该是一个警告 public static TSource FirstOrDefault<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate) public static Task

我想通过使用分析器来改进我的遗留代码,但我找不到“强制”异步使用的规则

因此,调用ToList()而不是其异步等价的ToListSync()应该是一个警告

public static TSource FirstOrDefault<TSource>(this IQueryable<TSource> source,
      Expression<Func<TSource, bool>> predicate)

 public static Task<TSource> FirstOrDefaultAsync<TSource>(
      [NotNull] this IQueryable<TSource> source,
      [NotNull] Expression<Func<TSource, bool>> predicate,
      CancellationToken cancellationToken = default (CancellationToken))
public static TSource FirstOrDefault(此IQueryable源,
表达式(谓词)
公共静态任务FirstOrDefaultAsync(
[NotNull]此IQueryable源,
[NotNull]表达式谓词,
CancellationToken CancellationToken=默认值(CancellationToken))
所以在firstOrDefault的情况下,如果异步扩展存在,它应该警告开发人员使用它

PS1。谢谢你们在不理解我的问题甚至不问我的情况下犯下的所有错误


PS2。备选案文1

虽然我不是Roslyn分析仪,但我使用了ReSharper(付费Visual Studio扩展)的异步转换器插件,它似乎符合您的分析仪要求。它将按照约定将同步方法重构为异步方法,如果存在方法重载,则选择带有CancellationToken的方法重载


库链接:

编译器如何知道该方法应该是异步的?@John也许我不清楚。让我更新问题。@John我已经更新了问题,所以如果有一个方法(按照约定)的名称相同,但以
Async
结尾,您想要一个规则来告诉开发人员使用它吗?是的,我确实理解了你的问题的措辞,并且想知道开发人员在方法名称后面没有加上“Async”后缀的情况,即使这是一个异步方法,或者(另一种解释)为什么你想强制所有方法都是异步的。简言之:我觉得你的问题不够清楚。现在是:)@John我已经找到了命名约定的规则如何强制为返回任务的方法命名异步。现在更详细地了解阻塞调用的用法。它对于调用数据库、elasticsearch和其他一些云服务特别重要。