【问题标题】:Using cloc (count Lines of Codes) result使用 cloc (count Lines of Codes) 结果
【发布时间】:2015-08-19 10:07:06
【问题描述】:

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

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

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

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

有什么想法吗?

问候, 阿瓦

【问题讨论】:

    标签: ruby cloc


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      对于一些非常快速和简单的东西,你可以使用:

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

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

      【讨论】:

        【解决方案3】:

        @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
        

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

        C# 1 3 3 17

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

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

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

        问候, 阿瓦

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-04-21
          • 1970-01-01
          • 2022-12-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-12
          • 2016-08-29
          相关资源
          最近更新 更多