【问题标题】:Regex to find async methods without ConfigureAwait(false) in VS Finder正则表达式在 VS Finder 中查找没有 ConfigureAwait(false) 的异步方法
【发布时间】:2021-07-22 07:04:07
【问题描述】:

我有许多没有ConfigureAwait(false) 结尾的遗留异步测试。我在 Visual Studio 2019 中使用搜索实用程序。我的正则表达式是:await .+(?!ConfigureAwait\(false\);) 但它会找到以“await”开头并且还有“ConfigureAwait(false)”的代码。我希望它只显示具有“异步”但没有“ConfigureAwait(false))”的行;

【问题讨论】:

  • 使用await(?!.*ConfigureAwait\(false\);$) .+await(?!.*ConfigureAwait\(false\);\r?$) .+
  • 您的视觉工作室尚未对此提出信息/警告?
  • 不,它没有。尝试了很多次 - 它通过匹配搜索栏中的所有内容而无需负前瞻来工作
  • 安装 Roslynator 代码分析器github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/… - 您可以将消息过滤到错误,甚至您可以单击灯泡并在解决方案中修复所有问题(vs 会为您添加调用)跨度>
  • 如果有的话,你肯定会在 library 代码中想要.ConfigureAwait(false),而不是在 "tests" 中,我认为你的意思是 unit测试?”

标签: c# .net regex


【解决方案1】:

更好的解决方案是安装“SonarLint”(如果您使用的是 Visual Studio,则需要检查其他 IDE 的可用性)。一旦它分析了您的代码,您就可以轻松过滤掉缺少“ConfigureAwait”的“等待”调用(如果我没记错的话,它们将被归类为“主要问题”)。

【讨论】:

  • 如果您使用 Resharper(或 Rider IDE),则可以 Alt-Tab 选择项目使用的 ConfigureAwait 类型(库或 UI)。一旦设置好,您只需一个 Alt-Tab 即可使用 ConfigureAwait(false) 设置一个语句(或最多所有语句)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 2018-09-10
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多