问题标签 [ca2000]
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.
c# - 尽管使用了 using 语句,异常过滤器仍会导致 CA2000
以下代码是我们生产代码的一部分的简化摘录。它计算文件的 SHA256 哈希值并将其作为字符串返回,或者null
在文件无法访问时返回:
我们的一位开发人员最近使用异常过滤器重构了代码以减少重复catch
块,所以它现在看起来像这样:
然而,我们现在得到一个代码分析警告:
CA2000 - 在方法“CalculateHash(string)”中,在对对象“sha256”的所有引用超出范围之前调用 System.IDisposable.Dispose。
据我所知,SHA256CryptoServiceProvider
这里的处理是正确的,无论异常是否被过滤器捕获,都会发生这种情况。
这个 CA2000 是误报,还是异常过滤器创建了一个不会发生处置的场景?
c# - 类级别对象上的 CA2000 警告
我有一个在类级别声明的对象,它发出 CA2000 警告。如何从下面的代码中消除 CA2000 警告?
警告是 - 警告 CA2000 在方法“SIMPathFinder.SIMPathFinder()”中,对象“new OpenFileDialog()”未沿所有异常路径处理。在对对象“new OpenFileDialog()”的所有引用超出范围之前调用 System.IDisposable.Dispose。
.net - 退回一次性物品并收到 CA2000 警告
我正在尝试将 XMLNodeReader 返回到另一个函数但收到 CA2000 警告
如果我使用以下代码,它会正常工作吗?警告被抑制,但不确定它是否会影响逻辑。
c# - 警告:CA2000:Microsoft.Reliability 调用 System.IDisposable.Dispose 尽管使用
在以下方法中,我收到警告:
警告:CA2000:Microsoft.Reliability:在方法“AvdfileCache.AddPartTableGaugeData(long, long)”中,在对对象“cmdGaugeData”的所有引用超出范围之前调用 System.IDisposable.Dispose。
我认为由于 using-Statement 可以保证cmdGaugeData
在所有情况下都可以处理,那么为什么我仍然会收到此警告?
编辑:现在我认为这是分析器中的一个错误。我不得不承认,上面的代码是我真实代码的剥离变体(实际上我的真实代码中有更多参数),并且在试图找出警告何时出现时,我得出以下结论:
此代码再次带来警告,但是:
- 没有警告,当我删除
ToString
-Calls 时(只是SVal_xx
作为参数传入) - 没有警告,当我使用 29 时间时
ToString
,第 30 个参数ToString
会生成警告
那么有什么进一步的提示吗?
singleton - 当对象放置在依赖注入容器中时,您如何处理 CA2000(IDisposable 对象的处置)?
根据 Microsoft 的说法,HttpClient 的最佳实践是维护 HttpClient 的单例版本(释义,但这是结果。不要立即处理它)。我自己的测试表明,与为每条消息重新创建 HttpClient 相比,在执行大量 Http 操作时,单个实例具有明显的优势。因此,自然地,将 HttpClient 放在 DI 容器中是有意义的。
问题是我收到来自 StyleCop 的警告:CA2000: Dispose objects before lost scope。 显然我可以压制,但这让我很困扰,因为还有其他 IDisposable 对象可能想要放入 DI 容器中。使用 DI 模式时,此警告是否有效?处理它有什么技巧吗?