文字列には次の拡張メソッドがあります。
public static bool IsNullOrEmpty(this string target)
{
return string.IsNullOrEmpty(target);
}
...そしてコードでは、次のように使用します。
public static string DoSomethingOnString(this string target)
{
if (target.IsNullOrEmpty())
return target;
target = target.Trim(); //This line causes CA1062 violation
return target;
}
これでコード分析を実行すると、ルールCA1062の違反が発生します。しかし、コードを次のように変更すると:
public static string DoSomethingOnString(this string target)
{
if (string.IsNullOrEmpty(target)) //CHANGED LINE
return target;
target = target.Trim(); //This line DOES NOT cause CA1062 violation anymore
return target;
}
……それならいい。
最初の例で null 条件をチェックしていないと思うのはなぜですか? string.IsNullOrEmpty または string.IsNullOrWhiteSpace のみをチェックしますか? CA に拡張メソッドを認識させる方法はありますか? または、このルールを抑制する必要がありますか?
更新: 同じ問題がある場合は、私が MS Connect に送信したフィードバック項目に投票できます: コード分析ルール CA1062 が誤った警告を発する