web-dev-qa-db-ja.com

Stylecop vs FXcop

StylecopはFXcopに取って代わりましたか? Visual Studio 2008で使用する製品はどれですか?

92
JL.

Stylecopは、ソースコードレベルで機能するスタイル分析ツールです。主に、マネージドプロジェクトがより大きなマネージドソフトウェアの世界で一貫性を保つために使用できる単一の共通スタイルを提供するために存在します。主に聖戦を避けるためにスタイルに関する決定を下します(結局、スタイルは本質的に主観的なものです)。 StyleCopのすべてのルールが好きな人に会ったことはないと思いますが、それはokです。つまり、StyleCopは、存在する膨大なスタイルガイドラインのセットの中で、一般的に良い妥協案であることを意味します。 (stylecopのルールが単純に有効化/無効化するだけでなく、高度にカスタマイズ可能である場合、ツールの目的全体が無効になります。)

一方、FxCopは、管理対象アセンブリのレベルで機能する静的分析ツールです。コード要素の属性を見ることができるため、属性を介して指示を与えることができます。たとえば、構文レベルではなく「バイナリ」レベルで見られる問題を検出します。

あなたの質問に答えるために、StyleCopはFxCopに取って代わりません。また、FxCopはstylecopに取って代わりません。これらは2つの異なる目的を持つ2つの異なるツールであり、どちらもコードに大きなメリットをもたらします。

(別名、私は両方で実行します。:))


一方が検出する可能性があるものと、他方が検出する可能性があるもののいくつかの例:

StyleCop違反には、ホワイトスペース、書式設定、xml-commentsによるパブリックメソッドのドキュメント化、クラス内のメソッド定義の順序に関する警告が含まれる場合があります。

FxCop違反には、グローバリゼーション、密結合、循環的複雑性、潜在的なnull参照解除に関する警告が含まれる場合があります。

163
Greg D

stylecopはC#ソースコードで動作します。 fxcopは、.net言語からコンパイルされたコードを調べます。

16

FxCop/StyleCopの代替または適切な補完は、商用ツール NDepend を使用することです。このツールを使用すると、LINQクエリにコードルールを書き込むことができます(つまり、CQLinq)免責事項:私はツールの開発者の一人です

200コードルール がデフォルトで提案されています。これらには、designarchitectureコード品質コード進化命名規則dead code。NET Fx usage...

CQLinqは、 Visual Studioでライブ検証済み 、または ビルドプロセス中に検証済みでHTML/javascriptレポートで報告 のコードルールを記述することに専念しています。

FxCopまたはStyleCopに対するCQLinqの強みは、コードルールを記述し、すぐにを取得することです 結果。一致するコード要素を閲覧するための機能が提案されています。具体的には次のようになります。

CQLinq code rule

FXCopは、マネージコードアセンブリの静的コード分析を行います。実行時に問題を引き起こす問題、または開発者がコードの実行を信じる方法に影響を与える問題(到達不能コード)を見つけることと考えてください。

StyleCopは、テキストの観点からコードの構造を分析します。これは、開発と設計の経験に影響を与える問題と考えてください(書式設定、命名規則、ドキュメント)

どちらも非常に貴重なツールであり、両方を使用する必要がありますが、異なる問題に焦点を合わせています。

6
AllenSanborn

StyleCopはソースコード分析を実行しますが、あまり構成できません。実際には、コンパイルされたコードを分析するFxCopと同じことはしません。

これらに関するウィキペディアの記事は、違いの良い要約を提供します:

http://en.wikipedia.org/wiki/StyleCop

http://en.wikipedia.org/wiki/FxCop

5
Andrew Rollings