找回密码
 注册
Simdroid-非首页
查看: 153|回复: 11

请问如何自动统计一个function有多少行代码

[复制链接]
发表于 2009-10-16 21:34:07 | 显示全部楼层 |阅读模式 来自 湖南长沙
我有一组m文件,每个m文件中有若干函数,我想自动统计每个函数有多少行代码,怎么办
发表于 2009-10-16 21:43:53 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
小畜以前贴过这样的代码,你可以学习一下,http://forum.simwe.com/thread-899361-1-3.html

另外,发贴提问之前要搜索。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-16 23:06:32 | 显示全部楼层 来自 湖南长沙
多谢斑竹,我搜过可惜用错了关键词
回复 不支持

使用道具 举报

发表于 2009-10-16 23:12:03 | 显示全部楼层 来自 重庆
我原先那个是比较粗略的,统计所有的行数。

如果纯粹想统计一个M文件内,有几个函数,以及 不统计注释
很简单
逐行读取,每一行的读取的文字,进行判断。
用Matlab 的 正规表达式 判断, 是function,还是%的注视,都可以用正规表达式实现判断,并统计
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-16 23:34:18 | 显示全部楼层 来自 湖南长沙
多谢小畜。正在研读你的代码。
我以前是用通用语言C++和Delphi(Pascal)做开发的。最近才转到matlab圈中。我感觉matlab阵营好像关注算法实现多于关注软件工程化方法。
我在通用语言开发中使用的许多开发辅助工具例如代码格式化工具(C++的SourceStyle、Delphi的DelForEx)、代码质量分析工具如SourceMonitor等在matlab中都找不到对应的产品。simwe社区和研学论坛上好像对这些方面的讨论似乎也不多。是大家开发的项目都不大(我想不大可能)?我想知道如果一个project由30个以上m文件组成的话,该如何管理呢?迷茫中...
不过还是谢谢messenger和小畜。初次发帖就引来斑竹,很受鼓舞呀,呵呵
回复 不支持

使用道具 举报

发表于 2009-10-17 00:52:06 | 显示全部楼层 来自 重庆
本帖最后由 风天小畜 于 2009-10-17 01:40 编辑

http://ftxc.blog.163.com/blog/static/10732374720095189953388/
这个,展示的功能非常少,是因为不想公开里面的创意。
实际上,飞狐交易师 能有的功能,90%我都用 Matlab做出来了。另外还有很多独到的功能。在matlab开发的GUI程序里面,也可以像大智慧等软件那样,再创建自定义的公式指标系统。

我没有用任何第三方的代码辅助工具,缺少什么,就自己做出来。纯粹是一个人做,而不是团队。

如果Matlab做一个project,有经验:
比如,有子文件夹,需要添加为path
通常人们,会使用addpath(genpath(pwd)); 但是,如果把程序放在Matlab安装目录下,会出错。
而且,如果你的程序有很多 函数。那么,执行前,搜索,会变得很慢。

我常用的做法,就是,程序第一次执行的时候,搜索整个目录和子目录。把所有的m文件和对应的函数调用,根据路径都转换成 函数handle这种形式,这样提高效率(还是需要,逐行读取m文件,用正规表达式判断是否为一个函数,或者函数调用)。最后,再把它们转换成p代码。


