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

时间:2010-01-05 01:18:56

标签: xcode code-metrics

有没有办法确定Xcode项目包含多少行代码?我保证不会将此类信息用于管理测量或员工基准测试目的。 ;)

15 个答案:

答案 0 :(得分:218)

我看到这个浮动并自己使用它:

find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -print0 | xargs -0 wc -l

答案 1 :(得分:117)

查看CLOC

  

cloc在许多编程语言中计算空白行,注释行和源代码的物理行。

Legacy builds are archived on SourceForge。)

答案 2 :(得分:73)

我一直使用CLOC作为mentioned by Nathan Kinsinger并且使用相当容易。它是一个PERL脚本,您可以从项目目录中添加和运行。

PERL已经是Mac OS的一部分,您可以通过这种方式调用脚本来找出您编写的行数:

perl cloc-1.56.pl ./YourDirectoryWhereYourSourcesAre

这是我从这样的命令获得的输出的一个例子:

   176 text files.
   176 unique files.                                          
     4 files ignored.

http://cloc.sourceforge.net v 1.56  T=2.0 s (86.0 files/s, 10838.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Objective C                     80           3848           1876          11844
C/C++ Header                    92            980           1716           1412
-------------------------------------------------------------------------------
SUM:                           172           4828           3592          13256
-------------------------------------------------------------------------------

答案 3 :(得分:43)

在终端中,切换到项目目录并运行:

find . -type f -print0 | xargs -0 cat | wc -l

如果您只想要某些文件类型,请尝试类似

的内容
find . -type f -name \*.[ch]* -print0 | xargs -0 cat | wc -l

答案 4 :(得分:42)

打开Terminal.app,进入项目的根目录,然后运行以下命令:

仅适用于Swift:

find . \( -iname \*.swift \) -exec wc -l '{}' \+

仅适用于Obj-C:

find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) -exec wc -l '{}' \+

对于Obj-C + Swift:

find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h -o -iname \*.swift \) -exec wc -l '{}' \+

对于Obj-C + Swift + C + C ++:

find . \( -iname \*.m -o -iname \*.mm -o -iname \*.c -o -iname \*.cc -o -iname \*.h -o -iname \*.hh -o -iname \*.hpp -o -iname \*.cpp -o -iname \*.swift \) -exec wc -l '{}' \+
  

终端快速提示:
  ls:列出目录内容
  cd:更改目录
  按Tab键自动完成
  记得把" \"空格前的反斜杠
  我建议从主项目中删除一个文件夹,以便从框架中删除代码计数

答案 5 :(得分:34)

查看Xcode Statistician,它完全符合您的要求。它还提供了其他有趣的统计数据,因此值得一试好玩。

请注意,它不会查看真实文件夹,但它会以组的形式显示。可能的情况是你没有使用真正的文件夹,所以它会很好用。如果您正在使用文件夹,那么您只需在每个文件夹中进行计数并将它们一起添加。

注意:截至2012年6月,似乎无法使用最新版本的Xcode。

答案 6 :(得分:24)

  1. open terminal
  2. 导航到您的项目
  3. 在项目中执行以下命令:

    find . -path ./Pods -prune -o -name "*.swift" -print0 ! -name "/Pods" | xargs -0 wc -l
    

    或者:

    find . -path ./Pods -prune -o -name "*[hm]" -print0 ! -name "/Pods" | xargs -0 wc -l
    
  4. (*从总数中排除pod文件数)

答案 7 :(得分:15)

如果您转到终端中项目的目录并输入:

find . "(" -name "*.h" -or -name "*.m" -or -name "*.mm" -or -name "*.hpp" -or -name "*.cpp"  -or  -name "*.c" -or -name "*.cc" -or -name "*.swift" ")" -print0 | xargs -0 wc -l

这将为您提供项目细分,以及每个文件和整个项目的总计。

答案 8 :(得分:9)

Nozzi的版本对我不起作用,但是这个版本:

find . -type f -print0 | xargs -0 cat | wc -l

答案 9 :(得分:6)

您可以通过MacPorts安装SLOCCount。或者,更粗略地说,你可以使用wc -l。

答案 10 :(得分:5)

快速&简单方法:

使用正则表达式搜索(查找导航器,选择查找>正则表达式)。

  

。\ n

使用Xcode搜索范围可以方便地工作,您可以轻松地将其自定义为您想要计算的任何类型的行;)。

答案 11 :(得分:3)

在Mac中实现CLOC库的步骤如下:

  1. 打开终端

  2. 使用以下命令安装自制软件

    红宝石-e“ $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

    复制并粘贴此命令,包括终端中的双引号

    输入系统密码,然后单击Enter。

  3. 您将看到以下终端屏幕, Installing Homebrew

  4. 系统将弹出许多权限,请允许所有权限

  5. 如果一切正常,您将看到以下终端屏幕, Homebrew installation successful

  6. 使用cd drag & drop project folder path to terminal

    重定向到项目文件夹
  7. 现在该使用以下命令安装 CLOC 了。

    loc。 --exclude-dir = Pods 用于排除Pod文件

    位置。,包括Pod文件

  8. 如果一切正常,它将显示代码行数,如下所示, CLOC Result

    希望它将对某人有所帮助。

答案 12 :(得分:2)

我不熟悉xcode,但如果您只需要计算目录树中所有这些特定文件的行数,则可以使用以下命令:

find .... match of all those files ... -exec wc -l {} +

关注Joshua Nozzi's answer,在 GNU find 中,此类文件的正则表达式如下:

find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -exec wc -l {} +

甚至

find -regex ".*\.\(m\|mm\|cpp\|swift\)$" -exec wc -l {} +

这使用正则表达式来匹配以.m.mm.cpp.swift结尾的所有文件。您可以在How to use regex in file find中查看有关这些表达式的更多信息。

如果您正在使用 Mac OS查找,那么您需要采用略有不同的方法,如Motti Shneor在评论中所述:

find -E . -regex ".*\.([hmc]|mm|cp+|swift|pch)$" -exec wc -l {} +

两者都将提供以下形式的输出:

234 ./file1
456 ./file2
690 total

所以你可以保持这样或只是管道tail -1(即find ... | tail -1),这样你就可以得到最后一行作为总数。

答案 13 :(得分:1)

抱歉重复一遍。这是恕我直言最容易的方式:

  1. 在终端类型
  2. identityDocument

    这会将项目文件夹中的所有文件复制到find /users/<#username#>/documents/folderWithProject/ -type f -exec cp {} /users/<#username#>/documents/folderWithProject/newFolder/ \;

    1. 下载Xcode Statistician并将其与newFolder一起使用 enter image description here

答案 14 :(得分:1)

line-counter是一个不错的选择。它比CLOC更轻,比其他命令更强大,更易于使用。

快速概述

这是你获得工具的方式

$ pip install line-counter

使用line命令获取当前目录下的文件计数和行数(递归)

$ line
Search in /Users/Morgan/Documents/Example/
file count: 4
line count: 839

如果您想了解更多细节,请使用line -d

$ line -d
Search in /Users/Morgan/Documents/Example/
Dir A/file C.c                                             72
Dir A/file D.py                                           268
file A.py                                                 467
file B.c                                                   32
file count: 4
line count: 839

这个工具最好的部分是,你可以像配置文件一样添加.gitignore。您可以设置规则来选择或忽略要计算的文件类型,就像您在“.gitignore”中所做的那样。是的,这个工具的发明只是为了让我知道有多少行。

更多说明和用法在此处:https://github.com/MorganZhang100/line-counter

我是这个简单工具的作者。希望它可以帮助某人。

任何明星或分叉都表示赞赏:P