Kodama's home / tips.
単純な shell スクリプトなので, ソ−スの改行の入り方が変わると多少計数が変わってしまうが, もともと loc の定義次第で, 数値が大幅に変わるので あまり細かく気にしても無意味なのだ.
同じ理由で, 他人のloc 数や, 他言語の loc 数との直接の比較はあまり役に立たない. 同じ言語, 同じ分野の課題, 同じコ−ディング標準, 同じ測定ツ−ルで計数するように状況をそろえるなら, ほぼそのまま比較できるが, それ以外の状況では定性的な比較や考察に使うのが良いだろう.
使用例:
$ loc-sather.sh local_lib/*sa local_lib/bitset.sa 32 23 local_lib/bitset_int.sa 38 18 local_lib/braid.sa 416 266 .....略 local_lib/test_polys.sa 203 151 local_lib/word.sa 233 112 total 7581 4408
shell スクリプト.
#! /bin/sh # count text line and LOC(Line Of Code) for Sather. total_loc=0 total_l=0 for a in $@ ; do num_l=`wc $a|gawk '{print $1}'` num_loc=` cat $a|gawk ' { gsub(/--.*/,""); # comment gsub(/\".*\"/,"string"); # string gsub(/;/,";\n") print } '|gawk ' { gsub(/end;/,""); gsub(/then/,""); gsub(/else/,""); gsub(/elsif/,""); gsub(/[ \t]+/," "); } /^[;\t ]*$/{next} # empty line is excluded /;/{print } ' |wc|gawk '{print $1}'` echo $a $num_l $num_loc total_l=`expr $total_l + $num_l` total_loc=`expr $total_loc + $num_loc` done echo "total "$total_l" "$total_loc # end #
Kodama's home / tips.