Validate arguments of public methods
TypeName |
ValidateArgumentsOfPublicMethods |
CheckId |
CA1062 |
Category |
Microsoft.Design |
Breaking Change |
NonBreaking |
Cause
An externally visible method dereferences one of its reference arguments without verifying whether that argument is null (Nothing in Visual Basic).
Rule Description
All reference arguments passed to externally visible methods should be checked against null. If appropriate, throw a System.ArgumentNullException when the argument is null.
How to Fix Violations
To fix a violation of this rule, validate each reference argument against null.
When to Exclude Warnings
Do not exclude a warning from this rule.
Example
The following example shows a method that violates the rule and a method that satisfies the rule.
Imports System
Namespace DesignLibrary
Public Class Test
' This method violates the rule.
Sub DoNotValidate(input As String)
If input.Length <> 0
Console.WriteLine(input)
End If
End Sub
' This method satisfies the rule.
Sub Validate(input As String)
If input Is Nothing
Throw New ArgumentNullException("input")
End If
If input.Length <> 0
Console.WriteLine(input)
End If
End Sub
End Class
End Namespace
using System;
namespace DesignLibrary
{
public class Test
{
// This method violates the rule.
public void DoNotValidate(string input)
{
if( input.Length != 0 )
{
Console.WriteLine(input);
}
}
// This method satisfies the rule.
public void Validate(string input)
{
if( input == null )
{
throw new ArgumentNullException("input");
}
if( input.Length != 0 )
{
Console.WriteLine(input);
}
}
}
}
In Visual Studio 2005, this rule has a number of limitations. One limitations is that
it does not detect that parameters are being passed to another method that does the validation.
Another limitation is that it does not understand short circuit operators.