问题标签 [ca2202]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
877 浏览

visual-studio-2010 - 来自 OracleConnection 处置的代码分析的 CA2202 警告

我们从 Visual Studio 2010 中的代码分析中收到以下警告,我想知道这是否是我们可以安全忽略的误报,或者应该重构代码以正确处理对象。

相关代码:

相关错误信息:

警告 18 CA2202:Microsoft.Usage:对象“oraConnection”可以在方法“ClassName.MyFunction()”中多次处理。为避免生成 System.ObjectDisposedException,您不应在一个对象上多次调用 Dispose。

0 投票
7 回答
9757 浏览

c# - C# CA2000:使用 FileStream/XmlTextReader 在失去范围之前处理对象

我有很多这样的代码:

这给了我以下代码分析警告:

如果我遵循建议并将 File.Open 放在 using 语句中,我会得到:

我正在使用 VS2010,我不禁认为我做错了什么,但我没有看到。我究竟做错了什么?

0 投票
3 回答
164 浏览

c# - 如何处理通过其 Next 属性迭代的对象?

我有一个使用一些底层本机资源的对象,并且有一个指向下一个实例的指针,我对其进行迭代,类似于:

我得到代码分析问题:

CA2202:Microsoft.Usage:对象“开始”可以在方法“x()”中多次处理。为避免生成 System.ObjectDisposedException,您不应在一个对象上多次调用 Dispose。

知道如何在不抑制它的情况下摆脱这个错误吗?

0 投票
3 回答
4187 浏览

.net - 如何在没有代码分析警告的情况下一起使用 StringWriter 和 HtmlWriter

我正在使用 .net 并且需要获取一些 html 文本,所以我想我会一起使用 HtmlTextWriter 和 StringWriter 来获得格式正确的 html。但是,尽管我编写代码的方式各不相同,但我仍然会收到来自静态代码分析器的警告(使用 Microsoft All Rules)。在下面的代码示例中,我在注释中显示了代码分析器警告。为了简化代码,我实际上并没有对 HtmlTextWriter 进行任何调用(您会在每个函数中看到对此效果的注释)。如何正确编写代码以避免警告?

0 投票
3 回答
2045 浏览

c# - 摆脱 CA2202

如何摆脱 CA2202 警告(CA2202:Microsoft.Usage:对象“compressedStream”可以在方法“Compression.InternalDecompress(byte[])”中多次处理。为避免生成 System.ObjectDisposedException,您不应调用从以下代码中对一个对象进行多次处理):

我已经尝试摆脱“使用”语句并用 try/finally 模式替换它,但后来我得到 CA2000 (CA2000: Microsoft.Reliability: In method 'Compression.InternalDecompress(byte[])', call System.IDisposable.Dispose在所有对它的引用都超出范围之前在对象“流”上)。我试过像这样替换上面的代码:

0 投票
5 回答
4375 浏览

c# - 多次处理对象

我有以下代码,它使用流打开和修改 Open XML 文档,然后保存该流的新二进制表示:

我最初使用了两个 using 块(一个用于 MemoryStream,第二个用于 WordprocessingDocument),但收到警告 CA2202:“对象'流'可以在方法中多次处理......”根据MSDN 文章,我修改了上面的代码(将外部使用转换为尝试),但我仍然收到此警告。

我不确定如何构建此方法以确保在流上仅调用一次 Dispose。我不想简单地禁止这个警告,因为 MSDN 文章指出你不应该依赖 Dispose 可以安全地多次调用。

0 投票
2 回答
527 浏览

c# - 在 using 语句中用于 Stream 的 CA2000/CA2202

CA2000 和 CA2202 警告最近一直是我存在的祸根。我在这里做错了什么?我基本上得到一个FileStreamusingFile.Open然后将它传递给一个可能返回新流或可能返回相同流的函数。然后我对我的流执行更多操作,然后在我的finally块中处理我正在使用的流,如果它不同的话。

我收到两个 CA 警告。2000 用于fileStream块内using,2202 用于changedStream块内finally。是什么赋予了?

0 投票
1 回答
292 浏览

c# - Visual Studio 代码分析中可怕的 CA2202 警告

我将为此创建一个新线程,因为从 VS2012 及更高版本开始,以前接受的答案不再起作用。使用嵌套 using 语句时,Visual Studio 代码分析给您带来烦人的 CA2202 不要多次处理对象,如下代码:

这很烦人,因为它甚至列在MSDN 示例中。Microsoft 甚至为此警告提供了建议的修复程序,但它不再修复该警告。这可能适合您,也可能不适合您,具体取决于您使用的 Visual Studio 版本/编译器。

0 投票
1 回答
304 浏览

c# - CA2202 CA2215 HttpApplication Dispose 基本调用

我目前正在分析的代码上获得CA2202不要多次处理对象)。警告指的HttpApplication.Dispose是我要覆盖的方法。我知道该IDispose.Dipose方法不应该是虚拟的或被覆盖,但这是微软IDispose.Dispose在类中实现 as virtualHttpApplication而没有提供虚拟的受保护的 Dispose 方法的结果。

该警告似乎在抱怨该base.Dispose方法的调用。如果基类需要关闭或处置任何对象,我将调用基 Dispose 方法。并且还怀疑我最终可能会收到 CA2215Dispose 方法应调用基类 dispose)警告,否则。

有谁知道我为什么会收到此(CA2202)警告以及如何处理?

我很想压制它,但MSDN 文档说它永远不应该被压制。

子类如下所示(为简洁起见已将其缩短,您可以假设该_container字段已被初始化):

0 投票
2 回答
465 浏览

c# - 空条件运算符和 CA2202:不要多次处理对象

具有以下内容:

在 Visual Studio 2015 中触发CA2202(不要多次处理对象)警告。

但是,如果将fianlly块更改为:

这是块中空条件运算符的一些奇怪之处finally还是什么,或者Visual Studio中的分析工具根本不理解它?

编辑:可能相关:为什么在使用带有 Dispose() 的空条件运算符时代码分析会标记我?