2

C++とJavaのパーツで構成された製品があります。C ++のものはmakeを使用してビルドされ、Javaプロジェクトはいくつかのantプロジェクトといくつかのmaven2プロジェクトで構成されています。

時間の経過とともにビルドシステムから有用なメトリックを取得するのに役立つツールを探しています。例には以下が含まれます

* Total build time
* C++ project build time
* Java build time
* Number of compiler warnings
* Number of unit tests (run/passed/failed/errors). (Tests are written in cxxTest and JUnit)
* Acceptance test metrics (run/passed/failed/errors)
* Total number of files
* LOC (to keep the managers happy)

おそらく他にもたくさんの指標が考えられますが、あなたはその考えを理解しています。

1回限りのレポートのこれらのメトリックを取得するのは非常に簡単です。私が本当に必要としているのは、これらのメトリックを時間の経過とともにプロットできるシンプルなツールです。

これが非常に役立つ単純なユースケースは、時間の経過とともに警告の数がゼロに向かう傾向があることを確認できるため、コンパイラの警告です。(これはかなり大きなプロジェクトであり、ビッグバンアプローチの時間がないため、一度にすべてを修正することはできません)。また、新しい警告が発生したときに、それらをすばやく見つけるのにも役立ちます。

私はこの質問を長期間にわたってJavaでコードメトリックを監視するのを見てきましたが、もう少し言語に依存しないものを探しています

つまり、要約すると。時間の経過とともにメトリックをレポートし、簡単に拡張でき、WebベースのレポートGUIを備え、できれば安価なものを探しています。(あまり求めていません!)

編集:明確にするために、CIサーバーとしてCruiseControlを使用しています。メトリックまたは時間ベースのメトリックを出力に追加する簡単な方法を見たことがありません。多分私は明白な何かを逃しています。カスタムメトリックの追加についてこのページのように見えますが、私にとっては少し不格好です。

理想的には、メトリックを単純な形式でファイルに書き込み、何かがメトリックを動的に生成するようにしたいです。理想的には、以下の出力のようなものを単純なチャートに変換したいと思います

ビルドID| ビルド時間| メトリック| 値
0000000110:45TestPassRate 95
00000001 10:45 BuildTime 300
00000001 10:45 C ++ BuildTime 200
00000001 10:45 JavaBuildTime 50
00000001 10:45 TestTime 50
00000002 11:45 ..... ..
4

3 に答える 3

2

Java CruiseControlを使用している場合は、必要な種類のメトリックを簡単に取得できます。ログファイルに任意の.xmlを含めることができます。次に、レポート.jspページの値のいずれかを参照します。これがまさにPMDのトレンドチャート、checkstyleおよびJavadocエラーの実行方法です。metrics.jspから:

<jsp:useBean id="xpathData" class="net.sourceforge.cruisecontrol.chart.XPathChartData" />
<%
    xpathData.add("CheckStyle", "count(/cruisecontrol/checkstyle/file/error)");
    xpathData.add("PMD", "count(/cruisecontrol/pmd/file/violation)");
    xpathData.add("Javadoc", "count(/cruisecontrol/build//target/task[@name='javadoc']/message[@priority='warn' or @priority='error'])");
%>
<cewolf:chart id="chart" title="Coding violations" type="timeseries"  xaxislabel="date" yaxislabel="violations">
    <cewolf:data>
        <cewolf:producer id="xpathData">
          <cewolf:param name="build_info" value="<%=build_info%>" />
        </cewolf:producer>
    </cewolf:data>
    <cewolf:chartpostprocessor id="xpathData" />
</cewolf:chart>
<cewolf:img chartid="chart" renderer="cewolf" width="400" height="300"/>

これをmetrics.jspに貼り付けるだけで、xpathクエリをメトリックへのxpathに置き換えることができます。

于 2009-09-25T16:06:33.660 に答える
0

おそらくCIサーバー(継続的インテグレーション)を探しています。これらのサーバーは、ソースリポジトリ(CVS、Subversionなど)を監視し、変更されたすべてのプロジェクトとすべての依存プロジェクトをビルドします。

私たちの代わりに、TeamCityを使用していますが、他にもたくさんあります(ウィキペディアのリスト

[編集]ほとんどのCIサーバーは、ビルド後に何らかのレポートを表示します(所要時間、実行されたテストの数など)。あなたがする必要があるのは、この情報をフェッチしてデータベースに保存するビルド後にプログラムをトリガーすることです。

CIサーバーの履歴ビルドページを収集することはできますが、通常はそれほど遠くまでは到達しません。そのため、データを別の場所に保存することをお勧めします。収穫のための簡単なものを探しているなら、BeautifulSoupでPythonを試してみてください。それ以外の場合は、JavaおよびHTTPクライアントjTidyが最適です。

于 2009-09-22T15:44:33.213 に答える
-1

rrdtoolは、探している種類の履歴ビューを提供する場合があります。CIサーバーを実行するたびに、ビルドレポートを適切な場所にダンプするように設定するだけで、rrdtoolはそこからレポートを取得できます。

于 2009-09-25T16:12:38.533 に答える