CS.EXPR.EQ.STR
String.IsNullOrEmpty を使用して、文字列が null または空であるかどうかを確認します。
この規則は、空の文字列を確認する他の方法を使用する代わりに、String.IsNullOrEmpty メソッドを使用することを推奨します。IsNullOrEmpty は、String が null 参照であるか、その値が Empty であるかを同時にテストできる便利なメソッドです。次のものには、違反としてフラグが立てられます。
- 文字列と空の文字列 ("") との比較
- 文字列と String.Empty との比較
- 文字列の長さとゼロ (0) との比較
- 文字列の長さが 1 以上であるかどうかの確認
脆弱性とリスク
String.IsNullOrEmpty は、.NET 2.0 以降で使用できます。
コンパイラの最適化に関する既知の問題があり、IsNullOrEmpty がループ内で呼び出されたときに正しく動作しないこと (および確認がループ内で使用されるその他の状況) を引き起こす可能性があります。
詳細については、https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=113102 を確認してください。
脆弱コード例
コピー
using System.Data.SqlClient;
public class Violation
{
public string Test(string s)
{
if (s == "") // Violation
{
return "is null or empty";
}
else
{
return s;
}
}
}
修正コード例
コピー
public class Repair
{
public String Test(String s)
{
if (String.IsNullOrEmpty(s) == true) // Fixed
{
return "is null or empty";
}
else
{
return s;
}
}
}