コードインスペクション: クラスがインスタンス化されていません(非公開アクセシビリティ)
このインスペクションは、ソリューション内でオブジェクトが作成されていない公開クラスおよびレコードを報告します。 「型が使用されていない」問題とは異なり、このインスペクションで報告された型には使用箇所があります。たとえば、基本型、メソッドや型のパラメーター、初期化されていない変数宣言などで使用されることがあります。
状況に応じていくつかの解決策があります。クラスに静的メンバーや定数フィールドのみが含まれている場合は、静的クラスにすることを検討してください。 クラスが基底クラスである場合や型パラメーターとして使用されている場合は、抽象クラスにすることを検討してください。 クラスが不要であり、既存のコードに影響を与えない場合は、削除を検討してください。 ただし、本来インスタンス化されるべきクラスがインスタンス化されていない場合は、必要な場所でインスタンスを作成することを検討してください。
いずれの場合も、クラスの背後にあるインテンションは、将来コードを読む人にとっては明らかである必要があります。 選択したアクションによって、コードの読みやすさと保守性が増すはずです。
ソリューション全体のインスペクションを機能させるには、次の少なくとも 1 つを有効にする必要があります。
簡略化されたグローバル使用状況チェック: ReSharper オプション の ページで ソリューション全体の分析がオフの場合に、未使用の非プライベートタイプメンバーを表示する を選択します Alt+R、O 。
ソリューション全体の分析: ReSharper オプション の ページで ソリューション全体の分析を有効化する を選択します Alt+R、O 。
報告されたシンボルがソリューション内で直接使用されていない場合でも、リフレクションなどによって間接的に使用されている場合や、パブリック API として設計されている場合もあります。 これらのすべてのケースでは、次のいずれかの方法で、シンボルの使用状況チェックインスペクションを 抑制する必要があります。
推奨される方法は、暗黙的に使用されるシンボルに コードアノテーション属性を付与することです。 この目的には、 [UsedImplicitly] と [PublicAPI] という機能的に似た 2 つの属性があり、これらによってチームメイトと一緒にシンボルの実際の使われ方を把握できます。
また、カスタム属性を使用してインスペクションの使用状況を抑制することもできます。 これを行うには、その属性の定義に [MeansImplicitUse] 属性を付けます。
そして最後に、特定の使用チェックインスペクションを、 抑制コメントまたは抑制属性を持つ他のコードインスペクションと同様に抑制することができます。