ReSharper 2025.3 ヘルプ

コード検査: [MustDisposeResource] アノテーションが付けられたメソッドの戻り値は破棄されません

JetBrains.Annotations[MustDisposeResourceAttribute] を使用して呼び出し側コードでリソースの破棄を強制している場合、ReSharper は、コンストラクターまたは破棄可能なリソースを返すファクトリメソッドで初期化された変数があり、その変数が適切に処理されないケースを報告します。

使い捨てリソースの誤った処理を避けるために、ReSharper は変数宣言を using 宣言または using ブロックに変換することを提案します。

[MustDisposeResource] public class HasNativeResources : IDisposable { private IDisposable _resource; public void Dispose() { _resource.Dispose(); } } public class Test { public Test() { var resource = new HasNativeResources(); } }
[MustDisposeResource] public class HasNativeResources : IDisposable { private IDisposable _resource; public void Dispose() { _resource.Dispose(); } } public class Test { public Test() { using var resource = new HasNativeResources(); } }
2024 年 9 月 25 日

関連ページ:

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

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

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

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

破棄分析

コード内のリソースリークの数を減らし、パフォーマンスを向上させるには、使い捨てリソースを正しく処理する必要があります。一方では、特定の API の呼び出しサイトでキーワードを強制したいと考えていますが、他方では、の使用ごとに誤検知による大量のノイズが発生することは避けたいと考えています。使い捨てリソースの処理を分析するために、ReSharper は JetBrains.Annotations からの一連のアノテーション属性に依存します。分析を開始するには、重要な使い捨て API に [MustDisp...