ディレクトリに含まれるファイルの、ソースコード行数の総数を返すメソッド

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

ある特定のディレクトリ中に含まれるファイルの、ソースコードがトータルで何行あるかを調べる機会があったので、以下のコードを書いた。

スポンサーリンク

あるディレクトリのソースコード行数のトータルを返す

def count_line(path)
  count = 0
  Dir.glob(path + "/" + "**/*").select do |entry|
    File.file?(entry) == true
  end.each do |file|
    File.open(file, "r").each do |line|
      count += 1 unless /^#/ =~ line
    end
  end
  return count
end

おおざっぱには、こんな感じで、selectブロックの条件文を色々条件に合わせて追加すれば、精度も上がります。
とりあえずは、Rubyのソースコードを対象にした、”#”ではじまる行をコメントとして扱うようにしています。

例えば、gemsのactiverecord-2.0.2の行数を調べたい場合

path = C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2
puts count_line(path)

実行結果。

40219

と、すぐに返してくれます。
試していないですけど、あまりにも、ファイル数やソースコード行数が多い場合は、処理に時間がかかると思います。

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