【问题标题】:Resharper search pattern to detect methods that return a value that is not usedResharper 搜索模式以检测返回未使用值的方法
【发布时间】:2014-05-15 09:27:01
【问题描述】:

如果可能,我想要一个更清晰的模式来检测未处理的 IDisposables。如果我有方法

 IDisposable Subscribe(...){....}

并在不分配和使用 IDisposable 的情况下调用它我想被告知它。我尝试了以下模式

;$expr$;

其中expr 的类型为IDisposable。会发生以下情况。

第一个被正确检测到,但第二个是错误,因为对现有变量的简单赋值也是 C# 中的表达式,而使用 var 的赋值不是。是否可以检测到返回值是通过结构搜索赋值的?

我注意到 resharper 具有以下代码质量选项

但我猜它们是用比结构搜索解析器更复杂的东西构建的。

【问题讨论】:

  • 那么,问题是什么?
  • 什么是更清晰的搜索模式——这就是问题所在。没必要淘气。

标签: c# resharper structural-search


【解决方案1】:

很遗憾,这不能通过结构搜索和替换来完成。一方面,没有构造可以匹配某些东西的缺失,因此无法匹配没有分配其返回值的方法调用。

正如您所注意到的,有些检查会跟踪不使用返回值的纯函数,并且它们不是用 SSR 实现的。您可以通过将[Pure] 属性应用于它们来使它们应用于您的方法。然而,这意味着该方法实际上是纯粹的,即没有副作用,因此在这种情况下可能是错误的语义。

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2020-06-22
    相关资源
    最近更新 更多