10

最近使い始めました。ただし、私の会社の最大のプロジェクトの1つに対して実行した後。それは山のような問題を引き起こします。

問題のリストは圧倒的で、すべてではないにしても、いくつかを見つけて修正するのに何日もかかりました。

さて、FxCop が修正するように指示するすべてを修正するのはあまり現実的ではないことはわかっています。しかし、私はこの小さなツールに慣れていないので...

FxCop を効果的に使用するためのヒントとコツは何ですか?

新しいプロジェクトと既存のプロジェクトで?

また、私の会社のプログラマーが一般的に優れたコードを書いている場合はどうなりますか?

4

7 に答える 7

4

最初は小さなルールセットから始めることができます。次に、適用するルールの数を増やします。

また、この質問の回答を確認する必要があります...

于 2009-01-09T19:01:36.133 に答える
3

fxCop を 1 回実行し、見つかったものをすべて除外して、ベースラインを作成します。

これを .fxcop ファイルとして保存し、それを使用して今後のチェックを実行します。

次に、コードに変更を加えると、管理しやすい新しい違反が作成されます。たとえば、メソッドの署名を変更すると、FxCop はフラグを立て直します。

時間があれば、違反の除外を解除して、一度に 1 つずつ違反のカテゴリに取り組むことができます。

于 2009-01-09T18:56:00.933 に答える
3

組織にとって重要でないものは確実に除外してください。たとえば、国際化ブロック全体は、私たちのプロジェクトの 1 つにとってほとんど重要ではなかったので、それを除外しただけで、リストを管理しやすくするのに十分でした。(そのブロックには実装したい素晴らしい提案がいくつかありますが、その時点ではアプリにとって重要ではありませんでした。)

また、いくつかの FxCop プロジェクトを作成して、例外をグループ化して、管理しやすい数になるまで (「今すぐ修正」、「すぐに修正」、「いつでも修正」) することもできます。

ポリシーに適したリストができるまで、違反を除外/含めるのに 1 週​​間を費やしたと確信しています。次に、違反を修正するだけの別の2-3。:-(

于 2009-01-09T20:04:27.740 に答える
2

FxCopについてのことは、それが設計された特定のユースケースのための優れたツールであるということです。これは、クラスライブラリ開発者を支援するために設計されました。したがって、Developer ExpressまたはInfragisticsであり、世界中の開発者が使用するコードライブラリを作成している場合は、適切な命名、適切なグローバリゼーション、およびその他の多くのものが必要です。

したがって、すべてのフォームにfrmMainのような名前を付けると、クラスライブラリでは見苦しいため、FxCopは文句を言います。ただし、社内のWinFormsアプリで作業しているだけの場合は、気にする必要はありません。同様に、IFormatProvider、テキストの方向を指定するMessageBoxのオーバーロードなどに関するすべてのものに夢中になります。ただし、世界中のユーザー向けのコードを作成しているのでない限り、それらは無視してかまいません。

重要なことは、FxCopの対象読者を理解することです。そのオーディエンスとの違いに基づいて、特定の推奨事項を無視できます。

于 2009-01-28T01:24:44.833 に答える
1

出力をルールのタイプでソートします...次に、ソートリストを調べて、壊れたルールタイプのどのサブセットが重要であり、IYO を修正する価値があるかを確認します。

于 2009-01-09T19:07:56.743 に答える
1

fxCop が報告するすべてが「修正が必要な」問題というわけではありません。たとえば、文字列連結を使用してユーザー入力をデータベース コマンドに挿入することは、より具体的な例外ではなく、ハンガリー語やキャッチ例外などのスタイルの問題よりもはるかに悪いです。

于 2009-01-09T19:13:04.223 に答える
0

FxCopの代わりに、ツールNDependを使用することもできます。このツールを使用すると、C#LINQクエリCQLinqと呼ばれるもの)を介してコードルールを記述できます。免責事項:私はツールの開発者の1人です

デフォルトでは、200を超えるコードルールが提案されています。よく知られているC#LINQ構文のおかげで、既存のルールをカスタマイズしたり、独自のルールを作成したりするのは簡単です。

誤検知の数を低く抑えるために(つまり、圧倒的なレポートを回避するために)、CQLinqは、接頭辞notmycodeを付けた特別なコードクエリを介してJustMyCodeのセットを定義する独自の機能を提供します。この機能の詳細については、こちらをご覧ください。たとえば、2つのnotmycodeデフォルトクエリを次に示します。

誤検知の数を低く抑えるために、CQLinqを使用すると、過去に定義されたベースライン以降、追加されたコードまたはリファクタリングされたコードのみにルール結果を集中させることもできます。ベースライン以降に追加またはリファクタリングされた複雑すぎるメソッドを検出する次のルールを参照してください。

warnif count > 0 
from m in Methods
where m.CyclomaticComplexity > 20 &&
      m.WasAdded() || m.CodeWasChanged()
select new { m, m.CyclomaticComplexity }

最後に、NDependを使用すると、コードルールをVisual Studioでライブで確認でき、ビルドプロセス時に生成されたHTML+javascriptレポートで確認できます。

于 2010-10-19T12:36:53.373 に答える