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

Dav*_*her 141 xcode code-metrics

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

Jos*_*zzi 224

我看到它漂浮在周围并自己使用它:

find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
Run Code Online (Sandbox Code Playgroud)

  • 我们在SO上发布答案,而不是提供相同答案的博客条目的链接. (12认同)
  • 似乎.m和.mm测试缺少*(编辑:似乎SO没有渲染那些没有前面的斜线)上面的内容不适合我,直到我添加它们:find."(" - name"\*.m"-or -name"\*.mm"-or -name"\*.cpp"")" - print0 | xargs -0 wc -l (6认同)
  • 要处理您需要的名称中包含空格的子目录:find."(" - name"*.m" - 或 - ""*.mm" - 或 - ""*.cpp"")" - print0 | xargs -0 wc -l (2认同)
  • 这篇博客文章可能有所帮助:http://allara.blogspot.co.uk/2010/12/total-line-count-for-your-xcode-project.html (2认同)
  • 找 .-name"*.[hm]" - print0 | xargs -0 wc -l适合我 (2认同)
  • 注意Swift用户 - 用文件扩展名.swift替换或添加另一个'或' (2认同)

Nat*_*ger 120

查看CLOC.

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

(旧版构建在SourceForge上存档.)

  • CLOC可通过Homebrew获得.命令行中的易用性令人耳目一新. (11认同)

tig*_*ero 74

我一直在使用CLOC作为被提到的Nathan Kinsinger,这是相当容易使用.它是一个PERL脚本,您可以从项目目录中添加和运行它.

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

perl cloc-1.56.pl ./YourDirectoryWhereYourSourcesAre
Run Code Online (Sandbox Code Playgroud)

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

   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
-------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

  • 太好了!我比自己的答案更喜欢这个.:-) (4认同)

And*_*gor 44

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

find . -type f -print0 | xargs -0 cat | wc -l
Run Code Online (Sandbox Code Playgroud)

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

find . -type f -name \*.[ch]* -print0 | xargs -0 cat | wc -l
Run Code Online (Sandbox Code Playgroud)


Esq*_*uth 44

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

仅适用于Swift:

find . \( -iname \*.swift \) -exec wc -l '{}' \+
Run Code Online (Sandbox Code Playgroud)

仅限Obj-C:

find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) -exec wc -l '{}' \+
Run Code Online (Sandbox Code Playgroud)

对于Obj-C + Swift:

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

对于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 '{}' \+
Run Code Online (Sandbox Code Playgroud)

终端快速提示:
LS:列出目录内容
cd:改变目录
按Tab键自动
记得把"\"之前空间反斜线
我建议去一个文件夹下从主要项目,所以你从框架摆脱码数


Mat*_*ick 34

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

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

注意:截至2012年6月,似乎这与最新版本的Xcode无法正常工作.

  • 请注意,Xcode Statisician此时不处理项目中的子目录. (3认同)

小智 28

  1. 开放式终端
  2. 导航到您的项目
  3. 在项目中执行以下命令:

    find . -path ./Pods -prune -o -name "*.swift" -print0 ! -name "/Pods" | xargs -0 wc -l
    
    Run Code Online (Sandbox Code Playgroud)

    要么:

    find . -path ./Pods -prune -o -name "*[hm]" -print0 ! -name "/Pods" | xargs -0 wc -l
    
    Run Code Online (Sandbox Code Playgroud)

(*从总数中排除pod文件数)


Ril*_*eyE 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
Run Code Online (Sandbox Code Playgroud)

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


Pas*_*ius 9

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

find . -type f -print0 | xargs -0 cat | wc -l
Run Code Online (Sandbox Code Playgroud)

  • 简短明了 - 但它也计算非源代码文件的行数。所以实际上文件名-扩展名过滤在这里是至关重要的。OP 想要计算“源代码行数”。没有任何文本行。 (2认同)

ant*_*ony 6

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

  • "估计总开发成本= 1,934,715美元".这让我很快乐! (4认同)

Pat*_*pel 5

快速简便的方法:

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

.\n

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


fed*_*qui 5

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

find .... match of all those files ... -exec wc -l {} +
Run Code Online (Sandbox Code Playgroud)

按照Joshua Nozzi 的回答,在GNU 中找到此类文件的正则表达式如下:

find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -exec wc -l {} +
Run Code Online (Sandbox Code Playgroud)

甚至

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

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

如果您使用的是Mac OS find,那么您需要一种稍微不同的方法,正如Motti Shneor在评论中所解释的那样:

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

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

234 ./file1
456 ./file2
690 total
Run Code Online (Sandbox Code Playgroud)

因此,您可以保持这样,也可以直接通过管道传输到tail -1(即 ),find ... | tail -1这样您就可以将最后一行作为总数。


Ars*_*aik 5

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

  1. 打开终端。
  2. 通过在终端中复制并粘贴以下命令(包括双引号)来安装Homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

如果询问,请输入系统密码。

您将看到如下所示的终端屏幕。

安装 Homebrew

系统会弹出这么多权限,允许所有权限

如果一切顺利,您将看到如下终端屏幕,

Homebrew 安装成功

  1. 现在是使用以下命令安装CLOC 的时候了。

brew install cloc

  1. 导航到项目目录并运行以下任一命令。

cloc . --exclude-dir=Pods (排除 pod 文件)

cloc . (包括 pod 文件)

如果一切顺利,它将显示如下代码行数

CLOC 结果