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;
         }
     }
 }