1

現在、コード分析がオンになっていないプロジェクトに取り組んでいます。

私がやりたいことは、チェックインする前に作業/タッチするファイルに対して CA を実行することですが、いくつかの制限があります。

  • プロジェクトで有効にするオプションがありません。やったとしても…
  • プロジェクトは巨大です。CA の実行には時間がかかり、警告は多数あります。触れたファイルをリストから選ぶのは、干し草の山の中の針のようなものです。

誰にもアイデアはありますか?

4

1 に答える 1

0

アイデアは、ツールNDependを介してコードルールを実行することです(免責事項:私はツールの開発者の1人です)。

私がやりたいのは、私が操作/タッチしているファイルに対してCAを実行することです。

この最初の点に関して、NDependはLINQクエリを介してコードルールを記述します。提案された機能の1つは、現在のコードバージョンと以前のバージョンのコード(ベースライン)との間のコード差分をクエリすることです。したがって、ユーザーは、現在からベースラインまでの間に変更された内容のみに焦点を当てたコードルールを記述できます。

約200のデフォルトのコードルールが提案されています。たとえば、複雑なメソッドをさらに複雑にすることは避けてください。このルールのLINQコードを見ると、最初にCodeWasChangedのメソッドのみをフィルタリングしてから、十分に複雑で、さらに複雑になったメソッドを検出していることがわかります。ここでは、メソッドの複雑度は、一般的なコードメトリックである循環的複雑度によって定義されます。

// <Name>Avoid making complex methods even more complex (Source CC)</Name>

warnif count > 0 
from m in JustMyCode.Methods where
  m.CodeWasChanged() // <-----

let oldCC = m.OlderVersion().CyclomaticComplexity
where oldCC > 6 && m.CyclomaticComplexity > oldCC 

select new { m,
    oldCC ,
    newCC = m.CyclomaticComplexity ,
    oldLoc = m.OlderVersion().NbLinesOfCode,
    newLoc = m.NbLinesOfCode,
}

すべてのデフォルトまたはカスタムルールは、ベースライン以降にリファクタリングされたコードまたは導入されたコードに制限されるように適合させることができます。コードルールのグループCodeQualityRegressionまたはAPIBreakingChangesには、これらの適合コードルールがすぐに含まれています。

ポイントに関しては、CAの実行には時間がかかり、警告は多数あります。今すぐNDependを試してみてください。そうすれば、待たされることはありません。大規模なコードベースを分析し、200個のデフォルトルールを実行するのに数秒かかります(これらは単なるC#LINQクエリであるため簡単にカスタマイズできます)。

于 2012-11-08T08:07:36.027 に答える