使用cloc(计数代码行)结果

时间:2015-06-04 16:59:44

标签: ruby cloc

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

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

我只对在计算中使用它的行数感兴趣。有没有办法轻松获得这个数字(可能是通过在命令行中执行一些选项(虽然我通过了可用的选项,并没有找到对我的情况有用的东西))?

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

有什么想法吗?

此致 ARWA

3 个答案:

答案 0 :(得分:0)

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

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

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

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

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

答案 1 :(得分:0)

对于非常快速和简单的事情你可以使用:

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

这会计算.rb及其子目录中your_directory个文件的所有行。虽然我建议为空行和注释行添加一些处理。有关Dir::glob

的更多信息

答案 2 :(得分:0)

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

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

的答案

Count the length (number of lines) of a CSV file?

使用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

这里的内容将包含文件的内容,然后行将从文件中获取此行:

C#1 3 3 17

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

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

希望这有助于谁需要它。

此致 ARWA