C#


CSHARP.NULL.RET.NONNULL : Method Should Not Return null (C#)

要旨

A method returns null but is normally assumed to return a non-null value.

If the null value gets dereferenced, C# runs into a NullReferenceException. For this reason, programmers must ensure that the content of expressions dereferenced in their programs is never null. Solving this problem is in general hard. This checker provides a coverage of the most frequent scenarios when null might end up being dereferenced. For a sound alternative to this checker, that covers all possible situations, see the Nullness checker. However, BasicNullness is much faster than Nullness and issues a more restricted set of false alarms, hence it is often the best solution for a rapid identification of the most frequent null-pointer errors in a program.

Strict and Non-Strict Checking

When CSHARP_ANALYSIS_STRICT_MODE=No, warnings of this class will not be issued if there are indications that the possibility of a NullReferenceException has been recognized and accounted for. For example, warnings will not be issued for code inside a try-catch block that explicitly catches NullReferenceException, or for a JUnit test that is annotated as expecting this exception.

When CSHARP_ANALYSIS_STRICT_MODE=Yes, warnings will be issued even in these cases.

プロパティ

クラス名 Method Should Not Return null (C#)
日本語クラス名 Method Should Not Return null (C#)
クラス分類 信頼性 (reliability)
ニーモニック CSHARP.NULL.RET.NONNULL
カテゴリー
CWE CWE:476 NULL Pointer Dereference
対応言語 C# で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで有効になっています。チェックを無効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += discard class="Method Should Not Return null (C#)"

public class ConventionExample 
{

    public static void Main(string[] args) 
    {
        
        MyClass cs = new MyClass();
        String s = cs.ToString();
    }
    
    public static class MyClass 
    {
        
        public override string ToString()
        {
            return null;  // Method Should Not Return null (C#) warning issued here
        }
    }
}

解決法

Check if the warning corresponds to a situation where null might actually be dereferenced at runtime. If that is the case, add a nullness check for the value being dereferenced, or change the logic of the code. Sometimes, a warning of this checker corresponds to a spurious nullness check, that can be removed.

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。