是否可以在Resharper的模式目录中创建搜索模式,以查找具有3个以上参数的所有构造函数?
如果是这样,怎么样?
我的问题是我不知道如何告诉Resharper只有构造函数定义应该匹配。
答案 0 :(得分:3)
据我所知,Resharper中的模式只能与匹配方法。所以你无法匹配构造函数声明。
我只是尝试了以下模式:
new $type$($args$)
type是一个类型的占位符(谁会猜到?)和至少3个参数的args。 这确实找到了至少3个参数构造函数的所有使用,但它找不到未使用的构造函数,最重要的是,它会找到:
public class MyClass : MyAbstractClass
{
public MyClass(int foo1, int foo2) : base(foo1, foo2, 0)
{
// ...
}
}
所以也许如果你认为你将会遇到这些情况,而不是使用Resharper模式,你应该尝试使用正则表达式查找。它可能很难,因为想到它C#语法相当复杂,但你可以得到一些东西......
编辑:我改编了一个visual studio正则表达式搜索构造函数声明,识别新行和至少参数(可以有可选值):
^(:b|\n)*((public|internal|private|protected|static|sealed)(:b|\n)+)+:i(:b|\n)*\((:b|\n)*:i(:b|\n)+:i(:b|\n)*(|\=(:b|\n)*:a*(:b|\n)*)(,(:b|\n)*:i(:b|\n)+:i(:b|\n)*(|\=(:b|\n)*:a*(:b|\n)*))^2(,(:b|\n)*:i(:b|\n)+:i(:b|\n)*(|\=(:b|\n)*:a*(:b|\n)*))*\)
它的丑陋主要是因为VS自定义正则表达式没有标准 \ w , {2,} 和的任何翻译?
答案 1 :(得分:2)
我知道这个问题专门针对R#6.0,但我想为R#2016.3提供答案,因为我最近有同样的问题。
Resharper 2016(.3.1)
使用Pattern搜索可以进行此类搜索。以下是您需要做的事情:
选择Resharper>查找>搜索模式
添加三个占位符:
确保将搜索模式设置为C#
将模式设置为以下内容:
public $type$($args$)
{
$code$
}
根据需要设置Look In
(例如,解决方案)。并点击查找。
您应该最终得到一个如下所示的搜索框:
这将找到包含您感兴趣的参数数量的所有(公共)构造函数。我能够在多个解决方案中成功使用它。作为一个额外的好处,似乎很高兴找到具有多行的param列表的构造函数,而不仅仅是一行。