天天看点

Foundation框架终极一弹:代码行数统计程序

用到知识点:NSFileManager,NSArray,NSString

NSUInteger codeCount(NSString *path)

{

    //获得文件管理者

    NSFileManager *mgr = [NSFileManagerdefaultManager];

    // 1.判断path时路径还是文件

    BOOL dir = NO; // 标记是否为路径

    // 2.这个路径是否存在

    BOOL exist = [mgr fileExistsAtPath:pathisDirectory:&dir];

    // 3.如果不存在返回0

    if(!exist)

    {

        NSLog(@"路径不存在!!!");

        return 0;

    }

    else

    {

        // 5.路径存在

        if(dir)

        {

            // 行号

            int count=0;

             // 所有文件(文件夹和文件)

            NSArray *array = [mgr contentsOfDirectoryAtPath:patherror:nil];

            // 获得全路径

            for (NSString *fileName in array)

            {

                // 子文件夹的全路径

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

                // 累加代码行数

                count+=codeCount(fullpath);

            }

            return count;

        }

        else

        {

            // 1.判断文件扩展名(都转换成小写进行比较)

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

            if(![extension isEqualToString:@"h"] && ![extensionisEqualToString:@"m"] && ![extensionisEqualToString:@"c"])

            {

                //文件拓展名不是.m .c .h

                return 0;

            }

            else{

                // 2.获取文件内容

                NSString *str = [NSStringstringWithContentsOfFile:path encoding:NSUTF8StringEncodingerror:nil];

                // 3.根据\n分割

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

                // 显示文件对应的代码行数

                NSLog(@"%@---->%d",path,array.count);

                // 4.返回行数(数组个数)

                return array.count;

            }

        }

    }

   return 0;

}

int main(int argc,const char * argv[])

{

    @autoreleasepool

    {

        int count =codeCount(@"/Users/fendou/Desktop/练习代码");

        if( count < 5000 )

        {

            NSLog(@"---经过计算你的代码行数---");

            NSLog(@"-----⭐️%d⭐️------",count);

            NSLog(@"---战五渣你还写毛的代码---");

        }

        else

        {

            NSLog(@"---经过计算你的代码行数---");

            NSLog(@"-----⭐️%d⭐️------",count);

            NSLog(@"---不错不错,骚年继续撸---");

        }

    }

   return 0;

}