はじめに
本シリーズではLattixとUnderstandのメトリクスを活用した様々な分析方法を、分析スクリプトとして紹介しております。
前回のテーマ(Understandメトリクスの簡単な可視化・分析)に続き、今回は第3弾となります。
今回のテーマは「関数粒度のコミット回数」です。
本記事では、弊社の取り組みのご紹介として、
計測した「特定期間内における関数毎のコミット回数」に対して、以下の分析例をご紹介いたします。
- 各関数のコミット動向解析の例
1. 各関数のコミット回数の変化を日付粒度で図示 - 対象関数のソースコードメトリクスと組み合わせた解析の例
2. 関数コミット回数とサイクロマティック複雑度 (期間内最新値)の関係を図示
(参考)ファイル粒度のコミット数分析に関する弊社ユーザー様の事例はこちら
利用した機能
Understand 6.3のコマンドライン機能には、2つのプロジェクトの差分エンティティをレポートする機能があります。und export -changes -cmpdb sample-before.und changed.csv
sample
-after.und
今回はこの機能を利用して、特定期間内の連続するコミット同士に対して、
コミット間の差分関数を抽出し、カウントしました。
※エンティティとは、Understandの用語であり、関数や変数、ファイルなどソフトウェアにおける要素のことを指します。
実現したこと
今回はGitHubで公開されているオープンソースコードである、numpyに対して実施しました。
1. 各関数のコミット回数の変化を日付粒度で図示
期間内の全コミット中コミット数トップ10関数について、コミット動向をグラフにしました。
(実際に出力したコミット数トップ10関数のコミット動向グラフはこちら)
2. 関数コミット回数とサイクロマティック複雑度 (期間内最新値)の関係を図示
期間内の全コミットに対して各関数のコミット回数と、
期間内最新のサイクロマティック複雑度を散布図としてプロットしました。
(実際に出力した関数コミット回数とサイクロマティック複雑度グラフはこちら)
考察
1.「各関数のコミット回数の変化を日付粒度で図示」の考察
指定した期間内の全コミット中コミット数トップ10関数のコミット回数の変化を、
日付粒度で時系列グラフにしました。
「いつ」、「だれが」、「どの関数を」、コミットしているかが把握できています。
これにより、例えば、以下のようなケースで利用できると考えられます。
- 今週のテストで検証するべき機能のアタリを付ける
- 全期間を通してコミットされている関数からリリース前に検証する機能を想定する
2.「関数コミット回数とサイクロマティック複雑度 (期間内最新値)の関係を図示」の考察
各関数の指定した期間内におけるコミット回数と、最新のサイクロマティック複雑度の値を図示しました。
「どの関数が」、「何回」コミットされて、その結果「ロジックがどの程度複雑なものに」なったかを把握できます。
これにより、例えば、 以下のようなケースで利用できると考えられます。
- 直近2か月でたくさんコミットされている複雑な関数が分かるため、リファクタリング候補を選定することに活用する
- 1の図と組み合わせることで、コミット回数が多い複雑な関数がいつ頃、誰にコミットされているか把握できるため、担当者が抱えているタスクの難易度を把握することに活用する
終わりに
今回は特定のGitリポジトリに対し、指定した期間内におけるコミット実績に基づく関数粒度のコミット分析を実施いたしました。
なお、今回の取り組みにご興味をいただける場合は、弊社担当営業、または、SciTools製品カスタマーセンターまでご連絡いただけますと幸いです。反響が大きい場合には、スクリプトの作成やそのご提供、記事の作成などの活動を、より積極的に進めることが可能となりますので、ぜひよろしくお願いいたします。
今回は以上となります。
最後までご覧いただきありがとうございました。