質問
プロジェクトのコード メトリクス (コード行数、循環的複雑さ、結合、凝集など) を計算し、時間の経過とともに傾向を示すグラフを生成する利用可能なツールはありますか?
解決
私が使用した最新のプロジェクトでは ソースモニター. 。これは、コードメトリクス分析のための優れた無料ツールです。
以下は SourceMonitor 公式サイトからの抜粋です。
- ソースファイルを高速で単一のパスでメトリックを収集します。
- C ++、C、C#、VB.NET、Java、Delphi、Visual Basic(VB6)またはHTMLで記述されたソースコードのメトリックを測定します。
- C ++、C、C#、VB.NET、Java、およびDelphiのメソッドおよび関数レベルメトリックが含まれます。
- ソフトウェア開発プロジェクト中に比較のためにチェックポイントにメトリックを保存します。
- テーブルとチャートにメトリックを表示および印刷します。
- XMLコマンドファイルを使用して、標準のWindows GUIまたはスクリプト内で動作します。
- 他のツールでさらに処理するために、XMLまたはCSV(CommaSeparated-Value)ファイルにメトリックをエクスポートします。
.NETの場合は次のとおりです N依存する これは単純に最高のツールですので、お勧めします 悪者.
次のツールは傾向分析を実行できます。
他のヒント
ソナー 特に Java プロジェクトの場合は、間違いなく検討する必要があるツールです。ただし、PHP または C/C++、Flex、および Cobol コードも処理します。
以下は、プロジェクトのいくつかのメトリクスを示すスクリーンショットです。
代替テキスト http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png
このツールは、次のデモ サイトを使用して試すことができます。 http://nemo.sonarsource.org
N依存する .net用
また、IDE 用のコード メトリクス ツール/プラグインも探していましたが、私の知る限り、指定された期間にわたる複雑さのグラフを表示するものはありません (Eclipse の場合)。しかし、私が見つけたのは、 Eclipseメトリクスプラグイン, 、次のものを処理できます。
- マッケイブの循環的複雑性
- 遠心性カップリング
- 手法の一貫性の欠如
- メソッド内のコード行
- フィールドの数
- レベルの数
- 範囲内のローカルの数
- パラメータの数
- ステートメントの数
- クラスごとの重み付けされたメソッド
そして、それを使用している間、私はあなたが求めているグラフ作成オプションも見逃しませんでした。
時間の経過とともにグラフ化を処理できるプラグイン/ツールが見つからない場合は、最も適しており、必要な情報をすべて提供するツールを検討する必要があると思います。たとえ指定された情報がプロジェクトの現在のビルドのみに関するものであっても。
余談ですが、 Eclipseメトリクスプラグイン できるようにします データを外部ファイルにエクスポートする (リンクは例へのリンクです) したがって、ソース管理ツールを使用している場合は、そうする必要があります。いつでも特定のビルドのデータをエクスポートし、そのファイルをソース コードとともに保存できます。そうすれば、(基本的な) ) 過去に戻って違いを確認する方法。
測定したものが結果として得られるということを心に留めておいてください。loc は生産性や効率については何も述べていません。
コード行ごとにプログラマを評価すると、次のような結果が得られます。コード行。他の指標についても同じ議論が当てはまります。
おと.. http://www.crap4j.org/ は非常に保守的で有用な指標です。カバレッジに関連して複雑さを設定します。
NDepend、私はそれを使用していますが、この目的にはそれが最適です。これをチェックして :http://www.codeproject.com/KB/dotnet/NDepend.aspx
.NET スペースにいる場合は、Developer Express を使用してください。 コードラッシュ LOC、Cyclomatic Complexity、および(かなり優れた個人的な見解)を提供します。 メンテナンスの複雑さ リアルタイムでのコードの分析。
(メンテナンスの複雑さに関するリンクについては申し訳ありません。Google のキャッシュに保存されます。オリジナルはオフラインATMのようです)。
Atlassian FishEye もこの仕事に最適なツールです。ソース管理システム (現在 CVS、SVN、および Perforce をサポート) と統合され、その方法ですべてのファイルを分析します。ただし、分析はかなり基本的であり、製品自体は商用です (ただし、価格は非常に手頃です、IMO)。
また、ピアコードのレビューを容易にする Crucible と呼ばれるアドオンを入手することもできます。
パイソンの場合、 パイリント いくつかのコード品質指標を提供できます。
もあります コードメトリクスプラグイン のために 反射板, .NET を使用している場合。
PHP に関しては、例えば次のように考えています。 phpUnderControl を介したメトリクスが含まれます phpユニット (もし私の考え違いでなければ)。
指標には欠陥があることが多いことに注意してください。たとえば、複雑な問題を解いているプログラマよりも、些細な問題に取り組んでいるプログラマの方がより多くのコードを生成し、グラフ上で見栄えがよくなります。
傾向分析を必要としている場合、SLOC を超えて測定することに本当に意味があるのでしょうか?
末尾のセミコロンに対して grep を実行し、返された行数をカウントするだけであっても、求めているのは SLOC 測定手法の一貫性です。このようにして、今日の測定値を先月の測定値と有意義な方法で比較できます。
McCabe Cyclometric Complexity の傾向が何を与えるのか、まったくわかりません。CC は開発者にフィードバックを提供するための品質のスナップショットとしてもっと使用されるべきだと思います。
編集:ああ。役に立つかもしれない他の測定値をいくつか考えてみました。SLOC およびテスト カバレッジのパーセンテージとしてのコメント。どちらも逃したくないものです。これらのいずれかを改修するために戻ってくることは、「その瞬間の熱意で」行うことほど神ほど素晴らしいことはありません。
HTH。
乾杯、
ロブ
Scitools の理解 には、多くのコード メトリクスを生成する機能があります。コード メトリクス機能についてはあまり経験がありませんが、静的分析機能は全般的に優れており、価格も非常に手頃でした。サポートは素晴らしかったです。
プロジェクトコードメーター 差分開発履歴レポート (Excel 形式) を作成します。このレポートには、コーディングの進行状況の指標が SLOC、時間、生産性パーセンテージで表示されます (時間の推定は、循環的複雑さおよびその他の指標に基づいています)。Excel を使用すると、必要なグラフを簡単に作成できます。
ステップバイステップで説明しているこの記事を参照してください。http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm
Java の場合は、私たちのツールを試すことができます。 クオリティゲート 60 を超えるソース コード メトリクスを計算し、すべての変更を経時的に追跡し、ソース コードの保守性の全体的な評価も提供します。