Ruby1.7.3のソースコード行数を調べる

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
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で書かれたライブラリは含んでいないので、やっぱり大きいですね。
重要な部分をかいつまんででないと、全部は読めそうもありません。

スポンサーリンク
 
スポンサーリンク