9

FxCopをレガシーコードに導入した経験のある人はいますか?誰かがルールに違反するコードを導入した場合、ビルドを失敗させたいと思います。しかし、レガシーコードには9000を超える違反があるため、当面はこれは不可能です。

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

現在、違反を削除するために毎日時間がかかりますが、ビルドが失敗しないため、新しい違反が導入され続けています。

何か案は?

4

4 に答える 4

6

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

セキュリティ グループとパフォーマンス グループは、開始するのに適した場所です。これまで知らなかった問題を見つけるのに役立ちました。一部のルールは主観的なものであり、プロジェクトに完全には適用されない場合があります。たとえば、国際化が問題にならない場合は、そのグループをオフのままにします。命名規則など、適用されない特定の規則がある場合は、それらをオフにします。

特定のルールの一連のエラーを解決できた場合、将来そのルールに違反した場合にビルドが失敗するように設定できます。したがって、新しいエラーが入り込むことはありません。

ある程度の規模のプロジェクトの場合は、一度に 1 つのルールに進み、ルールの関連性/重要性を確認し、エラーを修正するか、ルールが適用されない場合はルールをオフにします。

于 2009-03-29T01:45:19.200 に答える
2

これを自問することから始めます: FxCop ルールに準拠するようにレガシー コードを変更する意思と能力がありますか? 別の言い方をすれば、これがあなたの時間を過ごす最良の方法ですか?

時間と労力を費やす意思がある場合は、全体的な品質にとって最も重要であると思われる少数のルールを選択することから始めて、それらを実装してください。これが役立つ場合は、いくつかのルールを追加したり、コードを修正したりできます。

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

于 2009-03-27T09:59:53.520 に答える
2

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

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

これらの除外は、.FxCop ファイルに保存されます。

それでも、すべての人がスムーズに学習できるように、ルールを徐々に導入することをお勧めします。

于 2009-03-27T10:05:25.037 に答える
0

次のアプローチはどうでしょうか。

  1. プロジェクトに関連するすべてのルールで FXCop を実行します
  2. 結果をベースラインとして保存
  3. 新しいコードを開発する
  4. FxCop を実行する
  5. ベースラインからすべての結果を削除する

これにより、新しいコードの fxcop チェックが行われます....

于 2009-06-24T15:23:49.360 に答える