OC-统计代码行数
来源:互联网 发布:ds数据精灵使用教程 编辑:程序博客网 时间:2024/06/09 19:11
#import <Foundation/Foundation.h>//统计代码行数函数(运用递归)/* url :文件的全路径,可能是文件可能是文件夹 返回值 NSUInteger :代码行数 */NSUInteger codeLineCount(NSString *url){ //1、设置文件管理者对象,判断文件是否存在 NSFileManager *manager = [NSFileManager defaultManager]; //2、判断文件是文件夹还是文件 BOOL dir = NO; //3、设置变量判断文件是否存在 BOOL isExist = [manager fileExistsAtPath:url isDirectory:&dir]; //如果不存在return 0; if (!isExist) { NSLog(@"文件路径不存在!"); return 0; } //代码来到这说明路径存在 //如果是文件夹... if (dir) { //获取当前文件夹path下面的所有内容(文件夹、文件)名 存在数组中 NSArray *aryPath = [manager contentsOfDirectoryAtPath:url error:nil]; //定义一个变量保存path中所有文件的总行数 NSUInteger count = 0; //遍历数组中所有子文件(夹)名 for (NSString *fileName in aryPath) { //获取子文件(夹)的全路径,运用递归 NSString *fullPath = [NSString stringWithFormat:@"%@/%@",url,fileName]; //递归累加所有代码行数 count+=codeLineCount(fullPath); } return count; } //如果是文件 else{ //判断文件的扩展名,将文件扩展名都转化成lowercaseString小写字母便于之后判断 NSString *extension = [[url pathExtension]lowercaseString]; if (!([extension isEqualToString:@"m" ] || [extension isEqualToString:@"h"] || [extension isEqualToString:@"h"])) { //文件扩展名不是h/m/c return 0; } //加载文件内容 NSString *content = [NSString stringWithContentsOfFile:url encoding:NSUTF8StringEncoding error:nil]; //按换行符分割存入数组中 NSArray *aryFile = [content componentsSeparatedByString:@"\n"]; //返回行数 return aryFile.count; } return 0;}int main(int argc, const char * argv[]) { @autoreleasepool { NSString *url = @"/Users/qiuxuewei/Documents/IOSWorkspace"; NSLog(@"代码行数:%ld",codeLineCount(url)); } return 0;}