2012-02-29 11 views
2

私はANTLRから生成されたC#コードを持っています。 stylecop/fxcop/visualスタジオコード解析で、このファイルを無視して確認する方法を教えてください。 FxCopのためには、ファイルを生成しましたか?

答えて

3

、決定的な方法は[GeneratedCode]属性を使用してコードを飾ると、生成されたコードをチェックするオプションを無効にすることです。詳細は、VSおよび/またはFxCopのバージョンによって異なります。 correct usage of the attributesのこのブログ記事を参照してください。

StyleCopはその属性を無視していますが、他のいくつかのオプションがあります。

  • 名、ファイル「Whatever.Designer.csを」とあなたStyleCop.settingsファイルでそのオプションを設定します。
  • それで<auto-generated />どこかを含むファイルのXMLヘッダーをインクルードします。

さらに、両方のツールの最新のバージョンでは、その名前に "generated code"というフレーズが含まれる領域内にあるコードは無視されるようです。たとえば、あなたのWindowsフォームで使用すると、この表示されます* .Designer.csファイル:両方と

#region Windows Form Designer generated code 

/// <summary> 
/// Required method for Designer support - do not modify 
/// the contents of this method with the code editor. 
/// </summary> 
private void InitializeComponent () 
{ 
    // stuff here 
} 

#endregion 

コード分析とStyleCopは、その領域内のコードを無視するが、それでも、このファイルの残りの部分に対して実行されます。 (デザイナーファイルを無視する場合は、StyleCopは.Designer.csで終わるため、ファイル全体が無視されます。)

この2つのツールでは、 (。適切に自分自身を除外することを気にしない、自動生成されたコードの量と同じくらいイライラ - 、ここであなたを見ているEF)コードを無視する問題を、コード分析は、メタデータを属性を持つあなたのコンパイルされたコードを(チェックするということですコメントは表示されません)、StyleCopはソースコードをチェックします(メタデータ属性の範囲は追跡するのが難しいですが、まだ可能です)。私はオプションの混合物を使用する傾向がある私のテンプレートで

:私はそれで<auto-generated>タグとStyleCop対応のヘッダーを含めるし、その後[GeneratedCode]で、各コード要素を飾る、すべてをキャッチしているようです。他の方法は@headersを使用している可能性があり

0

(おそらく私の自動生成されたコードも最初の場所:)で規則に違反しないように一生懸命しようとすることは言うまでもないです)。

@lexer::header { 
    #pragma warning disable 1591 
} 

@parser::header { 
    #pragma warning disable 1591 
} 
0

さて、私は「部分的」でありANTLRは、ファイルを生成していることに気づいたので、私はただ、第二のファイルを作成した「部分的に」は任意のフィールドやメソッドを持つクラスなしとも同じクラスを追加しましたが、追加しましたクラスに属性を次

[GeneratedCodeAttribute( "ANTLR"、 "3.0.0.0")]

は、私はTFSのソース管理に、このファイルをチェックします。このように、クラスは生成されたコード属性セットを持ち、CodeAnalysis/FxCopはクラス全体を無視します。しかし、自動生成されたコードをチェックしないようにCodeAnalysisを設定する必要があります(適切なチェックボックスはチェックされています)。

関連する問題