ReSharper 2026.1 Help

DPA スコープを絞り込む

特定の問題を DPA 問題リストから除外したい場合が数多くあります。

主なものは次のとおりです。

これは問題ではありません

DPA が意図通りに動作しているにもかかわらず、特定のメソッドを問題としてマークする場合があります。 たとえば、メソッドが大量のメモリを割り当てるのは、コード設計が悪いためではなく、現在のユースケースで必要だからかもしれません。 これがわずかなメソッドである場合、最善の解決策は これらの問題を抑制することです。 偽陽性が多い場合は、 問題のしきい値を増やす方が良い場合があります。

このコードの所有者ではない、または今は解析に興味がない場合です

大規模なソリューションには、数百のプロジェクトが含まれており、多くの人が同時に作業しています。 DPA では、 ソリューションの特定部分を除外して解析できるので、現在の作業に関連する問題だけを残すことができます。

この問題は既に修正されています

既に問題を修正したが、ソリューションを再度実行/デバッグしていないという稀なケースです そのような問題をリストから非表示にしたい場合は、 問題を修正済みとしてマークできます。

簡単な要約:

VCS を介して共有

まで問題を非表示にします

粒度

抑止

はい

恒久的に

メソッド

除外

いいえ

恒久的に

プロセス、モジュール、クラス、メソッド

修正済みとしてマーク

いいえ

次の実行まで

メソッド

しきい値を上げる

いいえ

恒久的に

ソリューション

問題を抑制する

問題を抑制するには、対応するメソッドに SuppressMessage 属性をマークする必要があります。 この問題を抑制する主な利点は、属性がソースコードに設定されているため、VCS を介して共有できることです。 属性を設定する最も簡単な方法は、コンテキストアクションを使用することです。

  1. エディターで、抑制したいメソッドを見つけます。 SuppressMessage 属性により、DPA は、メソッド自体だけでなく、すべての子呼び出しでもメモリ割り当てを無視することに注意してください。

  2. DPA でハイライトされた行にキャレットを置き、 Alt+Enter を押します。

  3. コンテキストアクションリストで { メモリ割り当てを抑制 | データベース } の問題 を選択し、現在の呼び出しサブツリーで抑制したい内容を選びます:選択した問題のみ、同種の問題すべて、またはすべての問題

    DPA。 問題を抑制する

SuppressMessage 属性は手動で設定できます。 たとえば、次のようになります。

[SuppressMessage("ReSharper.DPA", checkId: "DPA0002: Excessive memory allocations in SOH", MessageId = "type: Sudoku.Cell")] public Cell Copy() => new Cell(Number, _options);

ここに:

  • "ReSharper.DPA" は必須の属性カテゴリです。

  • checkId は、どの問題タイプを抑制する必要があるかを指定します(説明はオプションです)。

    • "DPA0001: Memory allocation issues": メモリ割り当ての問題。

    • "DPA0002: Excessive memory allocations in SOH": スモールオブジェクトヒープへの割り当て。

    • "DPA0003: Excessive memory allocations in LOH": ラージオブジェクトヒープへの割り当て。

    • "DPA0004: Closure object allocation": 閉鎖のための割り当て。

    • "DPA0005: Database issues": データベースの問題。

    • "DPA0006: Large number of DB commands": 多数のデータベースコマンドの実行。

    • "DPA0007: Large number of DB records": データベースレスポンス内の多数のレコード。

    • "DPA0008: Large number of DB connections": 多数の同時データベース接続。

    • "DPA0009: High execution time of DB command": コマンド実行時間が長い。

  • MessageId を使用すると、属性のスコープを問題の値で絞り込むことができます。 スコープフィルターは、キーと値のペアのリストを使用して設定する必要があります: "key1: value1; key2: value2; ..." 利用可能なキーは次のとおりです:

    • type: EXACT_FQN: 指定されたタイプのオブジェクトが割り当てられる割り当ての問題を抑制します。 EXACT_FQN は、名前空間とジェネリクス型のすべての置換を含む型の完全な名前です。

    • size: VALUE "B"|"KB"|"MB"|"GB"|"TB": 割り当てられたオブジェクトの合計サイズが VALUE より小さい場合、割り当ての問題を抑制します。

    • count: オブジェクト (コマンド、レコード、接続) の総数が VALUE 未満の場合、データベースの問題を抑制します。

    • time: ミリ秒単位の時間が VALUE より小さい場合、データベースコマンドの実行時間の問題を抑制します。

    次に例を示します: "type: System.Object; type: System.String; size: 500MB"

    このフィルターは、割り当てられたオブジェクトの合計サイズが 500MB 未満でない限り、DPA が System.Object または System.String タイプのオブジェクトの割り当てに関連するすべての問題を抑制しなければならないことを意味します。

