ReSharper 2026.1 ヘルプ

コード検査: メンバーは静的にすることができます (共有) (非公開アクセシビリティ)

以下のメソッド Print を考えてみましょう。

public class Foo { public void Test() { Print("John"); } public void Print(string name) { Console.WriteLine("Hello, {0}!", name); } }
Public Class Foo Public Sub Test() Print("John") End Sub Public Sub Print(name As String) Console.WriteLine("Hello, {0}!", name) End Sub End Class

ソリューション全体の分析が有効になっている場合、ReSharper は、Print にインスタンスの使用箇所がなく、静的にすることができることを示しています。しかし、ポイントは何ですか? 実は、静的メンバーは、特定の状況下でパフォーマンスにわずかなメリットをもたらします。

Microsoft のドキュメントはこれについて何を言いたいのですか?

- インスタンスデータまたは呼び出しインスタンスメソッドにアクセスしないメンバーは、静的(Visual Basic では共有)としてマークすることができます。メソッドを静的にマークした後、コンパイラーはこれらのメンバーに仮想ではない呼び出しサイトを発行します。非仮想呼び出しサイトを発行すると、現在のオブジェクトポインタが null でないことを確認する各呼び出しの実行時のチェックが防止されます。これにより、パフォーマンス重視のコードでは、測定可能なパフォーマンス向上を実現できます。場合によっては、現在のオブジェクトインスタンスへのアクセスの失敗は、正確性の問題を表します。

ソリューション全体のインスペクションを機能させるには、次の少なくとも 1 つを有効にする必要があります。

  • 簡略化されたグローバル使用状況チェック: ReSharper オプション Alt+R, Oコードインスペクション | 設定ページでソリューション全体の分析がオフの場合に、未使用の非プライベートタイプメンバーを表示するを選択します。

  • ソリューション全体の分析 : ReSharper オプション Alt+R, Oコードインスペクション | 設定ページでソリューション全体の分析を可能にするを選択します。

報告されたメンバーがソリューション内で直接使用されていない場合でも、リフレクションなどによって間接的に使用される場合や、単にパブリック API として設計されている場合もあります。これらのすべてのケースでは、次のいずれかの方法でメンバーの使用状況チェックインスペクションを抑制する必要があります。

  • 推奨される方法は、暗黙的に使用されるメンバーをコードアノテーション属性で装飾することです。この目的には 2 つの属性があります。[UsedImplicitly][PublicAPI] です。これらは機能的には似ていますが、メンバーが実際にどのように使用されているかをチームメートに理解させます。

  • また、カスタム属性を使用してインスペクションの使用状況を抑制することもできます。これを行うには、その属性の定義に [MeansImplicitUse] 属性を付けます。

  • そして最後に、特定の使用チェックインスペクションを、抑制コメントまたは抑制属性を持つ他のコードインスペクションと同様に抑制することができます。

2024 年 2 月 11 日

関連ページ:

コードインスペクション設定を構成する

設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...

ソリューション全体の分析

ソリューション全体の分析により、プロジェクトのコンパイルを妨げないものを含め、サポートされているすべての言語 C++ を除くでエラーが検出されます。プロジェクトにそのようなファイル (JavaScript、CSS、HTML など) が含まれている場合、ソリューション全体の分析は、実行時にしか検出できないエラーを見つけるのに役立ちます。ReSharper のソリューション全体の分析では、2 つの関連しているが異なる機能が実現します。ソリューション全体のエラー / 警告モニター:ReSharper 自...

アノテーションを使用してコードインスペクションを改善する

コード検査や他の多くの ReSharper の機能は、問題を検出し、改善を提案し、他の方法であなたを手助けするために、言語構成の動作を知ることに主に依存しています。ただし、この種の分析ではすべてを検出できるわけではありません。例: メソッドがフォーマットメソッドとして設計されている場合、メソッドの呼び出しに必要な引数が含まれていない場合、構造解析では潜在的な問題は見つかりません。この場合や他の多くの場合、ReSharper のは非常に役立ちます。このフレームワークで宣言された属性を使用することに...