コードインスペクション:継承されない仮想(オーバーライド可能な)メンバーを持つクラス(非 private アクセシビリティ)
このインスペクションは、1 つ以上のオーバーライド可能なメンバー (C# では virtual 、Visual Basic では Overridable) を持つが、ソリューション内に継承クラスを持たないパブリッククラスを報告します。
一方では、メンバーをオーバーライド可能にすることは、サブクラスでそれをオーバーライドするためのインテンションを示しますが、他方では、サブクラスは存在しません。
この矛盾を解決するには、 virtual または Overridable 修飾子を削除することを検討してください。 クラスが意図的に継承を持たないように設計されている場合は、クラスに sealed (Visual Basic では NotInheritable) 修飾子を追加できます。
ソリューション全体のインスペクションを機能させるには、次の少なくとも 1 つを有効にする必要があります。
簡略化されたグローバル使用状況チェック: ReSharper オプション の ページで ソリューション全体の分析がオフの場合に、未使用の非プライベートタイプメンバーを表示する を選択します Alt+R、O 。
ソリューション全体の分析: ReSharper オプション の ページで ソリューション全体の分析を有効化する を選択します Alt+R、O 。
報告されたクラスがソリューション内で直接使用されていない場合でも、間接的に (たとえばリフレクションを介して) 使用される場合や、パブリック API として設計されている場合もあります。 これらのすべてのケースでは、次のいずれかの方法で、クラスの使用状況チェックインスペクションを 抑制する必要があります。
推奨される方法は、暗黙的に使用されるクラスを コードアノテーション属性で装飾することです。 この目的には、機能的に類似している [UsedImplicitly] と [PublicAPI] の 2 つの属性がありますが、これらを使用すると、クラスが実際にどのように使用されるかを自分やチームメイトが理解できるようになります。
また、カスタム属性を使用してインスペクションの使用状況を抑制することもできます。 これを行うには、その属性の定義に [MeansImplicitUse] 属性を付けます。
そして最後に、特定の使用チェックインスペクションを、 抑制コメントまたは抑制属性を持つ他のコードインスペクションと同様に抑制することができます。