コードメトリクスを計算する[クローズ]


87

プロジェクトのコードメトリクス(コード行数、循環的複雑度、結合度、凝集度など)を計算し、時間の経過とともに傾向を示すグラフを生成するツールはありますか?


言語によって異なりますが、どの言語を使用していますか?
Valentin Rocher 2010年

回答:


67

最新のプロジェクトでは、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をお勧めします。

次のツールで傾向分析を実行できます。


SourceMonitorはWindows専用のツールのようです。他のオペレーティングシステム(Linux、BSD、Mac)にも同様の何かが存在しますか?
Mnementh 2008

Mnementh、私はWindows開発者です、FOSSの人のためのそのようなツールを知りません。たぶん、WineエミュレーターでSourceMonitorを実行してみることができますか?
aku

2
今C ++、CppDependためのNDependのタイプのツールがあります
Goosey

SourceMonitorは非営利目的でのみ使用されます。
スコット混合理论2013

2
@Kevin混合理论ライセンスを注意深く読んでください-あなたはそれを売ることができないどんな環境でもそれを使うことができます。「つまり、この実行可能ファイルを独自のソフトウェア開発努力の一部として使用することはできますが(商用またはその他の方法で)、販売することはできません...」
ナタリーアダムス

12

Sonarは、特にJavaプロジェクトの場合、考慮しなければならないツールです。ただし、PHPまたはC / C ++、FlexおよびCobolコードも処理します。

これは、プロジェクトのいくつかのメトリックを示すスクリーンショットです。

代替テキストhttp://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

http://nemo.sonarsource.orgのデモサイトを使用してツールを試すことができることに注意してください。


どうやらSOは私にリンクを修正させません-リンクは次のようになります:nemo.sonarsource.org
ナタリーアダムス


8

IDE用のコードメトリクスツール/プラグインも探していましたが、私が知る限り、指定された期間の複雑さのグラフを表示するものはありません(つまり、日食の場合)。しかし、私は日食メトリクスプラグインを見つけました、それは扱うことができます

  • マッケイブの循環的複雑度
  • 遠心性カップリング
  • メソッドの凝集度の欠如
  • メソッドのコード行
  • フィールド数
  • レベル数
  • 対象となる地元住民の数
  • パラメータの数
  • ステートメントの数
  • クラスごとの加重メソッド

そしてそれを使用している間、私はあなたが探しているグラフ作成オプションも見逃しませんでした。
時間の経過とともにグラフを処理できるプラグイン/ツールが見つからない場合は、自分に最も適し、必要なすべての情報を提供するツールを検討する必要があると思います。与えられた情報がプロジェクトの現在のビルドのみのものであっても。

補足として、eclipseメトリックプラグインを使用すると、データを外部ファイルエクスポートできます(リンクは例に移動します)。したがって、ソース管理ツールを使用する場合は、いつでも特定のデータをエクスポートできます。ファイルをソースコードと一緒にビルドして保存します。そうすれば、過去にさかのぼって違いを確認する(基本的な)方法がまだあります。


4

覚えておいてください、あなたが測定するものはあなたが得るものです。locは生産性や効率性については何も述べていません。

コード行でプログラマーを評価すると、コード行が得られます。同じ議論が他の指標にも当てはまります。

otoh .. http://www.crap4j.org/は、非常に保守的で有用な指標です。カバレッジに関連して複雑さを設定します。


2
コメントの行でプログラマーを評価すると、...コメントの行が表示されます。
EML 2016年


3

ツールNDependに関しては、コード行数からメソッドランク(人気)、循環的複雑度、メソッドの凝集度の欠如、カバレッジ率(NCoverまたはVSTSから抽出)、継承の深さまで、82の異なるコードメトリックが付属しています。 。

そのルールシステムでは、NDependのも、問題を発見し、推定できる技術的負債メトリック興味深いコードです(DEV-努力の量修正の問題にDEV-時間の量の問題が未確定させるために年間台無し)。

これらの指標はすべてここで詳しく説明されています


2

.NETスペースを使用している場合、Developer ExpressのCodeRushは、LOC、循環的複雑度、およびコードの(かなり優れたIMHOメンテナンス複雑度分析をリアルタイムで提供します。

(Maintenance Complexityリンクについては申し訳ありません。Googleのキャッシュに送られます。元のリンクはオフラインATMのようです)。


2

Atlassian FishEyeは、この仕事のためのもう1つの優れたツールです。ソース管理システム(現在はCVS、SVN、Perforceをサポート)と統合し、すべてのファイルをそのように分析します。ただし、分析はかなり基本的なものであり、製品自体は商用です(ただし、非常に手頃な価格のIMOです)。

Crucibleと呼ばれる、ピアコードレビューを容易にするアドオンを入手することもできます。


2

Visual Studio .NET(少なくともC#とVB.NET)の場合、無料のStudioToolsがメトリックに非常に役立つことがわかりました。また、ReSharperなどの商用ツールに見られる多くの機能を追加します。


2

コードアナライザーは、この種のメトリックを生成するシンプルなツールです。

代替テキスト
(出典:teel.ws


3
GUIは素晴らしいように見えますが、生成されるメトリックはまったく役に立たないように見えます。たとえば、「ファイルごとの空白行」ですか?
kizzx2 2010年




0

PHPの面では、たとえばphpUnderControlにphpUnitを介したメトリックが含まれていると思います(私が間違っていない場合)。

メトリックには欠陥があることが多いことに注意してください。たとえば、些細な問題に取り組んでいるコーダーは、複雑な問題を解決しているコーダーよりも多くのコードを生成し、グラフの見栄えを良くします。


0

傾向分析を行っている場合、SLOCを超えて測定することは本当に意味がありますか?

末尾のセミコロンに対してgrepを実行し、返された行数をカウントするだけの場合でも、必要なのはSLOC測定手法の一貫性です。このようにして、今日の測定値を先月の測定値と有意義な方法で比較できます。

マッケイブ循環的複雑度の傾向が何をもたらすのか、私には本当にわかりません。開発者にフィードバックを提供するために、品質のスナップショットとしてCCをもっと使用する必要があると思います。

編集:ああ。役に立つかもしれない他のいくつかの測定について考えてみてください。SLOCおよびテストカバレッジのパーセンテージとしてのコメント。どちらも滑らせたくない。これらのいずれかを改造するために戻ってくることは、「瞬間の暑さの中で」それらを行うことほど神ではありません。

HTH。

乾杯、

ロブ


0

ScitoolsのUnderstandには、多くのコードメトリックを生成する機能があります。私はコードメトリクス機能の経験があまりありませんが、静的分析機能は一般的に素晴らしく、価格は非常にリーズナブルでした。サポートは素晴らしかった。


0

Project Code Meterは、コーディングの進行状況の指標をSLOC、時間、生産性のパーセンテージで示す差分開発履歴レポート(Excel形式)を提供します(時間の見積もりは循環的複雑度やその他の指標に基づいています)。次に、Excelで必要なグラフを簡単に作成できます。

ステップバイステップで説明しているこの記事を参照してください:http//www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm


0

Javaの場合、60を超えるソースコードメトリックを計算し、時間の経過とともにすべての変更を追跡し、ソースコードの保守性の全体的な評価を提供するツールQualityGateを試すことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.