なんか作りたくなったので作ってみた
ruby のスクリプトの空行とコメントと実際の行数を計算する。
複数行のコメント分(begin 〜 end)だとうまく計算できないけれど、あまりコメント形式として使われないから良いよね^^
base = '/tmp' ext = '.rb' result = [] Dir.glob("#{base}*/**").each do |dir| next if File.directory?(dir) or File.extname(dir) !~ /#{ext}$/ comment = 0 blank_line = 0 src_line = 0 File.open(dir).readlines.each do |line| line.strip! if line =~ /^#/ comment = comment + 1 elsif line.empty? blank_line = blank_line + 1 else src_line = src_line + 1 end end result << { :file => dir, :comment => comment, :blank_line => blank_line, :src_line => src_line, :total_line => comment + blank_line + src_line, } end puts "filename, comment, blank_line, src_line, total_line" result.each do |res| puts "#{File.basename(res[:file])},#{res[:comment]}, #{res[:blank_line]}, #{res[:src_line]}, #{res[:total_line]}" end
TODO(気が向いたら)
- 拡張子と調査対象のベースディレクトリを引数で指定する
- ベースディレクトリを引数で受け取るなら、最後にスラッシュがこないように除去するプログラムも必要かな
- 出力時の形式をカンマ区切り以外でもできるように