問題タブ [ca2000]

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 投票する
2 に答える
2349 参照

c# - CA2000 C# で基本コンストラクターにオブジェクト参照を渡す

Visual Studio のコード分析ユーティリティでコードを実行すると、解決方法がわからないという警告が表示されます。おそらく、ここにいる誰かが同様の問題に遭遇し、それを解決して、彼らの洞察を喜んで共有しています.

DataGridView コントロールで使用されるカスタム ペイント セルをプログラミングしています。コードは次のようになります。

次の警告が生成されます。

CA2000 : Microsoft.Reliability: メソッド 'DataGridViewMyCustomColumn.DataGridViewMyCustomColumn()' で、オブジェクトへのすべての参照が範囲外になる前に、オブジェクト 'new DataGridViewMyCustomCell()' で System.IDisposable.Dispose を呼び出します。

DataGridViewMyCustomCell (またはその継承元のクラス) が IDisposable インターフェイスを実装し、DataGridViewMyCustomCell によって要求されたリソースがなくなったときに Dispose() メソッドを呼び出してクリーンアップする必要があることを警告していることを理解しています。

インターネットで見た例では、using ブロックを使用してオブジェクトの有効期間をスコープし、システムに自動的に破棄させることを提案していますが、コンストラクターの本体に移動すると base が認識されないため、using を記述できませんその周りをブロックします...とにかくやりたいかどうかはわかりません。それは、後で基本クラス内で引き続き使用できるオブジェクトを解放するようにランタイムに指示しないからですか?

私の質問は、コードはそのままで大丈夫ですか? または、警告を解決するためにどのようにリファクタリングできますか? 本当に適切でない限り、警告を抑制したくありません。

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

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

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

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

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

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

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

c# - グローバル キャッシュの使用時に CA2000 IDisposable C# コンパイラの警告を修正する方法

CA2000 は、IDisposable インターフェイスに関する警告です。

CA2000 : Microsoft.Reliability: メソッド 'ImportProcessor.GetContext(string)' で、オブジェクト 'c' へのすべての参照が範囲外になる前に、オブジェクト 'c' で System.IDisposable.Dispose を呼び出します。

私のメソッドは、次のようにコンテキストのキャッシュを保存するために使用されます。

using()このコンパイラ警告を修正するステートメントをどこで使用しますか?

contextCache私の外部クラスは、実際には、独自の実装で内容を反復して破棄します。私はそれを抑制すべきですか、それともこの警告を正しく取り除く方法はありますか?

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

c# - CA2000:オブジェクトがすべての例外パスに沿って配置されていません

トピックは以前にここで説明されていますが、提案されたソリューションは機能していないようです。

フォームアプリケーションにボタンクリックコールバックメソッドがあり、フォルダピッカーダイアログが表示されます。

これにより、警告が生成されます。

CA2000: Microsoft.Reliability : In method 'MainWindow.ButtonSelectReporterFolderClick(object, EventArgs)', object '<>g__initLocal' is not disposed along all exception paths. Call System.IDisposable.Dispose on object '<>g__initLocal' before all references to it are out of scope.

また、try-finallyブロックを使用したり、ダイアログを呼び出したりしてみました。ブロックなしで破棄しても、まったく役に立ちません。警告は常に初期化の行に残ります。

0 投票する
4 に答える
4217 参照

c# - .Designer.csファイルからのコード分析警告の無効化/修正

私はDataVisualization.Charting.Chart広範囲に使用しており、ほとんどの場合、機能しています。ただし、私はコード分析を頻繁に実行しており、すべての警告に対応しています。ただし、チャートを使用する* .Designer.csファイルには約30個のCA2000(すべての例外パスに沿って配置されていないオブジェクト)があります。Designerファイルは、ほとんどすべてのチャートコードを生成しており、ほとんどすべてのチャート要素がを実装していIDisposableます。プロジェクト設定で「生成されたコードからの結果を抑制する」をチェックしていますが、それでも実行されます。

チャートオブジェクトを手動で作成したり、そのクラスの残りのコードのコード分析を無効にしたりせずに、これを修正する方法はありますか?すべての.Designer.csファイルに対して無効にする方法はありますか?または、デザイナーコードに破棄を任せることで、これらの警告を正しく削除するソリューションはありますか?

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

c# - CA2000 の警告を取り除けないのはなぜですか?

ロギング システムをリセットするメソッドを作成しています。CsvFileLogWriter (カスタム クラス) のインスタンスを取得し、それをリセット メソッドに渡す必要があります。CsvFileLogWriter は使い捨てなので、CA2000 の警告が表示されます。

CA2000に関連する指示に従いましたが、最終的に次の方法になりました。ただし、まだ CA2000 警告が表示されます。

誰かが私の間違いを見つけてもらえますか?

編集

tempWriterによって参照されているライターを破棄したくありません。これは一時的なオブジェクトではなく、単なる一時的な参照です。try ブロック内で障害が発生した場合にのみ破棄します (したがって、tempWriterが null に設定されることはなく、finally ブロックの if ステートメントによってリソースがクリアされます)。この障害が発生しない限り、tempWriterを破棄したくありません。オブジェクト自体は、ResetWriter(tempWriter)によってプロパティに設定された後も引き続き使用する必要があります。これは、CA2000 の規則によるものです。http://msdn.microsoft.com/en-us/library/ms182289.aspx?queryresult=true を参照してください。

明確にするために、ResetWriterの機能を次に示します。Writerは静的プロパティです。このメソッドは古いライターを破棄し、新しいライターを設定します。

編集

SLaksが述べたように、それは誤検知だと思います。ResetWriter の内容を取得し、それらを ResetWriter の呼び出しの代わりに配置すると (本質的に抽出メソッドのリファクタリングが逆になります)、CA2000 は消えます。

つまり、次の場合、CA2000 警告は表示されません。

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

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

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

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

ndepend - 「スコープを失う前にオブジェクトを破棄する」の NDepend ルール

コードの品質を強化し、フレームワークの使用法を正しくするための取り組みの一環として、NDepend を評価しています。 CA2000: Dispose objects before loss scopeと同等の記述方法を探しています。他の誰かがこれをやろうとしましたか、またはそれを行う方法についての知識を持っていますか?

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

c# - C#コード分析CA2000

コード分​​析でCA2000の警告を修正したと思った機能がありますが、消えません。警告はSqlCommandにあります。関数は次のとおりです。

別の関数がありますが、見た目は変わりませんが、CA2000警告が関連付けられていません。その機能は次のとおりです。

ここで何が起こっているのか、それを修正するために何をする必要があるのか​​わかりません。

0 投票する
4 に答える
5936 参照

c# - 適切な破棄方法: オブジェクトはすべての例外パスに沿って破棄されません

84 行目と 85 行目 (行を使用して積み重ねられた 2 つ) で次のメッセージが表示されます。

CA2000 : Microsoft.Reliability : メソッド 'RavenDataAccess.GetRavenDatabase()' で、オブジェクト '<> g_initLocal9' がすべての例外パスで破棄されません。オブジェクト '<>g _initLocal9' で System.IDisposable.Dispose を呼び出してから、オブジェクトへのすべての参照が範囲外になります。

DocumentStore は IDisposable を実装します。

なんで?DocumentStore オブジェクトを破棄するには、他にどのような方法がありますか? これらは using ブロックで作成され、catch ブロックで破棄します。これはどのように修正する必要がありますか?