【C#】【Visual Studio】警告コード「CA1062」の修正方法

Visual Studioのソース分析で発生した警告について理解し、修正をする方法について記載します。

環境

Visual Studio 2019 で開発します。

ソース分析

ソースアナライザー

設定項目 設定値
推奨されるアナライザー パッケージ Microsoft.CodeAnalysis.FxCopAnalyzers
インストールされている 2.9.6

規則セットの構成

設定項目 設定値
アクティブ規則 Microsoft マネージド推奨規則

事象

コンポーネントクラスを作ると、クラスのひな形生成されます。
2つ目のComponent1関数について、CA1062の警告が生じています。

using System.ComponentModel;

namespace WpfApp1
{
    public partial class Component1 : Component
    {
        public Component1()
        {
            InitializeComponent();
        }

        public Component1(IContainer container)
        {
            container.Add(this);

            InitializeComponent();
        }
    }
}

警告内容

外部から参照できるメソッド'Component1.Component1(IContainer container)'において、参照パラメーター'container'は使用前は非nullです。
適切であれば、引数がnullの場合にArgumentNullExceptionをスルーするか、非nullの引数をアサ―トするコードコントラクトの必須条件を追加します。

原因

引数がnullのだった場合の対策が出来ていません。 docs.microsoft.com

そのため、引数がnullだった場合の対策を施する必要があります。

対応方法

色々な方法があるかもしれませんが、今回はエラーハンドリングで解決します。
警告にも書いてありますが、nullを許可しないメソッドに対してnull 参照を渡された場合のエラースロー処理はArgumentNullExceptionで行います。

docs.microsoft.com

using System;
using System.ComponentModel;

namespace WpfApp1
{
    public partial class Component1 : Component
    {
        public Component1()
        {
            InitializeComponent();
        }

        public Component1(IContainer container)
        {
             if(container == null)
            {
              // containerがnullだった場合、エラー処理をする
              throw new ArgumentNullException(nameof(container));
            }

            InitializeComponent();
        }
    }
}


以上です。

初学者なりにまとめてみましたが、もしかしたら至らない点があるかもしれません。
その際はご指摘いただけますと幸いです。

©︎2017-2018 WebSandBag