「git blameでSRP算出」が便利

April 23, 2016

git blameによるSRP(単一責任原則)の定量化 が便利だったので早速自分の環境に組み込んで使ってる。

が、計算式をよく見ると、
コミット数・ユーザー数・コードの行数を加算してソートしていてそこだけキモチワルイ。

なのでそれぞれの数字を加算せずそのまま出し、それらを使ってmultiple sortすることにした。

function get_SRP() {
  local target_filepath=$1
  local a=$(git --no-pager blame --line-porcelain $target_filepath | sed -n 's/^summary //p' | sort | uniq -c | sort -rn | wc -l)
  local b=( $(cat $target_filepath | wc -l) / 100 - 5)
  local c=$(git --no-pager blame --line-porcelain $target_filepath | sed -n 's/^author //p' | sort | uniq -c | sort -rn | wc -l)
  echo ${a} ${b} ${c} $target_filepath
}

for file in `git ls-files | grep -E '\.js$'`; do
  get_SRP $file
done | sort -k 1,1 -k 2,2 -k 3,3 -nr

sort優先順位は個人的な主観でコミット数 > 行数 > ユーザー数の順にしている。
また、最近JSをよく触るので計測対象は.jsにしている。



Recent blog posts



(c) Copyright 2023 Kotaro Yoshimatsu