iOS-統(tǒng)計(jì)項(xiàng)目代碼量

- (void)viewDidLoad {

[super viewDidLoad];

// 注意:代碼得在Mac下跑,不能再iPhone上,路徑不對(duì)

// 在這里寫(xiě)下需要統(tǒng)計(jì)的代碼的目錄

NSString *path = @"/Users/crystal/projects/CodeLineDemo";

NSLog(@"在這個(gè)文件中代碼行數(shù)是:%ld",codeLineCount(path,path));

}

//統(tǒng)計(jì)代碼行數(shù)函數(shù)(運(yùn)用遞歸)

// 這就是實(shí)現(xiàn)功能的方法,行參是一個(gè)路徑

NSUInteger codeLineCount(NSString *path,NSString *rootPath)

{

NSUInteger num = 0;

// 判斷是否是文件夾,如果說(shuō)file是文件夾的時(shí)候就是YES不是文件夾的話就是NO

BOOL flag = NO;

// 首先判斷這個(gè)文件存不存在,存在的話是文件還是文件夾

// 關(guān)于文件目錄的操作,取得文件管理器的單例對(duì)象

NSFileManager *file = [NSFileManager defaultManager];

BOOL isExit = [file fileExistsAtPath:path isDirectory:&flag];

if(!isExit){

NSLog(@"路經(jīng)有誤?。?!");

return 0;

}else{

// 如果說(shuō)他是文件夾的話,就得到他的里面去把文件找出來(lái)

if(flag){

// 獲取這個(gè)文件夾中的所有的文件名字

NSArray *a = [file contentsOfDirectoryAtPath:path error:nil];

for(id fileName in a){

//? 獲得所有文件的完全路徑

NSString *s1 = [NSString stringWithFormat:@"%@/%@",path,fileName];

num? = num + codeLineCount(s1,rootPath);

}

}else{

// 如果說(shuō)是文件并且擴(kuò)展名是.h 或者是.m的話就直接進(jìn)行統(tǒng)計(jì)

NSString *h = @"h";

NSString *m = @"m";

NSString *c = @"c";

NSString *mm = @"mm";

NSString *swift = @"swift";

//查看擴(kuò)展名是否是上面這三個(gè)但是,擴(kuò)展名又可能是大寫(xiě),所以這個(gè)時(shí)候就要先把擴(kuò)展名轉(zhuǎn)為小寫(xiě)再比較

NSString *pathE = [[path pathExtension] lowercaseString];

NSRange rect = [path rangeOfString:rootPath];

NSString *newPath = [path stringByReplacingCharactersInRange:rect withString:@""];

if([pathE isEqualToString:h] || [pathE isEqualToString:m] || [pathE isEqualToString:c] || [pathE isEqualToString:mm]|| [pathE isEqualToString:swift]){

num = test(path);

NSLog(@"%@? ---? %ld行",newPath,num);

}else{

return 0;

}

}

}

return num;

}

NSUInteger test(NSString *path)

{

// 可以首先獲取文件中的內(nèi)容,然后利用字符串分割計(jì)數(shù)將空格字符串以回車(chē)分割,這個(gè)時(shí)候會(huì)生成一個(gè)數(shù)組,這個(gè)時(shí)候我就可以通過(guò)計(jì)算數(shù)組中的元素來(lái)計(jì)算文檔中的行數(shù)了

NSString *s1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

// 利用字符串分割函數(shù),將字符串分割生成一個(gè)數(shù)組

NSArray *a = [s1 componentsSeparatedByString:@"\n"];

return a.count;

}

Demo下載地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容