用于检查应用程序中有多少行代码的 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 脚本的主要内容,如果未能解决你的问题,请参考以下文章

ruby 用于检查Codeship状态的简单Ruby脚本

ruby 系统命令检查退出代码

如何找出 Xcode 项目中有多少行代码?

用于检查网站是不是具有搜索引擎友好 URL 的 Ruby 代码

如何检查android中有多少内存跟踪代码

ruby