2

我正在为我的研究编写一个脚本,我想获取源文件中的总行数。我来了 cloc,我想我会在我的脚本中使用它。

但是,cloc 给出的结果信息太多(不幸的是,因为我是新成员,所以我无法上传照片)。它给出了文件数、行数、空行数、注释行数和其他图形表示材料。

我只对在我的计算中使用它的行数感兴趣。有没有办法轻松获得该数字(也许通过在命令行中执行一些选项(尽管我浏览了可用选项并且没有找到对我的情况有用的东西))?

我想对结果做正则表达式来得到数字;但是,这是我第一次使用 cloc,可能有更好/专业的方法。

任何想法?

问候, 阿瓦

4

3 回答 3

0

我不确定CLOC。但值得使用默认的 shell 命令。请看看这个问题
单独获取代码行数

find . -name '*.*' | xargs wc -l

获取目录中的代码总行数。

(find ./ -name '*.*' -print0 | xargs -0 cat) | wc -l 

请注意,如果您需要具有特定扩展名的文件的行数,您可以使用*.ext.
*.rb,如果它是红宝石。

于 2015-06-04T17:19:04.567 回答
0

对于一些非常快速和简单的事情,您可以使用:

Dir.glob('your_directory/**/*.rb').map do |file| 
  File.foreach(file).count
end.reduce(:+)

这将计算其中的所有.rb文件行及其your_directory子目录。尽管我建议为空行和注释行添加一些处理。有关更多信息Dir::glob

于 2015-06-04T17:29:49.100 回答
0

@BinaryMee 和 @engineersmnky 感谢您的回复。

我尝试了两种不同的解决方案,一种使用“readlines”从@gicappa 得到了答案

计算 CSV 文件的长度(行数)?

使用 cloc 的另一种解决方案。我运行了命令

%x{perl #{ClocPath} #{path-to-file} > result.txt} 

并将结果保存在 result.txt

cloc 以图形形式返回结果(我无法上传图像),它还报告空白行、注释行和代码行的数量。正如我所说,我对代码行感兴趣。所以,我打开文件并使用正则表达式来获取我需要的数字。

content = File.read("#{path}/result.txt")
line = content.scan(/(\s+\d+\s+\d+\s+\d+\s+\d+)/)
total = line[0][0].split(' ').last

这里的 content 将有一个文件的内容,然后 line 将从文件中获取这一行:

C# 1 3 3 17

C#是文件的语言,1是文件数,3是空行数,3是注释行数,17是代码行数。我从 cloc 的脚本中得到了格式的帮助。总计将有 17 号。

如果您仅读取特定文件,此解决方案将有所帮助,如果您正在读取多个文件的行,则需要添加更多解决方案。

希望这对需要它的人有所帮助。

问候, 阿瓦

于 2015-06-05T16:40:16.320 回答