用于检查应用程序中有多少行代码的 Ruby 脚本
Posted
技术标签:
【中文标题】用于检查应用程序中有多少行代码的 Ruby 脚本【英文标题】:Ruby script to check how many lines of code are in an application 【发布时间】:2011-09-26 04:31:53 【问题描述】:您将如何编写诸如 get_lines.rb file_name.rb
之类的 ruby 脚本,它返回通过文件夹 > 文件夹 > 文件夹(例如应用程序/模式、应用程序/控制器等)递归的应用程序中的代码总数/行数...所有文件!
【问题讨论】:
【参考方案1】:http://www.ruby-doc.org/stdlib/libdoc/find/rdoc/classes/Find.html
实现find
之类的模块。
页面上的示例给出了获取目录中所有文件大小的示例。将其更改为计算总行数应该很简单。
我建议不要在 ruby 中这样做,除非你也有...
wc -l `find /path/to/dir -type f` | tail -1
【讨论】:
【参考方案2】:通常我不会 - 我会使用 shell 实用程序。认真的。
另外,你想包括 cmets 吗?等等等等。
有一个很好的答案,这里不使用 Ruby:How to count all the lines of code in a directory recursively?
如果我是为了真正做到这一点而接近这个,我会这样做:
Dir['**/*.*'].each do |fname|
puts "#fname #linecount(fname)"
end
Linecount 类似于
def linecount(fname)
File.open(fname, "r") do |f|
return f.readlines.length
end
end
顺便说一句,这是一个令人讨厌的 hack,因为它将整个文件读入内存只是为了查看数组的长度,您可能希望在阅读时获取每一行并计算它们。
您也可以通过仅增加计数器来消除仅是 cmets 的空白或行。
类似
lines = f.readlines
lines.delete_if |l| l =~ /^[[:space:]]*#|^$/
return lines.length
顺便说一句,我还没有测试过那个正则表达式。
作为给读者的一个练习 - 弄清楚你需要在 puts 的末尾添加什么“if”语句以阻止它在目录上吐槽:D
【讨论】:
【参考方案3】:@Ghoti,我会将此添加为您的评论,但没有足够的状态。
利用 File.file?和文件::目录?将有助于区分两者,以便您知道是否需要更深入地挖掘目录或读取文件。
【讨论】:
好吧,挖洞是由那个 Dir[] 语句完成的,但是你不想在目录上调用 puts,也不想在二进制文件上调用。 :D 如果您可以放置一个目录并将所有文件放入其中,那将是一个非常巧妙的功能;-)以上是关于用于检查应用程序中有多少行代码的 Ruby 脚本的主要内容,如果未能解决你的问题,请参考以下文章