我有一个很大的项目,最终我完成了它。我只是想知道我的项目中有多少行代码。我正在使用Xcode 3。 那么你真的可以找出编译了多少行代码吗?
答案 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的答案要低