非封闭连接的Visual Studio自定义警告

时间:2018-08-20 14:37:01

标签: c# visual-studio

在我们的项目中,我注意到很多地方我们忘记关闭某些连接。现在的问题是,如果我们不关闭/处置它,是否可以使Visual Studio显示警告?

一个正确的例子是:

var app = new Application();

try {
//Some code
} finally {
app.Dispose();
}

所以我的想法是,是否有可能发出警告,如果创建了应用程序/连接并且缺少处置,则会触发该警告。

2 个答案:

答案 0 :(得分:0)

有一个内置的静态分析工具,简称为“代码分析”,可以完全满足您的要求。您可以在要应用此行为的每个项目上启用它。启用后,只要资源处理不当,您都会收到编译警告或错误(可配置)。

请参阅以下内容:

How to enable automatic code analysis

CA2000: Dispose objects before losing scope

启用CA2000并将其设置为“错误”的屏幕截图:

enter image description here

编辑: 实际上,有两种不同类型的静态代码分析可用。我上面提到的是较旧的版本,有时也称为“ FxCop”

较新的代码分析类型称为Roslyn Analyzers。在此处查看信息:https://docs.microsoft.com/en-us/visualstudio/code-quality/roslyn-analyzers-overview

答案 1 :(得分:-1)

我建议使用using语句完全规避该问题:

using(var app = new Application)
{
    some code...
}

using语句在执行后将自动处理您的对象(或连接),从而避免了忘记关闭连接的问题。那可能使您的问题有所回避,但是从它的措辞来看,这似乎是潜在的问题。

More info on using statements