我用matlab实现飞狐交易师股票软件的90%的功能,开发没有用其他的辅助工具。
就是自己用matlab脚本写出一些辅助工具。
我自己写了个预处理的东西,程序的变量的命名管理,也不用匈牙利法,就是用 变量类型+目录序号+行号 。
我做了个预处理,能够像C语言的编译器一样,可以把 循环展开,函数内联...
使用matlab的正规表达式,是最重要的一点。
正规表达式+文件读写+编译原理 =  一个matlab代码的项目工具/伪编译/词法分析

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-10-17 09:22:13 | 显示全部楼层 来自 广西贵港
大项目,甚至团队开发项目开发管理经验,可以和CWIT交流
5# fxj7158
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-17 09:36:07 | 显示全部楼层 来自 湖南长沙
多谢小畜。拜访了你的博客,真是别有洞天呀。那么多功能都一个人做呀?真了不起。
说说我对matlab开发的认识。我主要是开发一些控制算法和科学计算的应用。接触matlab有一个月了。
发现matlab有以下优点:
g1.专业算法库丰富(其它任何开发平台都提供不了),实现一个算法原型并验证的开发周期短
g2.绘图功能不错(其它平台能找到对应功能模块,学习曲线稍为复杂)
缺点也不少:
b1.解释模式执行,慢且不说,还脱不开matlab环境。Help中说matlab可以编译出单独执行程序,还未深究,不知代价有多大(是向VC那样带个Runtime 库的dll呢?还是直接后台起来个进程服务器)。还有Help说matlab有com server,不知是不是把matlab整个作为进程外服务器,通过api驱动它执行脚本。就像一些专业软件如stk那样
b2.RuntimeWorkShop既然能把Simulink模型编译成目标机上C代码,不知为何m文件不能这么干,不都是词法分析问题吗
b3.GUI编程.我想matlab可能不适合做GUI开发。自带控件太丑,开发环境与通用语言环境相比差距很大。还不支持第三方控件。
b4.面向对象的实现有点怪。
b5.对软件工程的支持太少,制约了大型project的质量控制
上面这些话不是在比较哪种平台好哪种平台不好,那种口水话毫无意义,就像要虎和鹰比飞,鹰和鱼比游一样。我对开发一直的主张是,哪个平台对完成特定的任务方便就用哪个平台。像我们做的开发一般包括以下任务:
界面操作(delphi)
算法(C/C++/Fortran/Matlab)
基于数据库的数据管理(Delphi/.net)
网络通讯(Delphi/C++/.net)
可视化(图表Delphi/C++/.net,动画用基于脚本驱动的专业软件Mutigen/stk/adams)
多线程或多进程(C/C++/Delphi)
我现在困惑于matlab的问题主要有两方面
1.对软件工程支持。看了你的回帖,看来只有自己动手丰衣足食,不能指望外部工具了。下一步准备研究正则表达式
2.用m文件实现的算法如何脱离matlab开发环境运行。
利用matlab编成dll?
matlab的com server?
独立程序?
还有其它模式吗?你有什么建议?

还要继续学习呀。听君一席话,胜读十本书。simwe社区高手真热情呀,呵呵,我会努力的

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-17 09:47:00 | 显示全部楼层 来自 湖南长沙
多谢shunfly。btw,斑竹为啥论坛没有按作者搜帖子功能呀?不是想干涉论坛内政,只是好奇:)
回复 不支持

使用道具 举报

发表于 2009-10-17 10:43:48 | 显示全部楼层 来自 重庆
做GUI,其实,不要局限在用那些自带的控件。
用上其它语言的 画布的这种思路。  在 matlab整个 figure 区域,添加一个隐藏的axes。
在这个坐标轴 axes里面,想做什么样的控件,就自己一个点一个点地,用 line 和patch 绘制出来。

比如,右键弹出菜单,不一定用自带的uicontextmenu,可以响应 figure右键事件,在鼠标点击处,绘制一个patch和一些文本。patch和文本的响应区域的 鼠标点击事件,就分别设为响应的需要实现的功能。
figure鼠标move事件,如果鼠标移出了绘制的菜单,那么把刚才绘制的那些都去除,即可。


matlab gui其实可以做很多,有人就用matlab做出俄罗斯方块这个GUI的游戏。

matlab支持面向对象特性,自己写一个控件,其实不难。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-10-17 21:31:25 | 显示全部楼层 来自 浙江杭州
9# fxj7158

论坛可以实现你说的这个功能,具体可以参考此贴,http://forum.simwe.com/thread-899295-1-1.html

多谢shunfly。btw,斑竹为啥论坛没有按作者搜帖子功能呀?不是想干涉论坛内政,只是好奇:)
fxj7158 发表于 2009-10-17 09:47
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-19 08:11:00 | 显示全部楼层 来自 湖南长沙
多谢messenger,是我粗心了:P
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 05:24 , Processed in 0.059242 second(s), 20 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表