2009-03-27 8 views
9

レガシーコードにFxCopを導入した経験がある人はいますか?誰かがルールに違反するコードを導入した場合、ビルドが失敗するようにしたいと考えています。しかし、当分の間、これは不可能です。レガシーコードには9000を超える違反があります。レガシーコードでFxCopをどのように使い始めるのですか?

私が知るエラーを抑制する唯一の方法は、SuppressMessage属性を使用することですが、これはメソッドとGeneratedCodeAttributeでのみ機能します。この最後のものは、クラスと名前空間に使用することができます(正しく呼び出す場合)。ただし、生成されないコードには使用しないでください(here参照)。

現在、私たちは違反を取り除くのに多少時間がかかりますが、私たちのビルドは失敗しないため、新しいものが導入され続けています。

アイデア?

答えて

6

私は同様の状況にありました。私はFxCopを既存のプロジェクトで使用し始めましたが、始めにかなりのエラーがありました。私がしたことは、すべてのルールをオフにしてから、一度に1つのグループをオンにして、私が行ったときにエラーを解決することでした。

セキュリティとパフォーマンスのグループは、私が以前に気づいていなかった問題を見つける手助けとなりました。ルールのいくつかは主観的なものであり、プロジェクトに完全には適用されない場合もあります。たとえば、国際化が問題でない場合は、そのグループをオフのままにします。名前付け規則など、あなたに適用されない特定の規則がある場合は、それらを無効にします。

特定のルールのエラーセットをクリアすると、そのルールが将来違反された場合にビルドが失敗するように設定できます。

それはあるサイズのプロジェクトであれば、一度にルールに進み、ルールの関連性/重要性を確認して、エラーを修正するか、適用されない場合はルールをオフにします。 。どのように以下のアプローチについて

2

まず、FxCopルールに準拠するようにレガシーコードを変更したいと思っていますか?それとも違うか:これはあなたの時間を過ごす最善の方法ですか?

時間と労力を費やしたい場合は、全体の品質にとって最も重要なルールをいくつか選んで実装します。これが役に立つ場合は、いくつかのルールを追加したり、コードを修正したりすることができます。

私の経験では、FxCopルールなどを実装するための大きなアプローチはありません。唯一実現可能な方法は、一度に小さなチャンクを取ることです。

+0

+1合意した、重要な一度に一口。 –

2

FxCopプロジェクトで古い違反の例外を追加できます。そうすれば、既存のコードに属性を追加する必要はなくなり、すべての新しい違反について警告が表示されます。

これを行うには、FxCop GUIでプロジェクトを作成し、ルールで分析を実行してから、結果ビューで無視したい違反を選択します。右クリックして[除外]を選択します。選択した警告が[プロジェクトで除外]タブに移動します。戻って修正する準備ができたら、「アクティブとしてマークする」を選択してクリックします。

これらの除外項目は、.FxCopファイルに格納されています。

まだ、皆さんの学習曲線を円滑にするため、徐々にルールを導入することをおすすめします。

+0

これはどのように正確に行いますか?これは、「修正が急激な変化であるレガシーコードに対してメッセージを発信しない」オプションですか? FxCop 1.36ベータ版(これは現在使用しています)になっているようです。そしてFxCopは、どの違反が新しいのか、そして古いのかをどのように知っていますか? – Peter

+0

FxCopのバージョンで話しているオプションが表示されません(1.36)。投稿するために「プロジェクトで除外」についての説明が追加されました。 –

0

:ベースライン

  • として、プロジェクト
  • 保存結果に関連する

    1. 実行FxCopの上のすべてのルールとは、新しいコード
    2. 実行FxCopの
    3. を開発しますベースラインからすべての結果を削除する

    これはあなたの新しいコードのfxcopチェックになります....

  • 関連する問題