为什么Microsoft代码分析只检查公共可访问方法的参数是否为null



Microsoft代码分析的CA1062规则检查引用类型参数是否与null一起传递。

为什么只检查可公开访问的方法?是否也应该检查内部和私有方法?如何保证内部方法不会传递null参数?

我之所以这么问,是因为我在Reflector/ILSpy中注意到,在Roslyn September 2012 CTP中,各种语法节点的internal构造函数(请参阅SyntaxList类)不检查null参数,而语法节点的public工厂方法则检查null参数。在这种情况下,Microsoft如何保证SyntaxList构造函数的内部用法不会传递null?

在这种情况下,Microsoft如何保证SyntaxList构造函数的内部用法不会传递null?

大概是因为他们有测试,这意味着他们对自己的代码充满信心。如果您验证了所有输入,并且确信自己的代码是正确的,那么您就可以确信对内部API的调用具有有效的输入。

当然,实现中可能存在错误,它会生成或允许将无效输入传递给某个内部方法。如果你想对内部调用进行更多的验证,那没关系。但在公共API级别,验证是最重要的。

最新更新