問題タブ [ca2202]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
877 参照

visual-studio-2010 - OracleConnection破棄のコード分析からのCA2202警告

Visual Studio 2010のコード分析から次の警告が表示されます。これは誤検知であり、無視しても問題ありません。または、オブジェクトを正しく処理するためにコードをリファクタリングする必要があります。

関連するコード:

関連するエラーメッセージ:

警告18CA2202:Microsoft.Usage:オブジェクト'oraConnection'は、メソッド'ClassName.MyFunction()'で複数回破棄できます。System.ObjectDisposedExceptionの生成を回避するには、オブジェクトに対してDisposeを複数回呼び出さないでください。

0 投票する
7 に答える
9757 参照

c# - C# CA2000: FileStream/XmlTextReader を使用してスコープを失う前にオブジェクトを破棄する

次のようなコードがたくさんあります。

これにより、次のコード分析警告が表示されます。

提案に従って File.Open を using ステートメントに入れると、次のようになります。

私はVS2010を使用していますが、何か間違ったことをしていると思わずにはいられませんが、それはわかりません。私は何を間違っていますか?

0 投票する
3 に答える
164 参照

c# - 次のプロパティを介して繰り返されるオブジェクトを破棄する方法は?

いくつかの基になるネイティブ リソースを使用するオブジェクトがあり、次のインスタンスへのポインターがあり、次のように反復します。

コード分​​析の問題が発生します。

CA2202: Microsoft.Usage: オブジェクト 'begin' はメソッド 'x()' で複数回破棄できます。System.ObjectDisposedException の生成を回避するには、オブジェクトに対して Dispose を複数回呼び出さないでください。

このエラーを抑制せずに取り除く方法はありますか?

0 投票する
3 に答える
4187 参照

.net - コード分​​析の警告なしで StringWriter と HtmlWriter を一緒に使用する方法

私は .net を使用していて、いくつかの html テキストを取得する必要があるため、HtmlTextWriter と StringWriter を一緒に使用して整形式の html を取得すると考えました。しかし、さまざまな方法でコードを記述しているにもかかわらず、静的コード アナライザー (Microsoft All Rules を使用) から警告が表示されます。以下のコード例では、コード アナライザーの警告をコメントで示しています。コードを簡略化するために、実際には HtmlTextWriter を呼び出しません (各関数にその旨のコメントが表示されます)。警告を回避するためにコードを適切に記述するにはどうすればよいですか?

0 投票する
3 に答える
2045 参照

c# - CA2202 を取り除く

CA2202 警告 (CA2202 : Microsoft.Usage : オブジェクト 'compressedStream' は、メソッド 'Compression.InternalDecompress(byte[])' で複数回破棄できます。 System.ObjectDisposedException の生成を回避するには、呼び出す必要はありません次のコードから:

「using」ステートメントを削除して、try/finally パターンに置き換えようとしましたが、CA2000 が発生します (CA2000 : Microsoft.Reliability : In method 'Compression.InternalDecompress(byte[])', call System.IDisposable.Disposeオブジェクトへのすべての参照が範囲外になる前に、オブジェクト「ストリーム」で)。上記のコードを次のように置き換えてみました。

0 投票する
5 に答える
4375 参照

c# - オブジェクトを複数回廃棄する

次のコードがあります。このコードは、ストリームを使用してOpen XMLドキュメントを開いて変更し、そのストリームの新しいバイナリ表現を保存します。

私はもともと2つのusingブロック(1つはMemoryStream用、もう1つはWordprocessingDocument用)を使用していましたが、警告CA2202を受け取りました:「オブジェクト'ストリーム'はメソッドで複数回破棄できます...」MSDNの記事に従って、上記のコード(アウターを使用してtryに変換)を実行しましたが、まだこの警告が表示されます。

Disposeがストリームで1回だけ呼び出されるように、このメソッドをどのように構成できるかわかりません。MSDNの記事には、Disposeが安全に何度も呼び出せることに依存してはならないと記載されているため、この警告を単純に抑制したくないと思います。

0 投票する
2 に答える
527 参照

c# - using ステートメントの Stream の場合は CA2000/CA2202

CA2000 と CA2202 の警告は、最近私の存在の悩みの種でした。ここで何が間違っていますか?私は基本的にFileStreamusingFile.Openを取得し、新しいストリームを返すか、同じストリームを返す関数に渡します。次に、ストリームでさらにいくつかのアクションを実行し、finally使用していたストリームが異なる場合はブロックで破棄します。

2 つの CA 警告が表示されます。ブロック内では2000 fileStream、ブロック内usingでは 2202 です。何を与える?changedStreamfinally

0 投票する
1 に答える
292 参照

c# - Visual Studio Code Analysis の恐ろしい CA2202 警告

以前に受け入れられた回答がVS2012以降では機能しなくなったため、これについて新しいスレッドを作成します。ネストされた using ステートメントを使用すると、次のコードの場合、Visual Studio のコード分析で迷惑な CA2202 オブジェクトを複数回破棄しないでください:

MSDN のサンプルにも記載されているため、これは面倒です。Microsoft はこの警告に対して推奨される修正も行っていますが、警告は修正されなくなりました。使用している Visual Studio のバージョン/コンパイラによっては、これが機能する場合と機能しない場合があります。

0 投票する
1 に答える
304 参照

c# - CA2202 CA2215 HttpApplication Dispose ベース コール

現在、分析中のコードでCA2202 (オブジェクトを複数回破棄しないでください) を取得しています。HttpApplication.Dispose警告は、私がオーバーライドしているメソッドを指しています。IDispose.Diposeメソッドを仮想にしたり、オーバーライドしたりしてはならないことはわかっていますが、これは Microsoft がクラスでIDispose.Dispose仮想として実装しHttpApplication、仮想保護された Dispose メソッドを提供していないためです。

base.Dispose警告は、メソッドの呼び出しについて不平を言っているようです。基本クラスがオブジェクトを閉じるか破棄する必要がある場合に備えて、基本の Dispose メソッドを呼び出しています。また、それ以外の場合は、おそらくCA2215 ( Dispose メソッドは基本クラスの dispose を呼び出す必要があります) 警告が表示されるのではないかと思います。

この (CA2202) 警告が表示される理由とその対処方法を知っている人はいますか?

私はそれを抑制したくなりますが、MSDN のドキュメントには、決して抑制すべきではないと書かれています。

サブクラスは次のようになります (簡潔にするために短縮されており、_containerフィールドが初期化されていると想定できます)。

0 投票する
2 に答える
465 参照

c# - null 条件演算子と CA2202: オブジェクトを複数回破棄しないでください

以下を有する:

Visual Studio 2015 でCA2202 (オブジェクトを複数回破棄しないでください) 警告をトリガーします。

fianllyただし、ブロックを次のように変更すると、警告はトリガーされません。

finallyブロックか何かの null 条件演算子の奇妙な点ですか、それとも Visual Studio の分析ツールが単にそれを理解していないのでしょうか?

編集: おそらく関連: Dispose() で null 条件演算子を使用すると、コード分析によってフラグが立てられるのはなぜですか?