一个简单的代码计算行数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了
一个简单的代码计算行数demo编写的更多相关文章
- 在Windows cmd中计算行数
本文主体来自这篇外文文章的翻译.原文中有一个副标题:"如何简单地用Windows自带的FIND在CMD.exe中计算行数" 当我们在命令行环境中工作时,能计算其它工具输出内容的行数 ...
- 手把手制作一个简单的IDEA插件(环境搭建Demo篇)
新建IDEA插件File --> new --> Project--> Intellij PlatForm Plugin-->Next-->填好项目名OK 编写插件新建工 ...
- curl太复杂难用记不住?来试试Httpie一个简单的现代化命令行Http客户端
HTTPie 是一个简单的现代化命令行 HTTP 客户端. 交互友好,JSON支持,语法高亮,类wget下载,支持拓展等 功能特性 自然而且简单的命令语句 格式化且高亮显示输出内容 内置 JSON 支 ...
- 计算代码行数Demo源码
源码下载:04-计算代码行数.zip24.1 KB//// main.m// 计算代码行数//// Created by apple on 13-8-12.//技术博客http://www.cn ...
- Android 简单统计文本文件字符数、单词数、行数Demo
做的demo是统计文本文件的字符数.单词数.行数的,首先呢,我们必须要有一个文本文件.所以我们要么创建一个文本文件,并保存,然后再解析:要么就提前把文本文件先放到模拟器上,然后检索到文本名再进行解析. ...
- C++统计代码注释行数 & 有效代码行数 & 代码注释公共行 & 函数个数
问题来源,在14年的暑假的一次小项目当中遇到了一个这样的问题,要求统计C++代码的注释行数,有效代码行数,代码注释公共行数,以及函数个数. 下面稍微解释一下问题, 1)注释行数:指有注释的行,包括有代 ...
- UITableView!别再用代码计算行高了(一)
你还在用代码去计算行高吗?你不感觉那种方式很low吗?从今天起,试着做些改变吧! 别给我讲你喜欢写代码的感觉,你就是要用代码去计算行高,那我这篇文章不适合你. 在讲解复杂内容之前,还是先学习简单的内容 ...
- 如何利用C# Roslyn编译器写一个简单的代码提示/错误检查?
OK, 废话不多说,这些天在写C#代码时突然对于IDE提示有了一些想法,之前也有了解过,不过并没有深入. 先看个截图: 一段再简单不过的代码了,大家注意看到 count 字段下面的绿色波浪线了吗,我们 ...
- Excel 一个工作表进行按行数拆分
1. 如下Excel表,总共有120多行数据,如何将以50行数据为一个工作表进行拆分 Sub ZheFenSheet() Dim r, c, i, WJhangshu, WJshu, bt As Lo ...
随机推荐
- nginx专题
1.Nginx和php性能优化相关 专家向磊http://slaytanic.blog.51cto.com/2057708/1173021 2.Puppet利用Nginx多端口实现负载均衡http:/ ...
- php:获取浏览器的版本信息
//分析返回用户网页浏览器名称,返回的数组第一个为浏览器名称,第二个是版本号. function getBrowser() { $sys = $_SERVER['HTTP_USER_AGE ...
- 快速入门SaltStack
导读 SaltStack是基于Python开发的一套C/S架构配置管理工具(功能不仅仅是配置管理,如使用salt-cloud配置AWS EC2实例),它的底层使用ZeroMQ消息队列pub/sub方式 ...
- Bootstrap IIFE
在Bootstrap源码(具体请看<Bootstrap源码解析>)和其他jQuery插件经常看到如下的写法: +function ($) { }(window.jQuery); 这种写法称 ...
- hdu1520 树形dp Anniversary party
A - Anniversary party Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
- Python自动化之sqlalchemy(修改和查询)
修改 my_user = Session.query(User).filter_by(name="alex").first() my_user.name = "Alex ...
- Selenium Webdriver元素定位的常用方式
单选框.复选框.文本框和密码框的元素标签都是input,此时单靠tagName无法准确地得到我们想要的元素,需要结合type属性才能过滤出我们要的元素.示例代码如下: public class Sea ...
- HTML页面关键词随机分布布局
结合underscore-min.js,和D3.js 绘制HTML关键词随机分布 <!DOCTYPE html> <html> <head> <meta ch ...
- 用ConfigParser模块读写配置文件——Python
对于功能较多.考虑用户体验的程序,配置功能是必不可少的,如何存储程序的各种配置? 1)可以用全局变量,不过全局变量具有易失性,程序崩溃或者关闭之后配置就没了,再者配置太多,将变量分配到哪里也是需要考虑 ...
- curl api create domain
from: https://adam.younglogic.com/2013/09/keystone-v3-api-examples/ http://docs.openstack.org/develo ...