本案例以object c开发的app为例,若统计统计其它语言开发的app,只需要修改参数列表"*[.h|.m|.mm|.cpp|.c|.plist|.html|.htm]"。
申请软件著作权时,需要提供代码的前1000行的代码和后1000行的代码,代码行数等信息。
如:
硬件环境:iphone4及以上手机
软件环境:iOS 8及以上版本
编程语言:Object C
源程序两:207579行
java服务器开发有插件可以直接统计代码量。而苹果我没有对应的插件。苹果本来就时从UNIX和LINUX演变来的,linux的shell命令,在苹果的命令行下都基本适用。所以写出对应的shell命令就能统计出来。注意:因为中英文输入法等问题,可能出现拷贝的语句无法正确执行,可以手动输入就可以了。
统计当前目录及其子目录下忽略空行的代码量语句如下:
find . -name "*.h" | xargs cat|grep -v ^$|wc -l find . -name "*.m" | xargs cat|grep -v ^$|wc -l find . -name "*.c" | xargs cat|grep -v ^$|wc -l find . -name "*.cpp" | xargs cat|grep -v ^$|wc -l find . -name "*.mm" | xargs cat|grep -v ^$|wc -l find . -name "*.html" | xargs cat|grep -v ^$|wc -l find . -name "*.htm" | xargs cat|grep -v ^$|wc -l
注意:新版的M1芯片的苹果电脑上面的单行命令查询支持,下面的查询不支持:
pple@AppledeMacBook-Pro SameCity % find . -name "*.h" | xargs cat|grep -v ^$|wc -l 681 apple@AppledeMacBook-Pro SameCity % find . -name "*.m" | xargs cat|grep -v ^$|wc -l 6939 apple@AppledeMacBook-Pro SameCity % find . -name "*[.h|.m|.mm]"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l zsh: no matches found: ^s*//.*$ 0 cat: .: Is a directory xargs: cat: terminated with signal 13; aborting apple@AppledeMacBook-Pro SameCity % find . -name "*[.h|.m|.mm|.cpp|.c|.html|.htm]"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l zsh: no matches found: ^s*//.*$ 0 cat: .: Is a directory cat: ./SameCity/ViewModel: Is a directory xargs: cat: terminated with signal 13; aborting apple@AppledeMacBook-Pro SameCity %
统计忽略空行,忽略以“//”开头的行注释(不能忽略以“/”开始或“\”结束的代码块注释),统计object c开发常用的文件代码行数。只需要下面一行命令就能实现代码行数统计:
find . -name "*[.h|.m|.mm|.cpp|.c|.html|.htm]"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l
语句执行效果截图(由于显示的内容太多,只显示语句查询结果的前部分信息和后部分呢信息,中间的信息就不截图了):
若参数太多可以分成4句来统计:
jgs:PinkPig的副本3 mac$ find . -name "*[.h|.m|.mm|.cpp|.c|.html|.htm]"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l xargs: cat: Argument list too long 0
find . -name "*.htm" | xargs cat|grep -v ^$|wc -l find . -name "*[.c|.cpp]"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l find . -name "*.html" | xargs cat|grep -v ^$|wc -l find . -name "*.htm" | xargs cat|grep -v ^$|wc -l
由于第三方库中包含大量.cpp代码,而苹果开发常用的文件后缀有三种:.h,.m,.mm。所以精简并常用的代码行数统计命令是:
find . -name "*[.h|.m|.mm]"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l
执行的效果如下:
jiaguoshangdeMacBook-Air:ArtEnjoymentWeChatAuction jiaguoshang$ find . -name "*[.h|.m|.mm]"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l cat: .: Is a directory cat: ./Pods/Target: No such file or directory cat: Support: No such file or directory cat: Files/YXFDCategories/YXFDCategories-prefix.pch: No such file or directory cat: ./Pods/Target: No such file or directory cat: Support: No such file or directory cat: Files/YXFDCategories/YXFDCategories-dummy.m: No such file or directory cat: ./Pods/Target: No such file or directory . . . cat: ./Pods/Target: No such file or directory cat: Support: No such file or directory cat: Files/SDWebImage/SDWebImage-dummy.m: No such file or directory cat: ./Pods/UMengUShare/UShareSDK/SocialLibraries/Instagram: Is a directory cat: ./Pods/AliyunOSSiOS/Supporting: No such file or directory cat: Files/AliyunOSSiOS.h: No such file or directory 177086 jiaguoshangdeMacBook-Air:ArtEnjoymentWeChatAuction jiaguoshang$
注意需要统计时要用这个目录:
当然你想统计包含自己的私有库,需要在上一层目录执行统计命令,不想统计开源库,只需要把对应的开源库的文件夹和文件删除再统计就可以了。