统计代码的行数?很神奇?哈哈其实是非常简单的!
具体代码如下,代码中已经标注注释,如果需要测试自己的代码量只需要将文中的"需要测试代码的地址"改为自己的地址即可:
8 9 #import <Foundation/Foundation.h> 10 11 NSUInteger ZMsumdm(NSString *path) 12 { 13 14 NSFileManager *ZMmanger = [NSFileManager defaultManager]; 15 16 BOOL ZMyes = NO; 17 //判断文件路径是否存在,如果存在yn返回yes,如果不存在yn返回no, 18 //&yes值是判断路径所指的是文件还是文件夹,如果是文件夹值为yes,如果是文件返回值为no 19 BOOL ZMyn = [ZMmanger fileExistsAtPath:path isDirectory:&ZMyes]; 20 21 //如果这个路径不存在结束程序 22 if (!ZMyn) return 0; 23 24 //如果这个路径存在,并且判断是一个文件夹 25 if (ZMyes) { 26 //这是一个文件夹 27 //返回文件夹里的所有内容,返回值为数组 28 NSArray *array = [ZMmanger contentsOfDirectoryAtPath:path error:nil]; 29 // NSLog(@"%@",array); 30 31 int ZMcount = 0; 32 for (NSString *fileName in array) { 33 34 //拿到全路径 35 NSString *fullPath = [NSString stringWithFormat:@"%@/%@",path,fileName]; 36 // NSLog(@"%@",fullPath); 37 38 ZMcount += ZMsumdm(fullPath); 39 40 } 41 NSLog(@"count:%zd",ZMcount); 42 return ZMcount; 43 44 } 45 else{ 46 int zs =0; 47 48 //这是一个文件 49 50 //判断文件的扩展名为.h/.m/.c的文件才计算行数 51 52 //拿到路径所指文件扩展名,并转换成小写(lowercaseString这个方法可以将字母转换成小写) 53 NSString *ZMkzm = [[path pathExtension]lowercaseString]; 54 55 if (![ZMkzm isEqualToString:@"m"]&&![ZMkzm isEqualToString:@"h"]&&![ZMkzm isEqualToString:@"c"]) return 0; 56 57 58 //加载文件内容(把文件里的内容全部转换成了字符串) 59 NSString *dress = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; 60 //将字符串以" "为分隔符,分隔成数组 61 NSArray *array = [dress componentsSeparatedByString:@" "]; 62 63 //把path中@"/Users/sunzeming/Desktop/"这段字符串替换为空 64 NSRange range =[path rangeOfString:@"/Users/sunzeming/Desktop/"]; 65 NSString *thPath =[path stringByReplacingCharactersInRange:range withString:@""]; 66 NSLog(@"文件路径:%@,代码的行数为:%zd",thPath,array.count); 67 //去除代码中为空行的代码数 68 int ZMsjdms=0; 69 for (NSString *arr in array) { 70 NSLog(@"%@",arr); 71 if ([arr isEqualToString:@""]) { 72 73 ZMsjdms +=1; 74 zs = ZMsjdms; 75 76 } 77 } 78 return array.count-zs; 79 80 } 81 82 } 83 84 85 int main(){ 86 87 NSUInteger count = ZMsumdm(@"需要测试代码的地址"); 88 89 NSLog(@"您所查找的文件的代码行数一共为:%zd",count); 90 91 return 0; 92 93 }