【问题标题】:Code analyzer which warn dev to use async methods警告开发人员使用异步方法的代码分析器
【发布时间】:2019-01-11 02:28:03
【问题描述】:

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

所以调用 ToList() 而不是它的异步等效 ToListAsync() 应该是一个警告。

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))

所以在 firstOrDefault 的情况下,如果存在异步扩展,它应该警告开发人员使用它。

PS1。谢谢你们所有的缺点,没有理解我的问题,甚至没有问。

PS2。选项 1.https://github.com/Microsoft/vs-threading/blob/master/doc/analyzers/VSTHRD103.md

【问题讨论】:

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

标签: c# visual-studio visual-studio-code code-analysis roslyn-code-analysis


【解决方案1】:

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

图库链接:https://resharper-plugins.jetbrains.com/packages/AsyncConverter.AsyncConverter/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2012-04-14
    • 1970-01-01
    • 2019-11-16
    相关资源
    最近更新 更多