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

最近手头的项目基本上已经完结,历经了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了😄

posted @ 2016-07-23 12:46  Silktree  阅读(642)  评论(1编辑  收藏  举报