用于IDisposable的Resharper代码模式不在内部使用

时间:2012-03-29 16:30:05

标签: resharper static-analysis

我想知道如何构建一个Resharper(6.1)代码模式来搜索和替换以下问题:

var cmd = new SqlCommand();
cmd.ExecuteNonQuery();

并将其转换为:

using (var cmd = new SqlCommand())
{
  cmd.ExecuteNotQuery();
}

 StreamReader reader = new StreamReader("myfile.txt");
 string line = reader.Read();
 Console.WriteLine(line);

变为:

using (StreamReader reader = new StreamReader("file.txt"))
{
   string line = reader.ReadLine();
   Console.WriteLine(line);
}

编辑: 感谢您的回答,但我正在寻找实施IDisposable

的任何内容

3 个答案:

答案 0 :(得分:2)

搜索模式:

var $cmd$ = $sqlcommand$;
$cmd$.ExecuteNonQuery();

替换模式:

using (var $cmd$ = $sqlcommand$)
{
$cmd$.ExecuteNonQuery();
}

其中cmd =标识符

sqlcommand = System.Data.SqlClient.SqlCommand

类型的表达式

答案 1 :(得分:2)

看起来你真正追求的是一种检查机制,它会寻找IDisposable个对象,并确保它们被处置掉。如果是这种情况,我怀疑自定义模式是正确的方法 - 毕竟,如果你后几行调用Dispose()该怎么办?

实现此目的的一种方法是使用ReSharper SDK。实际上,SDK附带的一个示例是PowerToy,它在特定的类上实现IDisposable,因此您可以将该代码作为可能的使用分析的基础。

答案 2 :(得分:0)

使用ReSharper |下的Search with Pattern工具查找菜单。

在搜索模式中,确保选择了C#并在框中输入您要搜索的代码。单击右上角的“替换”按钮,然后在“替换模式”框中输入要替换它的代码。

您可以保存搜索和替换模式,R#将根据您的需要将其用于后续代码分析。您还可以在Code Inspection |下的R#Options中添加其他模式自定义模式。

相关问题