CS.EXPR.EQ.STR
Use String.IsNullOrEmpty to check if a string is null or empty.
This rule recommends the use of String.IsNullOrEmpty method instead of using other ways of checking for an empty string. IsNullOrEmpty is a convenience method that enables you to simultaneously test whether a String is a null reference or its value is Empty. The followings will be flagged as violations:
- Comparison between a string and an empty string ("")
- Comparison between a string and String.Empty
- Comparison between the length of a string and zero (0)
- Checking to see if the length of a string is greater than or equal to one
Vulnerability and risk
String.IsNullOrEmpty is available in .NET 2.0 and above.
There is a known problem with a compiler optimization that can cause IsNullOrEmpty (and other situations where checks are used inside a loop) to behave incorrectly when called inside a loop.
Please check https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=113102 for more information.
Vulnerable code example
Copy
using System.Data.SqlClient;
public class Violation
{
public string Test(string s)
{
if (s == "") // Violation
{
return "is null or empty";
}
else
{
return s;
}
}
}
Fixed code example
Copy
public class Repair
{
public String Test(String s)
{
if (String.IsNullOrEmpty(s) == true) // Fixed
{
return "is null or empty";
}
else
{
return s;
}
}
}