gpt4 book ai didi

visual-studio - 我应该对 Visual Studio 中的代码分析合规性有多严格?

转载 作者:行者123 更新时间:2023-12-02 22:22:39 25 4
gpt4 key购买 nike

在为我正在从事的一个小项目玩过代码分析之后,我想知道在解析代码以符合分析要求时我应该有多严格。

我知道我可以为此抑制警告,但对我来说,在某种程度上抑制警告是一种逃避(没有双关语意......“FXCop”)。

示例警告:

Do not raise exceptions in unexpected locations 'CustomObject.Equals(object)' creates an exception of type 'ArgumentException'. Exceptions should not be raised in this type of method. If this exception instance might be raised, change this method's logic so it no longer raises an exception.

抛出这个的原因...

CustomObject.Equals(object) 可能会尝试将 CustomObject 与 FooBarObject 进行比较...它们甚至不是同一类型,所以在这种情况下,我应该抛出异常,还是只返回 false?


一般来说,我是否应该认真(需要一个更好的词)让我的代码绝对合规,或者我是否会遇到需要抑制警告的情况?

最佳答案

FxCop 警告只是警告,它们不会标记无效代码。那是编译器的工作。 FxCop 使用的规则是根据多年编写 .NET 代码的经验收集而来的。它们代表“最佳实践”,通常用于提醒您注意意外后果和 .NET 编程中较为晦涩的部分,例如 CAS。

始终引用文档以了解规则存在的原因。对于 CA1065,您将看到:

An Equals method should return true or false instead of throwing an exception. For example, if Equals is passed two mismatched types it should just return false instead of throwing an ArgumentException.

与您的用法完全相符,您可以毫不费力地采纳这些建议。不幸的是,创建规则的确切原因有点短。这确实没有超出“不要扔在意想不到的地方”的指导。这里意想不到的后果是另一个使用您的类的程序员不会意识到如果他不希望代码失败则需要 try/catch。随意将 Debug.Assert() 放入您的 Equals 方法中。在很多情况下您会想要忽略该建议,例如 CA2000 特别容易出现错误警告。如有必要,请应用 [SuppressMessage] 属性,以免再次查看它。

关于visual-studio - 我应该对 Visual Studio 中的代码分析合规性有多严格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13473125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com