1

私は ASP.NET プロジェクトに取り組んでいます。もちろん、投影には Global.asax ファイルがあります。Global.asax.cs ファイル内には、次の各メソッドが含まれています。これらのメソッドは [を除いてApplication_Start] 実際には空ではありませんが、実際の実装は必要ありません。

protected void Application_Start(object sender, EventArgs e){ }
protected void Session_Start(object sender, EventArgs e){ }
protected void Session_End(object sender, EventArgs e){ }
protected void Application_Error(object sender, EventArgs e){ }

Visual Studio 2008 が提供する必要がある FxCop ルールのそれぞれをゆっくりと有効にしていましたが、最近、上記の方法に関連する競合に遭遇しました。最初に遭遇したエラーは CA2109 です

CA2109 : Microsoft.Security : Consider making 'Global.Application_Error(object, EventArgs)' not externally visible.

このエラーは、メソッドごとに表示されます。これらのメソッドを手動で呼び出すことはないので、各メソッドを作成することでこの警告を取り除くことができますprivate。その後、コード分析を再実行すると、エラー CA1811 が表示されます。

CA1811 : Microsoft.Performance : 'Global.Application_Error(object, EventArgs)' appears to have no upstream public or protected callers. 

スタック オーバーフロー コミュニティの皆さんへの私の質問は次のとおりです。どの警告を聞くべきで、どの警告を抑制すべきですか? 両方の警告を満たす方法はありますか?

セキュリティがすべてに勝るので、CA2109 に耳を傾け、CA1811 を抑制する必要があると想定するのは正しいですか?

4

1 に答える 1

1

CA1811 は、実際には「呼び出されていないプライベート コードを回避する」です。これは、明示的なイベント バインディングがないため、FXCop が呼び出されていないと考えていることを意味します。Auto Event Wire Up は、それらが呼び出され、このルールを抑制することができることを意味します。または、同じ効果を持つイベントを明示的に処理することもできます。

「CA2109: 表示されるイベント ハンドラーを確認してください」は、同じことを言っています。それらがイベント ハンドラーであることはわかっていますが、なぜクラスの外に表示する必要があるのでしょうか。

ルールは実際には矛盾しているわけではありません。彼らがあなたに何を示唆しているのかがはっきりしていないだけです。

于 2012-05-21T17:44:45.427 に答える