レガシー コードで FxCop を始めるにはどうすればよいですか?
-
22-08-2019 - |
質問
FxCop をレガシー コードに導入した経験のある人はいますか?誰かがルールに違反するコードを導入した場合、ビルドが失敗するようにしたいと考えています。しかし、従来のコードには 9000 件以上の違反があるため、当面はこれは不可能です。
私が知っているエラーを抑制する唯一の方法は SuppressMessage 属性を使用することですが、それはメソッドと GeneratedCodeAttribute でのみ機能します。この最後のものは (私の記憶が正しければ) クラスと名前空間に使用できますが、非生成コードには使用すべきではありません (「 ここ).
現在、違反を削除するのに毎日ある程度の時間を費やしていますが、ビルドは失敗しないため、新しい違反が引き続き導入されています。
何か案は?
解決
私は似たような状況になっています。私はいくつかの時間前に、既存のプロジェクトにFxCopの使用を開始し、開始時にかなりの数のエラーが発生しました。私がやったことは、私が行ったとしてエラーを解決、一度に1つのグループをオンにし、その後、すべてのルールをオフにします。
セキュリティとパフォーマンスグループは、開始するには良い場所です - 彼らは私が私が前に気づいていなかった問題を見つける助けました。ルールのいくつかは主観的であり、すべてであれば、完全に、あなたのプロジェクトに適用されない場合があります。国際化が問題ではない場合、例えば、そのグループがオフになったまま。そのような命名規則として、あなたには適用されない特定のルールがある場合、それらをオフにします。
あなたが特定のルールにエラーのセットをクリアするために管理する場合は、、あなたはルールが、将来的に違反していることと失敗するビルドを設定することができます。そこで、新たなエラーがでクリープません。
は、それはいくつかのサイズのプロジェクトだ場合は、単にルールの妥当性/重要性を確認し、一度ルールを移動し、それが適用されない場合はどちらかのエラーを修正したり、ルールをオフにします。
他のヒント
自分でこれを尋ねることによって開始します。あなたは喜んでとFxCopのルールに準拠するレガシーコードを変更することができますか?それとも別々にそれを置くために:?これはあなたの時間を過ごすための最良の方法です。
あなたが時間と労力を費やすことを喜んでいる場合は、は、あなたが全体の品質のための最も重要な発見し、それらを実装する規則の小さな一握りを選ぶことから始めます。これが役に立つ場合は、いくつかのルールを追加することができ、などのコードを修正します。
私の経験ではFxCopのルールなどを実装するためのビッグバンアプローチはありません。唯一の実行可能な方法は、一度に小さなチャンクを取ることです。
あなたはFxCopのプロジェクトで、古い違反の例外を追加することができます。そうすれば、あなたの既存のコードに任意の属性を追加する必要はありません、あなたはすべての新しい違反についての警告を取得します。
それはあなたのルールで解析を実行し、FxCopのGUIでプロジェクトを作成するためには、その後の結果に、あなたが今のところ無視する選択違反を表示します。右クリックし、「除外」を選択します。選択した警告は、「このプロジェクトでは除外」タブに移動します。あなたが戻って取得し、それらを修正する準備ができたら、選択し、「アクティブとしてマーク」をクリックします。
これらの除外は.FxCopファイルに格納されています。
それでも、私は皆のための学習曲線を滑らかにするために、徐々にルールを導入することをお勧めしたい。
次のようなアプローチはどうでしょうか。
- プロジェクトに関連するすべてのルールを指定して FXCop を実行します
- 結果をベースラインとして保存する
- 新しいコードを開発する
- FxCop を実行する
- ベースラインからすべての結果を削除します
これにより、新しいコードに対する fxcop チェックが行われます。