プロジェクトのコードメトリック(コード行数、循環的複雑度、結合度、凝集度など)を計算し、時間の経過とともに傾向を示すグラフを生成するツールはありますか?
19 に答える
最新のプロジェクトでは、SourceMonitorを使用しました。これは、コードメトリクス分析のための優れた無料ツールです。
SourceMonitor公式サイトからの抜粋は次のとおりです。
- ソースファイルを介した高速なシングルパスでメトリックを収集します。
- C ++、C、C#、VB.NET、Java、Delphi、Visual Basic(VB6)、またはHTMLで記述されたソースコードのメトリックを測定します。
- C ++、C、C#、VB.NET、Java、およびDelphiのメソッドおよび関数レベルのメトリックが含まれています。
- ソフトウェア開発プロジェクト中の比較のために、メトリックをチェックポイントに保存します。
- メトリックを表およびチャートで表示および印刷します。
- 標準のWindowsGUI内、またはXMLコマンドファイルを使用したスクリプト内で動作します。
- メトリックをXMLまたはCSV(カンマ区切り値)ファイルにエクスポートして、他のツールでさらに処理します。
単に最高のツールであるNDependの横にある.NETについては、 vilをお勧めします。
次のツールで傾向分析を実行できます。
Sonarは、特に Java プロジェクトの場合、検討する必要があるツールであることは間違いありません。ただし、PHP または C/C++、Flex、および Cobol コードも処理します。
プロジェクトのいくつかのメトリックを示すスクリーンショットを次に示します。
代替テキスト http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png
http://nemo.sonarsource.orgのデモ サイトを使用してツールを試すことができることに注意してください。
NDepend for .net
IDE用のコードメトリクスツール/プラグインも探していましたが、私が知る限り、指定された期間の複雑さのグラフを表示するものはありません(つまり、日食の場合)。しかし、私はEclipseメトリクスプラグインを見つけました。それは以下を処理できます。
- マッケイブの循環的複雑度
- 遠心性カップリング
- メソッドの凝集度の欠如
- メソッドのコード行
- フィールド数
- レベル数
- 対象となる地元住民の数
- パラメータの数
- ステートメントの数
- クラスごとの加重メソッド
そしてそれを使用している間、私はあなたが探しているグラフ作成オプションも見逃しませんでした。
時間の経過とともにグラフを処理できるプラグイン/ツールが見つからない場合は、自分に最も適し、必要なすべての情報を提供するツールを検討する必要があると思います。与えられた情報がプロジェクトの現在のビルドのみのものであっても。
ちなみに、Eclipseメトリックプラグインを使用すると、データを外部ファイルにエクスポートできます(リンクは例に移動します)。したがって、ソース管理ツールを使用する場合は、いつでも特定のデータをエクスポートできます。ファイルをソースコードと一緒にビルドして保存します。そうすれば、過去にさかのぼって違いを確認するための(基本的な)方法がまだあります。
覚えておいてください、あなたが測定するものはあなたが得るものです。locは生産性や効率性については何も述べていません。
コードの行でプログラマーを評価すると、コードの行が得られます。同じ議論が他の測定基準にも当てはまります。
otoh .. http://www.crap4j.org/は、非常に保守的で有用なメトリックです。カバレッジに関連して複雑さを設定します。
NDepend、私はそれを使用しており、この目的に最適です。これを確認してください: http://www.codeproject.com/KB/dotnet/NDepend.aspx
ツールNDependに関しては、コードの行数からメソッド ランク (人気)、循環的複雑度、メソッドの結束の欠如、パーセンテージ カバレッジ (NCover または VSTS から抽出)、継承の深さまで、82 の異なるコード メトリックが付属しています。 .
NDepend はそのルール システムを使用して、問題を検出し、興味深いコード メトリクスである技術的負債を見積もることもできます(問題を修正するための開発努力の量と、問題を未修正にするために年間に費やされる開発時間の量) 。
これらすべての指標については、こちらで詳しく説明しています。
Visual Studio .NET (少なくとも C# と VB.NET) の場合、無料のStudioToolsがメトリクスに非常に役立つことがわかりました。また、ReSharperなどの商用ツールに見られる多くの機能を追加します。
Code Analyzerは、この種のメトリクスを生成するシンプルなツールです。
(出典:teel.ws)
Atlassian FishEye は、この仕事のためのもう 1 つの優れたツールです。ソース管理システム (現在は CVS、SVN、および Perforce をサポート) と統合し、すべてのファイルをそのように分析します。ただし、分析はかなり基本的なものであり、製品自体は商用です(ただし、非常に手頃な価格、IMO)。
ピア コード レビューを容易にする Crucible と呼ばれるアドオンを入手することもできます。
Pythonの場合、pylintはいくつかのコード品質メトリックを提供できます。
Visual Studio にはCode Metrics Viewer Exentionをお勧めします。
一度に解決策を分析するのは非常に簡単です。進歩した場合は比較も行います;-)
.NET を使用している場合に備えて、 Reflector用のコード メトリック プラグインもあります。
Project Code Meterは、SLOC、時間、および生産性パーセンテージでコーディングの進捗状況を示す差分開発履歴レポート (Excel 形式) を提供します (時間の見積もりは循環的複雑度およびその他の指標に基づいています)。その後、Excel で必要なグラフを簡単に作成できます。
ステップバイステップで説明しているこの記事を参照してください: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm
PHP の面では、たとえばphpUnderControlにはphpUnitを介したメトリックが含まれていると思います(私が間違っていなければ)。
メトリクスにはしばしば欠陥があることに注意してください。たとえば、些細な問題に取り組んでいるコーダーは、複雑な問題を解読しているコーダーよりも多くのコードを生成し、グラフの見栄えが良くなります。
トレンド分析を行っている場合、SLOC を超えて測定することに本当に意味があるのでしょうか?
末尾のセミコロンに対して grep を実行し、返された行数をカウントするだけでも、SLOC 測定手法の一貫性が得られます。このようにして、今日の測定値を先月の測定値と意味のある方法で比較できます。
McCabe Cyclometric Complexity のトレンドが何をもたらすのか、私にはよくわかりません。開発者にフィードバックを提供するために、品質のスナップショットに CC をもっと使用する必要があると思います。
編集:ああ。役に立つかもしれない他のいくつかの測定値を考えてみてください。SLOC およびテスト カバレッジのパーセンテージとしてのコメント。どちらも滑らせたくありません。これらのいずれかを改造するために戻ってくることは、「その瞬間に」それらを行うことほど神ではありません!
HTH。
乾杯、
ロブ
Java の場合は、60 以上のソース コード メトリクスを計算し、時間の経過に伴うすべての変更を追跡し、ソース コードの保守性に関する全体的な評価も提供する、当社のツールであるQualityGateを試すことができます。
Scitools の Understandingには、多くのコード メトリクスを生成する機能があります。コード メトリクス機能についてはあまり経験がありませんが、一般的に静的解析機能は素晴らしく、価格も非常にリーズナブルでした。サポートは素晴らしかった。