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
で行います。
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(); } } }
以上です。
初学者なりにまとめてみましたが、もしかしたら至らない点があるかもしれません。
その際はご指摘いただけますと幸いです。