http://steeven.iteye.com/blog/370738
Eclipse Netbeans 项目管理 UML Git
介绍一个好东西:RELO, 代码分析用的
先说几个题外话:
1. 饭碗掉到马桶里面还要不要用了?重要的马桶里面还有新鲜的shit。偶是做软件的,选择了重用。。
。开水冲洗一下,然后进微波炉转转。经济危机,勤俭节约。
2. 我们都有这样的经验:拿到一堆开源的代码,在里面看呀看呀找不到方向,看到这里忘了那里。或者
是维护别人的代码,在一堆垃圾代码中苦苦挣扎。
3. 有同事建议看些右脑开发的东西,他能随口说出我们的手机号码,汗!偶有心打鸣没心下蛋,下了一
堆资料没去看。但是有个重要的概念:人脑对图形的记忆能力远远强于对文字数字的记忆。所以最好的语
文老师要求背诵荷塘月色的时候都会极力YY一下。所以也有了UML,那玩意虽然很枯燥,总比看代码有印
象。
4. 最近忙得脚打后脑勺,这个题目两周前就想写,今天总算有点时间。
正题:
因为要解决一个比较棘手的问题,要看很多代码,一边看一遍用画图工具画下来,总觉得不方便。正好有
同事推荐了RELO, 结果用下来发现有很多问题,仔细看看,原来2年没维护了。自己改了些bug, 终于可以
凑合着用了。下面是用RELO分析RELO导出的图(这个导出功能是我加的,把关系线给导没了,待修):
Elipse编译插件结构:
对象模型:
GEF对象模型:
RELO比较可爱的几个地方:
1. 现有的类可以从左边的导航树上直接拖到图上
2. 成员是根据需要展开的
3. 同步功能,你看过的代码会自动记录到图上,很方便回过头追踪。特别是断点调试的时候,stack
trace可以变成调用过程图。
4. 方法的前后调用关系,可以从图上直接展开。
RELO对代码的关系分析有两种方式(图一):ASM和AST。前者从编译后的class解析(缺省),后者利用
Eclipse对源码树的解析。有兴趣的可以拿来好好学习一下。
如果我们自己实现这种插件,想想要建立多少个对象呢?
package/class/method/field/relation/memo/link/...
relo里面利用了openrdf,这个玩意很有趣,正好也很适合描述这些复杂关系, 下章blog单独介绍RDF吧,
这个问题有点大。
果然是MIT出品,在设计上很有新意。但是仔细看看代码,有些混乱,可能是不同的人维护出来的结果。
原作者vineet(好像是个印度人)现在就职另外一个公司,有商业版本relo推出,对个人免费。现在还没
看到产品。
我改过的代码在http://bitbucket.org/steeven/relo/上有克隆版本。这个网站很有趣,mercurial的
eclipse插件就在这个上面。如果你对某个项目想实现自己的开发分支,或者提交一些patch, 无需提交权
限,把原来的项目克隆成自己的,直接提交即可,如果有价值,可以要求主干维护者merge你的patch。别
人也能看到你的分支。这些有趣的特性来自mercurial(HG)一个类似于GIT的分布式版本管理工具。
netbeans已经正式支持。好处很多,自己慢慢研究吧。习惯windows下面玩的有对应的乌龟可用。
OK, 如果你也喜欢这个小插件,欢迎帮忙完善它,不管文档还是代码。
先说几个题外话:
1. 饭碗掉到马桶里面还要不要用了?重要的马桶里面还有新鲜的shit。偶是做软件的,选择了重用。。
。开水冲洗一下,然后进微波炉转转。经济危机,勤俭节约。
2. 我们都有这样的经验:拿到一堆开源的代码,在里面看呀看呀找不到方向,看到这里忘了那里。或者
是维护别人的代码,在一堆垃圾代码中苦苦挣扎。
3. 有同事建议看些右脑开发的东西,他能随口说出我们的手机号码,汗!偶有心打鸣没心下蛋,下了一
堆资料没去看。但是有个重要的概念:人脑对图形的记忆能力远远强于对文字数字的记忆。所以最好的语
文老师要求背诵荷塘月色的时候都会极力YY一下。所以也有了UML,那玩意虽然很枯燥,总比看代码有印
象。
4. 最近忙得脚打后脑勺,这个题目两周前就想写,今天总算有点时间。
正题:
因为要解决一个比较棘手的问题,要看很多代码,一边看一遍用画图工具画下来,总觉得不方便。正好有
同事推荐了RELO, 结果用下来发现有很多问题,仔细看看,原来2年没维护了。自己改了些bug, 终于可以
凑合着用了。下面是用RELO分析RELO导出的图(这个导出功能是我加的,把关系线给导没了,待修):
Elipse编译插件结构:
对象模型:
GEF对象模型:
RELO比较可爱的几个地方:
1. 现有的类可以从左边的导航树上直接拖到图上
2. 成员是根据需要展开的
3. 同步功能,你看过的代码会自动记录到图上,很方便回过头追踪。特别是断点调试的时候,stack
trace可以变成调用过程图。
4. 方法的前后调用关系,可以从图上直接展开。
RELO对代码的关系分析有两种方式(图一):ASM和AST。前者从编译后的class解析(缺省),后者利用
Eclipse对源码树的解析。有兴趣的可以拿来好好学习一下。
如果我们自己实现这种插件,想想要建立多少个对象呢?
package/class/method/field/relation/memo/link/...
relo里面利用了openrdf,这个玩意很有趣,正好也很适合描述这些复杂关系, 下章blog单独介绍RDF吧,
这个问题有点大。
果然是MIT出品,在设计上很有新意。但是仔细看看代码,有些混乱,可能是不同的人维护出来的结果。
原作者vineet(好像是个印度人)现在就职另外一个公司,有商业版本relo推出,对个人免费。现在还没
看到产品。
我改过的代码在http://bitbucket.org/steeven/relo/上有克隆版本。这个网站很有趣,mercurial的
eclipse插件就在这个上面。如果你对某个项目想实现自己的开发分支,或者提交一些patch, 无需提交权
限,把原来的项目克隆成自己的,直接提交即可,如果有价值,可以要求主干维护者merge你的patch。别
人也能看到你的分支。这些有趣的特性来自mercurial(HG)一个类似于GIT的分布式版本管理工具。
netbeans已经正式支持。好处很多,自己慢慢研究吧。习惯windows下面玩的有对应的乌龟可用。
OK, 如果你也喜欢这个小插件,欢迎帮忙完善它,不管文档还是代码。