Ruby1.7.3のソースコード行数を調べる
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
Cygwin1.5にRuby1.7をソースからビルドして、コードリーディングを少しずつ進めていますが、今日はRuby1.7.3を実装しているCコードが何行あるのか調べてみた。
対象としたファイルは、拡張子がc, およびh(ヘッダーファイル)のもの。
以下のようなコードを書いた。
スポンサーリンク
ソースコード行数を調べるスクリプト
path = "C:/cygwin/home/username/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/username/src/ruby-rhg/array.c C:/cygwin/home/username/src/ruby-rhg/bignum.c C:/cygwin/home/username/src/ruby-rhg/class.c C:/cygwin/home/username/src/ruby-rhg/compar.c C:/cygwin/home/username/src/ruby-rhg/config.h C:/cygwin/home/username/src/ruby-rhg/defines.h C:/cygwin/home/username/src/ruby-rhg/dir.c C:/cygwin/home/username/src/ruby-rhg/dln.c C:/cygwin/home/username/src/ruby-rhg/dln.h C:/cygwin/home/username/src/ruby-rhg/dmyext.c C:/cygwin/home/username/src/ruby-rhg/enum.c C:/cygwin/home/username/src/ruby-rhg/env.h C:/cygwin/home/username/src/ruby-rhg/error.c C:/cygwin/home/username/src/ruby-rhg/eval.c C:/cygwin/home/username/src/ruby-rhg/ext/curses/curses.c C:/cygwin/home/username/src/ruby-rhg/ext/dbm/dbm.c C:/cygwin/home/username/src/ruby-rhg/ext/digest/defs.h C:/cygwin/home/username/src/ruby-rhg/ext/digest/digest.c C:/cygwin/home/username/src/ruby-rhg/ext/digest/digest.h C:/cygwin/home/username/src/ruby-rhg/ext/digest/md5/md5.c C:/cygwin/home/username/src/ruby-rhg/ext/digest/md5/md5.h C:/cygwin/home/username/src/ruby-rhg/ext/digest/md5/md5init.c C:/cygwin/home/username/src/ruby-rhg/ext/digest/rmd160/rmd160.c C:/cygwin/home/username/src/ruby-rhg/ext/digest/rmd160/rmd160.h ・・・(途中略) ファイル数:142 ソース行数:106353
ファイル数にて142個、行数は10万行オーバーになりました。
Rubyで書かれたライブラリは含んでいないので、やっぱり大きいですね。
重要な部分をかいつまんででないと、全部は読めそうもありません。
スポンサーリンク
<< 前の記事 : DATAと__END__でファイルオブジェクトを扱う
- - 関連記事 -
- DATAと__END__でファイルオブジェクトを扱う
- ディレクトリを再帰的に走査するDir.globとFind.find
- ファイル名の取り出し・変更・操作
- FileTestモジュールでファイルを検査する
- File::statの時刻を変更する
- ファイル・ディレクトリの属性取得
- グロブ・Dir.globを使ってディレクトリ検索
- ディレクトリをオープンしてファイル名を読む
- ファイル名の変更・ファイルのコピー・移動・削除
スポンサーリンク