【发布时间】: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