ConfigureAwait 分析
非同期プログラミングモデル(async
/await
キーワード)に依存するコードでは、同期コンテキストを管理するために ConfigureAwait()
呼び出しがよく使用されます。
ConfigureAwait()
呼び出しの仕組みとその使用シナリオは、この Microsoft.NET ブログ記事(英語)やインターネット上にある他の多くの投稿で詳細に説明されていますが、ConfigureAwait()
の使用に関するアドバイスは次のように要約されます。
パフォーマンスを向上させ、潜在的なデッドロックを回避するには、UI 以外のコードで
ConfigureAwait(false)
を使用します。ここでの例外は、Windows フォーム、WPF、ASP.NET などのアプリレベルのコードです。ConfigureAwait(true)
はデフォルトの動作に対応し、意味のあることは何もしないため、このような呼び出しは安全に省略できます。
ConfigureAwait()
の使用箇所を分析するには、ReSharper は、それがアプリケーションレベルのコードであるか汎用ライブラリコードであるかを知る必要があります。デフォルトでは、ConfigureAwait 分析は無効になっているため、次の 2 つのモードのいずれかを選択して、各プロジェクトで分析を有効にする必要があります。
ライブラリモード — ReSharper は、
ConfigureAwait(false)
呼び出しを待機可能オブジェクトに追加することを提案します。UI モード — ReSharper は、
ConfigureAwait(true)
呼び出しを冗長として報告します。
ConfigureAwait 分析を有効にして、そのモードを選択する
プロジェクトで ConfigureAwait 分析を有効にするには、ソリューションエクスプローラーでプロジェクトを右クリックし、ライブラリまたは UI を選択します。
を選択してから、現在のプロジェクトで ConfigureAwait 分析を有効にするには、任意の
await
キーワードにキャレットを置き、Alt+Enter を押し、ConfigureAwait 分析を選択してから、ライブラリまたは UI を選択します。EditorConfig を使用する場合は、プロジェクト、フォルダー、ファイルの ConfigureAwait 分析モードを次のプロパティで指定できます:
configure_await_analysis_mode = library
またはconfigure_await_analysis_mode = ui
ConfigureAwait 分析は、2 つのコードインスペクションに依存します: UI モードの冗長 'ConfigureAwait(true)' とライブラリモードのライブラリコードに「.ConfigureAwait(false)」がありません。これらのインスペクションが ReSharper オプション Alt+R, O の ページで有効になっていることを確認してください。
分析を微調整するには、プロジェクトで分析を有効にしてから、無視する必要がある場所でこれらのインスペクションを抑制します。
関連ページ:
EditorConfig を使用する
ReSharper は、EditorConfig 形式で定義されたコード形式スタイル、コード構文スタイル、C# の命名スタイル、コードインスペクション重大度レベルをサポートします。Matthell は、ReSharper が EditorConfig を使用してフォーマットルールの設定全体をどのように維持するのをヘルプいるかを示しています。EditorConfig とは何ですか? ReSharper はどのようにそれを拡張しますか? :EditorConfig は、同じコードで作業しているチームメ...
コードインスペクション
ReSharper は、サポートされているすべての言語で 2500 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするために適用されます。また、特定の範囲内のすべてのコードの問題を検出するために適用されます。インスペクション ReSharper が提供するコードの種類を調べるには、異なる言語の ReSharper コードインスペクションの全リストをご覧ください。コードインスペクションは、以下のグループに分...
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...
コレクションアクセス分析
ReSharper は、コレクションアイテムの値を分析するだけでなく、使用する各コレクション全体も分析します。このコレクションへの読み取りアクセスがあっても、コレクションが満たされない、変更されない場合は警告しますコレクションが決して読み込まれない場合すべての標準コレクションタイプは、デフォルトでこの方法で分析されます。必要に応じて、この分析をから派生したカスタムコレクションに適用することもできます。この場合、ReSharper に、コレクションの public メソッドの呼び出しがコレクション...
破棄分析
コード内のリソースリークの数を減らし、パフォーマンスを向上させるには、使い捨てリソースを正しく処理する必要があります。一方では、特定の API の呼び出しサイトでキーワードを強制したいと考えていますが、他方では、の使用ごとに誤検知による大量のノイズが発生することは避けたいと考えています。使い捨てリソースの処理を分析するために、ReSharper は JetBrains.Annotations からの一連のアノテーション属性に依存します。分析を開始するには、重要な使い捨て API に [MustDisp...