2

会社で実行しているコード カバレッジテストの一部をサポートする小さなツールを作成しようとしています。

ツールに対する私の要件は次のとおりです-

入力- (チェックインされた変更リストの一部として) 変更されたファイル (.cpp および .h) のリスト

出力- ソースで追加または変更されたすべての関数 (変更のチェックインの結果として)。

どうすればこれを行うことができますか?基本的には、どの行が変更され、変更された行に関連付けられている機能は何ですか...

詳細 - ソース管理: Perforce プラットフォーム: Windows

4

2 に答える 2

2

これはトリッキーに聞こえます。そして、ソース内の変更された関数に関する情報をどうするかわかりません。コード カバレッジをこれらの関数に制限したくありません。変更された関数が、変更されていない関数のカバレッジに影響を与えた可能性があります。

おそらく最善の方法は、チェックインのたびにすべてのテストを実行するか、何か変更があった場合は 1 時間に 1 回実行することです。次に、複雑なツールの作成をスキップして、とにかくより良い結果を得ることができます.

于 2009-02-01T21:58:18.283 に答える
0

すべてのファイルが Perforce にチェックインされるため、変更されたファイルと以前のリビジョンのバッチ diff (p4 diff2) を実行できます。p4 diff2 は、より便利な方法であるかもしれないブランチ仕様も取ります。

差分が見つかったら、変更された行のメソッド名を抽出するスクリプトを作成する必要があります。アルゴリズムは、「構文のメソッド署名が見つかるまでファイルを逆方向​​に検索する」かもしれません。

賢くするには、ファイル名または別のスクリプトによって生成されたクラスのリストに基づいてクラス名を決定します。このクラス名のリストは、メソッド シグネチャを決定するのに役立ちます。ご存知のように、クラス名の後に :: とメソッド名が続きます。

このアルゴリズムは、任意の入力に対して 95% 以上の精度を出すのは簡単で、100% の精度を出すのは難しいと判断します。

このスクリプトは、一意のリストを生成するために重複を除外する必要があります。

結果のリストは、質問で要求したリストです。

于 2009-02-03T04:33:29.497 に答える