您的位置:首页 > 编程语言

一个简单的代码计算行数demo编写

2016-07-23 12:46 519 查看
最近手头的项目基本上已经完结,历经了5个月的开发和迭代,各种的需求调整,想对自己的代码量进行一个客观的计算,于是抽了点时间写下了这个小demo,朋友们有需要的可以看看,很简单。

基本的思想就是:根目录->递归的遍历所有文件夹>计算具体某一文件的代码行数

具体流程如下:

#pragma mark---------------------->递归文件夹下文件

- (void)recordFilePathWithPath:(NSString *)path{

/* 文件管理器 */

NSFileManager *manager = [NSFileManager defaultManager];

/* 该目录下文件存在的情况下 是否为文件夹bool值 */

BOOL ret = NO;

/* 文件是否存在bool值 */

BOOL fileExist = [manager fileExistsAtPath:path isDirectory:&ret];

/* 文件存在时 */

if (fileExist) {

/* 该目录为文件夹时 */

if (ret) {

/* 该目录下的所有文件 */

NSArray *arr = [manager contentsOfDirectoryAtPath:path error:nil];

for (NSString *secondPath in arr) {

/* 拼接地址 */

NSString *newPath = [path stringByAppendingPathComponent:secondPath];

/* 递归文件夹下文件 */

[self recordFilePathWithPath:newPath];

}

}else{

/* 该目录为文件时 筛选出合适的文件 博主暂订这几种文件 当然还有.mm文件 如果您的项目中存在 可以添加上去 */

if ([path hasSuffix:@".h"]||[path hasSuffix:@".m"]||[path hasSuffix:@".swift"]||[path hasSuffix:@".pch"]) {

/* 将该目录添加到文件目录数组中 */

[_pathArr addObject:path];

}

}

}

}

以下是简单的流程操作

- (void)viewDidLoad {

[super viewDidLoad];

_pathArr = [NSMutableArray array];

/* 要计算项目的根目录 请根据您的需求添加url */

NSString *basePath = @"/Users/JH/Desktop/项目/公司项目/CRM资料/CRMCJ_JIANHAO/CRMCJ/Resource";

/* 递归函数 递归并存储所有的.h .m .swift等代码文件 */

[self recordFilePathWithPath:basePath];

/* 总代码行数 */

long allCount = 0;

/* 遍历之前统计出来的文件目录 逐个计算行数 */

for (NSString *path in _pathArr) {

/* 将文件内容取出 */

NSString * str = [NSString stringWithContentsOfFile:path encoding:kCFStringEncodingUTF8 error:nil];

/* 根据换行符切割字符串 并存入数组 */

NSArray * arr = [str componentsSeparatedByString:@"\n"];

/* 数组个数 */

NSInteger count = [arr count];

/* 遍历切割的字符串数组 */

for (NSString * lineStr in arr) {

/* 当为注释文件时或者空白行时不添加 */

if ([lineStr hasPrefix:@"//"]||([lineStr rangeOfString:@"/*"].length>0&&[lineStr rangeOfString:@"*/"].length>0)||[[lineStr componentsSeparatedByString:@" "] count]==lineStr.length+1) {

count -- ;

}

}

allCount += count;

}

/* 展示行数 */

_showLabel.text = [NSString stringWithFormat:@"当前文件代码行数为:%ld 行",allCount];

}

demo的github地址为:https://github.com/China131/JHCodeLinesCountDemo.git 需要代码的朋友可以看看,demo比较简单,在这就不索取start了😄
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: