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

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

102481 次浏览

您可以通过 MacPorts 安装 SLOCCount

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

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

如果只想要特定的文件类型,可以尝试使用

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

看看 CLOC

Cloc 计算许多编程语言中源代码的空行、注释行和物理行数。

(遗留构建在 SourceForge 上存档)

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

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

看看 Xcode 统计学家,它可以完全满足你的需求。它还提供了其他有趣的统计数据,所以值得时不时地为了好玩而跑一跑。

注意,它不会查看真正的文件夹,但会查看组。很可能你没有使用真正的文件夹,所以它会工作得很好。如果你正在使用文件夹,那么你只需要计算每个文件夹中的数量,然后把它们加在一起。

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

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

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

我一直使用 CLOC作为 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
-------------------------------------------------------------------------------

如果您在终端机中进入项目目录并输入:

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

这将为您提供一个项目分解,以及每个文件和项目作为一个整体的行总数。

快捷简单的方法:

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

可以方便地使用 Xcode 搜索范围,并且可以轻松地将其定制为您希望计数的任何类型的行;)。

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

仅限斯威夫特:

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 '{}' \+

终端快捷提示:
列出目录内容
Cd: 更改目录
按选项卡自动完成
记住在空格之前放“”反斜杠
我建议从主项目向下放置一个文件夹,这样就可以从框架中去掉代码计数

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

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

Joshua Nozzi 的回答之后,在 GNU 发现中这些文件的正则表达式如下:

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结尾的所有文件。在 如何在文件查找中使用正则表达式中可以看到关于这些表达式的更多信息。

如果你正在使用 找到 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) ,这样您就可以得到最后一行是总数。

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

这个工具最好的地方是,你可以添加。像配置文件这样的配置文件。您可以设置规则来选择或忽略要计数的文件类型,就像您在’中所做的那样。吉蒂诺尔。是的,这个工具的发明只是为了知道我有多少行更容易。

这里有更多的描述和用法: https://github.com/MorganZhang100/line-counter

我是这个简单工具的作者。希望它能帮到某人。

  1. 开放式终端
  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
    

(*Excluding pod files count from total count)

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

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

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

如果需要,请输入系统密码。

您将看到下面的终端屏幕。

Installing Homebrew

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

如果一切正常,您将看到下面的终端屏幕,

Homebrew installation successful

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

brew install cloc

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

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

cloc .(包括豆荚文件)

如果一切正常,它将显示如下 代码行数,

CLOC Result