问题标签 [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.
visual-studio-2010 - 来自 OracleConnection 处置的代码分析的 CA2202 警告
我们从 Visual Studio 2010 中的代码分析中收到以下警告,我想知道这是否是我们可以安全忽略的误报,或者应该重构代码以正确处理对象。
相关代码:
相关错误信息:
警告 18 CA2202:Microsoft.Usage:对象“oraConnection”可以在方法“ClassName.MyFunction()”中多次处理。为避免生成 System.ObjectDisposedException,您不应在一个对象上多次调用 Dispose。
c# - C# CA2000:使用 FileStream/XmlTextReader 在失去范围之前处理对象
我有很多这样的代码:
这给了我以下代码分析警告:
如果我遵循建议并将 File.Open 放在 using 语句中,我会得到:
我正在使用 VS2010,我不禁认为我做错了什么,但我没有看到。我究竟做错了什么?
c# - 如何处理通过其 Next 属性迭代的对象?
我有一个使用一些底层本机资源的对象,并且有一个指向下一个实例的指针,我对其进行迭代,类似于:
我得到代码分析问题:
CA2202:Microsoft.Usage:对象“开始”可以在方法“x()”中多次处理。为避免生成 System.ObjectDisposedException,您不应在一个对象上多次调用 Dispose。
知道如何在不抑制它的情况下摆脱这个错误吗?
.net - 如何在没有代码分析警告的情况下一起使用 StringWriter 和 HtmlWriter
我正在使用 .net 并且需要获取一些 html 文本,所以我想我会一起使用 HtmlTextWriter 和 StringWriter 来获得格式正确的 html。但是,尽管我编写代码的方式各不相同,但我仍然会收到来自静态代码分析器的警告(使用 Microsoft All Rules)。在下面的代码示例中,我在注释中显示了代码分析器警告。为了简化代码,我实际上并没有对 HtmlTextWriter 进行任何调用(您会在每个函数中看到对此效果的注释)。如何正确编写代码以避免警告?
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在所有对它的引用都超出范围之前在对象“流”上)。我试过像这样替换上面的代码:
c# - 多次处理对象
我有以下代码,它使用流打开和修改 Open XML 文档,然后保存该流的新二进制表示:
我最初使用了两个 using 块(一个用于 MemoryStream,第二个用于 WordprocessingDocument),但收到警告 CA2202:“对象'流'可以在方法中多次处理......”根据MSDN 文章,我修改了上面的代码(将外部使用转换为尝试),但我仍然收到此警告。
我不确定如何构建此方法以确保在流上仅调用一次 Dispose。我不想简单地禁止这个警告,因为 MSDN 文章指出你不应该依赖 Dispose 可以安全地多次调用。
c# - 在 using 语句中用于 Stream 的 CA2000/CA2202
CA2000 和 CA2202 警告最近一直是我存在的祸根。我在这里做错了什么?我基本上得到一个FileStream
usingFile.Open
然后将它传递给一个可能返回新流或可能返回相同流的函数。然后我对我的流执行更多操作,然后在我的finally
块中处理我正在使用的流,如果它不同的话。
我收到两个 CA 警告。2000 用于fileStream
块内using
,2202 用于changedStream
块内finally
。是什么赋予了?
c# - CA2202 CA2215 HttpApplication Dispose 基本调用
我目前正在分析的代码上获得CA2202(不要多次处理对象)。警告指的HttpApplication.Dispose
是我要覆盖的方法。我知道该IDispose.Dipose
方法不应该是虚拟的或被覆盖,但这是微软IDispose.Dispose
在类中实现 as virtualHttpApplication
而没有提供虚拟的受保护的 Dispose 方法的结果。
该警告似乎在抱怨该base.Dispose
方法的调用。如果基类需要关闭或处置任何对象,我将调用基 Dispose 方法。并且还怀疑我最终可能会收到 CA2215(Dispose 方法应调用基类 dispose)警告,否则。
有谁知道我为什么会收到此(CA2202)警告以及如何处理?
我很想压制它,但MSDN 文档说它永远不应该被压制。
子类如下所示(为简洁起见已将其缩短,您可以假设该_container
字段已被初始化):
c# - 空条件运算符和 CA2202:不要多次处理对象
具有以下内容:
在 Visual Studio 2015 中触发CA2202(不要多次处理对象)警告。
但是,如果将fianlly
块更改为:
这是块中空条件运算符的一些奇怪之处finally
还是什么,或者Visual Studio中的分析工具根本不理解它?