知道你在Xcode项目中有多少行代码?

时间:2011-08-28 22:57:30

标签: objective-c xcode cocoa-touch

我有一个很大的项目,最终我完成了它。我只是想知道我的项目中有多少行代码。我正在使用Xcode 3。 那么你真的可以找出编译了多少行代码吗?

7 个答案:

答案 0 :(得分:63)

打开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键自动完成
  记得在空格之前加上“\”反斜杠   我建议从主项目中删除一个文件夹,以便从框架中删除代码计数

答案 1 :(得分:33)

将Terminal.app,cd打开到项目的根目录中,然后运行以下命令:

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

如果您还希望在计数中包含其他文件类型,请添加更多-o \*.ext条款。

答案 2 :(得分:4)

一种方法是将副本加载到Xcode中并使用“Project Analyzer for Xcode 4”。在Apple Mac App Store中搜索“Xcode”。我没有使用过这个程序,但昨天我在Mac App Store中搜索Xcode相关应用程序时碰巧看到了它。

希望有所帮助。

答案 3 :(得分:4)

您可以使用sloccount或cloc来执行此操作,它们都与Objective-C代码兼容。

我建议使用sloccount,如果你也使用Jenkins,你可以得到一个很好的HTML报告。 HTML报告将使您能够深入查看不同的目录和文件。

如果您位于Xcode项目的根目录中,这是一个只是概述代码的命令行:



    sloccount --duplicates --wide YOUR-TARGET-NAME

如果你想生成一个在Jenkins中使用的报告,只需添加--details标志:



    sloccount --duplicates --wide --details YOUR-TARGET-NAME > build/sloccount.sc

并通过Jenkins UI安装sloccount的Jenkins插件。

您可以在此博客文章(免责声明:我是作者)中查看Jenkins中此类报告的示例:http://blog.octo.com/en/jenkins-quality-dashboard-ios-development/#step1-1

答案 4 :(得分:3)

一个bash脚本,用于查找文件WITHOUT COMMENTS AND EMPTY LINES的行数。该脚本不会计算以//开头的注释。将脚本复制到项目文件夹并由sh scriptname.sh运行。

快速更改\( -iname \*.m -o -iname \*.mm -o -iname \*.h \)\( -iname \*.swift \)

# $excluded is a regex for paths to exclude from line counting
excluded="some_dir_name\|some_dir_name2\|lib\|thisfile"

countLines(){
  # $total is the total lines of code counted
  total=0
  # -mindepth exclues the current directory (".")
  for file in `find . -mindepth 1 \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) | grep -v "$excluded"`; do
    # First sed: only count lines of code that are not commented with //
    # Second sed: don't count blank lines
    # $numLines is the lines of code
    numLines=`cat $file | sed '/\/\//d' | sed '/^\s*$/d' | wc -l`

    # To exclude only blank lines and count comment lines, uncomment this:
    #numLines=`cat $file | sed '/^\s*$/d' | wc -l`

    total=$(($total + $numLines))
    echo "  " $numLines $file
  done
  echo "  " $total in total
}

countLines

答案 5 :(得分:2)

我不确定任何直接插入Xcode的工具(为什么你在Lion上免费提供4.1时仍然使用Xcode 3?),但我发现命令行cloc工具效果很好使用Objective-C代码。

答案 6 :(得分:0)

一个非常好的unix命令是xargs。请参阅“下面的xargs管道”。例如:

find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h -o -iname \*.swift \)  | xargs wc -l

奇怪的是,我必须弄清楚为什么这个答案对我来说比@Esqarrouth的答案要低