プロジェクトのコードメトリクス(コード行数、循環的複雑度、結合度、凝集度など)を計算し、時間の経過とともに傾向を示すグラフを生成するツールはありますか?
回答:
最新のプロジェクトでは、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のデモサイトを使用してツールを試すことができることに注意してください。
IDE用のコードメトリクスツール/プラグインも探していましたが、私が知る限り、指定された期間の複雑さのグラフを表示するものはありません(つまり、日食の場合)。しかし、私は日食メトリクスプラグインを見つけました、それは扱うことができます:
そしてそれを使用している間、私はあなたが探しているグラフ作成オプションも見逃しませんでした。
時間の経過とともにグラフを処理できるプラグイン/ツールが見つからない場合は、自分に最も適し、必要なすべての情報を提供するツールを検討する必要があると思います。与えられた情報がプロジェクトの現在のビルドのみのものであっても。
補足として、eclipseメトリックプラグインを使用すると、データを外部ファイルにエクスポートできます(リンクは例に移動します)。したがって、ソース管理ツールを使用する場合は、いつでも特定のデータをエクスポートできます。ファイルをソースコードと一緒にビルドして保存します。そうすれば、過去にさかのぼって違いを確認する(基本的な)方法がまだあります。
覚えておいてください、あなたが測定するものはあなたが得るものです。locは生産性や効率性については何も述べていません。
コード行でプログラマーを評価すると、コード行が得られます。同じ議論が他の指標にも当てはまります。
otoh .. http://www.crap4j.org/は、非常に保守的で有用な指標です。カバレッジに関連して複雑さを設定します。
NDepend、私はそれを使用しており、この目的に最適です。これを確認してください:http: //www.codeproject.com/KB/dotnet/NDepend.aspx
Visual Studio .NET(少なくともC#とVB.NET)の場合、無料のStudioToolsがメトリックに非常に役立つことがわかりました。また、ReSharperなどの商用ツールに見られる多くの機能を追加します。
.NETを使用している場合に備えて、リフレクター用のコードメトリクスプラグインもあります。
VisualStudioにはCodeMetrics ViewerExentionをお勧めします。
一度にソリューションを分析するのは非常に簡単です。進歩した場合は比較も行います;-)
PHPの面では、たとえばphpUnderControlにはphpUnitを介したメトリックが含まれていると思います(私が間違っていない場合)。
メトリックには欠陥があることが多いことに注意してください。たとえば、些細な問題に取り組んでいるコーダーは、複雑な問題を解決しているコーダーよりも多くのコードを生成し、グラフの見栄えを良くします。
傾向分析を行っている場合、SLOCを超えて測定することは本当に意味がありますか?
末尾のセミコロンに対してgrepを実行し、返された行数をカウントするだけの場合でも、必要なのはSLOC測定手法の一貫性です。このようにして、今日の測定値を先月の測定値と有意義な方法で比較できます。
マッケイブ循環的複雑度の傾向が何をもたらすのか、私には本当にわかりません。開発者にフィードバックを提供するために、品質のスナップショットとしてCCをもっと使用する必要があると思います。
編集:ああ。役に立つかもしれない他のいくつかの測定について考えてみてください。SLOCおよびテストカバレッジのパーセンテージとしてのコメント。どちらも滑らせたくない。これらのいずれかを改造するために戻ってくることは、「瞬間の暑さの中で」それらを行うことほど神ではありません。
HTH。
乾杯、
ロブ
ScitoolsのUnderstandには、多くのコードメトリックを生成する機能があります。私はコードメトリクス機能の経験があまりありませんが、静的分析機能は一般的に素晴らしく、価格は非常にリーズナブルでした。サポートは素晴らしかった。
Project Code Meterは、コーディングの進行状況の指標をSLOC、時間、生産性のパーセンテージで示す差分開発履歴レポート(Excel形式)を提供します(時間の見積もりは循環的複雑度やその他の指標に基づいています)。次に、Excelで必要なグラフを簡単に作成できます。
ステップバイステップで説明しているこの記事を参照してください:http: //www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm
Javaの場合、60を超えるソースコードメトリックを計算し、時間の経過とともにすべての変更を追跡し、ソースコードの保守性の全体的な評価を提供するツールQualityGateを試すことができます。