Cygwin1.5にRuby1.7をソースからビルドして、コードリーディングを少しずつ進めていますが、今日はRuby1.7.3を実装しているCコードが何行あるのか調べてみた。
対象としたファイルは、拡張子がc, およびh(ヘッダーファイル)のもの。
以下のようなコードを書いた。
ソースコード行数を調べるスクリプト
path = "C:/cygwin/home/takafumi/src/ruby-rhg"
def count_line(path)
if FileTest.directory?(path)
file_nums = 0
line_no = 0
Dir.glob("#{path}/**/*.[ch]").each { |file|
if File.file?(file)
File.open(file, "r").each { |line|
line_no += 1 # ソース行数カウント
}
end
puts file # ファイル名表示
file_nums += 1 # ファイル数のカウント
}
end
puts "ファイル数:#{file_nums}"
puts "ソース行数:#{line_no}"
end
count_line(path)
実行結果
C:/cygwin/home/takafumi/src/ruby-rhg/array.c C:/cygwin/home/takafumi/src/ruby-rhg/bignum.c C:/cygwin/home/takafumi/src/ruby-rhg/class.c C:/cygwin/home/takafumi/src/ruby-rhg/compar.c C:/cygwin/home/takafumi/src/ruby-rhg/config.h C:/cygwin/home/takafumi/src/ruby-rhg/defines.h C:/cygwin/home/takafumi/src/ruby-rhg/dir.c C:/cygwin/home/takafumi/src/ruby-rhg/dln.c C:/cygwin/home/takafumi/src/ruby-rhg/dln.h C:/cygwin/home/takafumi/src/ruby-rhg/dmyext.c C:/cygwin/home/takafumi/src/ruby-rhg/enum.c C:/cygwin/home/takafumi/src/ruby-rhg/env.h C:/cygwin/home/takafumi/src/ruby-rhg/error.c C:/cygwin/home/takafumi/src/ruby-rhg/eval.c C:/cygwin/home/takafumi/src/ruby-rhg/ext/curses/curses.c C:/cygwin/home/takafumi/src/ruby-rhg/ext/dbm/dbm.c C:/cygwin/home/takafumi/src/ruby-rhg/ext/digest/defs.h C:/cygwin/home/takafumi/src/ruby-rhg/ext/digest/digest.c C:/cygwin/home/takafumi/src/ruby-rhg/ext/digest/digest.h C:/cygwin/home/takafumi/src/ruby-rhg/ext/digest/md5/md5.c C:/cygwin/home/takafumi/src/ruby-rhg/ext/digest/md5/md5.h C:/cygwin/home/takafumi/src/ruby-rhg/ext/digest/md5/md5init.c C:/cygwin/home/takafumi/src/ruby-rhg/ext/digest/rmd160/rmd160.c C:/cygwin/home/takafumi/src/ruby-rhg/ext/digest/rmd160/rmd160.h ・・・(途中略) ファイル数:142 ソース行数:106353
ファイル数にて142個、行数は10万行オーバーになりました。
Rubyで書かれたライブラリは含んでいないので、やっぱり大きいですね。
重要な部分をかいつまんででないと、全部は読めそうもありません。
■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/518