分析からコードを除外する

特定のコード部分が現在の作業に関連しない場合など、解析に興味がない場合は除外が必要な場合があります。 特定のプロセス、モジュール、クラス、メソッドを除外できます。それに関連する問題は 動的プログラム分析 ウィンドウやエディター上で非表示になります。 コードを除外しても自分にだけ適用されます。除外された問題は VCS には伝搬されません。

動的プログラム分析からコードを除外する

  1. 拡張 | ReSharper | ウィンドウ | 動的プログラム分析 | フィルター を開きます。

  2. フィルター で、必要なフィルター規則の横にある 追加追加 ... をクリックします。

    • 次のみでコードを分析する: 動的分析に含めるプロセス、モジュール、クラス、/ またはメソッドを指定します。 その他のコード項目は除外されます。 コードアイテムは互いに独立してフィルタリングされます。 例: メソッドを指定し、モジュールとクラスにアスタリスク * を残して、すべてのモジュールとすべてのクラスから指定された名前のメソッドのみを含めることができます。

    • 次でコードを分析しない: 動的分析から除外するプロセス、モジュール、クラス、/ またはメソッドを指定します。 コードアイテムは互いに独立してフィルタリングされます。

問題を修正済みとしてマーク

問題に修正済みフラグをつける操作は、除外と似ています。 主な違いは、除外は恒久的ですが、「修正済みとしてマーク」はソリューションを実行/デバッグするまで問題を非表示にする点です。もし実際に問題が修正されていなければ、DPA は問題リストに戻します。

  1. 動的プログラム分析 ウィンドウを 開きます。

  2. 問題を選択し、 削除 を押すか、コンテキストメニューで 無視 | 修正済みとしてマーク を選びます。

問題のしきい値を変更する

DPA は、インスペクション値がしきい値を超えた場合のみメソッドを問題としてマークします。 たとえば、実行中にメソッドが LOH に 55 MB を割り当てた場合、しきい値が 50 MB であれば問題になります。 したがって、偽陽性を排除する最も簡単な方法は、対応するしきい値を上げることです。 なお、普遍的なしきい値はありません。現在の実行コンテキストにより、アプリケーションが割り当てるメモリ量も異なります。 たとえば、アプリが扱うデータサイズは実行ごとに変わる場合があります。

動的プログラム分析 ウィンドウの しきい値 タブで、各発行タイプのしきい値を設定できます。 デフォルトのしきい値は次のとおりです。

  • Closure オブジェクト: 50 MB

  • ラージオブジェクトヒープ: 50 MB

  • 小さなオブジェクトのヒープ: 100 MB

  • DB コマンド時間: 500 ミリ秒

  • DB 接続: 10

  • DB コマンド: 50

  • DB レコード: 100

  • MVC アクション: 500ms

  • Razor ページハンドラー: 500 ミリ秒

  • Razor ビューコンポーネント: 300 ミリ秒

  1. 動的プログラム分析 ウィンドウを 開きます。

  2. 次のいずれかを実行します。

    • 現在のしきい値を超えている問題を選択し、コンテキストメニューで 無視 | 新しいしきい値を設定 ... を選択します。 これにより、問題の割り当て値のすぐ上に対応するしきい値が設定されます。

    • しきい値 タブに切り替えて、目的の問題タイプの新しいしきい値を設定します。

2026 年 6 月 12 日