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

IDisposable的Resharper代码模式不在内部使用,resharper,static-analysis,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();

我想知道如何构建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

的工具,使用ReSharper | Find菜单下的Search with Pattern工具

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

您可以保存搜索和替换模式,如果需要,R#将使用它进行后续代码分析。您还可以在代码检查|自定义模式下的R#选项中添加其他模式。

搜索模式:

var $cmd$ = $sqlcommand$;
$cmd$.ExecuteNonQuery();
替换模式:

using (var $cmd$ = $sqlcommand$)
{
$cmd$.ExecuteNonQuery();
}
其中
cmd
=标识符


sqlcommand
=类型的表达式
System.Data.SqlClient.sqlcommand

看起来您真正想要的是一种检查机制,它可以查找
IDisposable
对象,并确保它们被处置。如果是这样的话,我怀疑定制模式是否是正确的方法——毕竟,如果您在几行之后调用
Dispose()


实现这一点的一种方法是使用。事实上,SDK附带的一个例子是一个PowerToy,它在特定的类上实现了<代码> IDISPOSTABLE ,因此您可以将该代码作为可能使用分析的基础。但是我在这里寻找代码模式目录片段。你是说在代码检查中添加自定义模式吗?是的,自定义模式和任何实现
IDisposable
Close但仅限于SqlCommand问题的东西。我正在寻找在代码库中使用
的机会。。你原来的问题是完全正确的,你是正确的,但标题没有改变。我做了编辑来澄清我的问题。我也对你的回答投了赞成票,但这不是我想要的答案。是否无法使用代码模式来查找实现
IDisposable
的对象,而该对象未使用
using
包装?据我所知,代码模式的功能不足以实现这一点,特别是因为它们不允许您否定条件(查找实现IDisposable的代码,该代码未在内部使用)。在ReSharper工具集的范围内,只有按照Dmitri的建议编写ReSharper插件才能实现这一点。如果在其他行上引发异常,则稍后调用Dispose将不会有帮助,除非您从finally块调用它。