随笔分类 -  代码可视化

摘要:自己在vs2015做的代码可视化插件在只装了vs2010/2012/2013的机器打不开。报了这个错:未能加载文件或程序集“Microsoft.VisualStudio.Shell.14.0, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件检查发现是依赖了两个只有vs20... 阅读全文
posted @ 2017-07-22 00:07 dydx 阅读(938) 评论(0) 推荐(0) 编辑
摘要:用wpf 写一个程序,引用了另一个c#控制台程序,编译通过,运行时报错。 报的错是 Could not load file or assembly... A strongly-named assembly is required 关键在后半句,原来需要为控制台添加一个叫做“强签名”的东西。 添加的方 阅读全文
posted @ 2017-05-17 15:18 dydx 阅读(639) 评论(0) 推荐(0) 编辑
摘要:Using this plugin one can navigate the code easily. Source code and detailed user manual in https://github.com/league1991/CodeAtlasSublime . Find Call 阅读全文
posted @ 2017-01-19 01:18 dydx 阅读(2140) 评论(0) 推荐(1) 编辑
摘要:1. 调整了配色2. 界面左上角显示了与当前选中节点相关的关系图名称。此时按Alt+1,即可显示Integrator的继承关系。3. 界面右下角显示了选中节点的类名。总体效果如图:4. Alt+D可以隐藏选中元素周围访问次数最少的节点。用这种办法可以一次过隐藏那些没什么价值的变量或函数。可以多选几次想留下的函数或变量,再按Alt+D5. Ctrl+数字 快速将一条边添加到关系图再按一次,就从对应的... 阅读全文
posted @ 2017-01-07 16:41 dydx 阅读(1150) 评论(0) 推荐(0) 编辑
摘要:做了一个sublime text插件,可以方便地查看C++/python的调用图。插件的演示视频在这里:http://list.youku.com/albumlist/show?id=28202266&ascending=1&page=1https://www.youtube.com/playlist?list=PLN16zMWJLkHLgHhTJUIkwp5chgnFz9_NH来自为知笔记(Wi... 阅读全文
posted @ 2016-09-24 14:10 dydx 阅读(255) 评论(0) 推荐(0) 编辑
摘要:CodeAtlas is a plugin of SublimeText, which allows one to explore the call graph conveniently. The plugin uses the code analysis tool Understand (https://scitools.com) to perform symbol/reference quer... 阅读全文
posted @ 2016-04-15 00:57 dydx 阅读(1088) 评论(0) 推荐(0) 编辑
摘要:增加查找一个函数到另一个函数所有调用路径的功能。在界面上,按住鼠标中键拖动函数A到函数B上面,即可找出函数A到函数B的所有调用路径,如图:图中没有显示鼠标指针。来自为知笔记(Wiz) 阅读全文
posted @ 2016-03-26 18:16 dydx 阅读(183) 评论(0) 推荐(0) 编辑
摘要:增加函数调用顺序的编号,以及左右两边扇形分别作为被调用函数、调用函数个数的显示,如图:来自为知笔记(Wiz) 阅读全文
posted @ 2016-03-25 01:42 dydx 阅读(164) 评论(0) 推荐(0) 编辑
摘要:由于之前的代码可视化方案太复杂,分析时间太长,不实用,另一方面是而且工作以后业余时间大大减少,因此决定放弃原有路线,从工作中最迫切的需求着手,逐步构建一个实用的工具。新的方法仍然依赖understand进行代码分析,采用sublime text插件的形式。主要功能是用图的形式显示各个代码元素的依赖关系。首先需要安装understand分析软件、python3.4、pyqt4再把文件复制到subli... 阅读全文
posted @ 2016-03-20 23:42 dydx 阅读(324) 评论(0) 推荐(0) 编辑
摘要:对qt creator 工程进行分析,得到如下结果。工程总览放大一点看主体目录结构,下方为程序核心库lib,右方为插件plugins,左方为shared,作用未明插件目录结构,此时各个插件的大概内容可以通过提取的词云看到了。同时每个插件的代码量,也可以从“陆地”面积大致看出。往中心的explorer放大,可以看到其更多细节。这是一个叫做project explorer的插件,对应编辑器左边的工程目... 阅读全文
posted @ 2015-07-19 11:20 dydx 阅读(194) 评论(0) 推荐(0) 编辑
摘要:首先对类坐标进行空间聚类,再显示出主题。来自为知笔记(Wiz) 阅读全文
posted @ 2015-07-18 13:36 dydx 阅读(189) 评论(0) 推荐(0) 编辑
摘要:利用海洋深度表示目录嵌套结构,结果如图。同一层次深度的目录的颜色相同。当前发现几个问题:1. 布局的时候,应该更合理地考虑节点的大小,现在当目录节点和其他节点处于同一层次时,结果就不太好。例如会出现极不均匀的情形。2. 模块聚类是否应该换成只针对语义?同时变成跨模块的整体聚类?3. 标签云LOD显示应该考虑合并标签的情形。例如第一张图,大量的类聚集在一起,若不对相邻的类的标签进行合并,无法选出有代... 阅读全文
posted @ 2015-07-16 00:34 dydx 阅读(144) 评论(0) 推荐(0) 编辑
摘要:删掉一些过于紧密的导引点若两个导引点之间距离小于某值阈值取轮廓最小半径阈值=(最小轮廓半径+最大半径)/2可见边有所光滑采用相邻导引边的夹角余弦作为标准,余弦>0.9的边删去两者结合,满足任一标准便合并加入松弛算法。所谓松弛算法,即是在连接两点的样条和直线之间按某个权重混合,得到新曲线。可见加入后线不再严重重叠,可以分辨出走向大致一致的不同线。来自为知笔记(Wiz) 阅读全文
posted @ 2015-07-11 20:17 dydx 阅读(223) 评论(0) 推荐(0) 编辑
摘要:简单实现了Bavota的模块划分算法。论文有两篇:Using structural and semantic measures to improve software modularizationSoftware remodularization based on structural and semantic metrics方法是计算一个结合了结构和语义信息的相似度矩阵,根据某个阈值筛选出高相似... 阅读全文
posted @ 2015-07-10 19:43 dydx 阅读(1073) 评论(0) 推荐(0) 编辑
摘要:当前可以对模块聚类,可以显示各个类的关键字选中一个模块时,相关的模块会突出显示当前问题、以及可以做的工作有几个:(1)边形状太怪异,像血管一样(2)应该允许钉住节点和边,令其始终突出显示(3)筛选出重要的边。条件:1.边的两节点能被用户看到,2.边本身比较重要(4)分析出数据流发现qgraphicsitem的paint函数的一点特性,利用它可以从item获取当前进行绘制的view:void QGr... 阅读全文
posted @ 2015-07-10 19:42 dydx 阅读(145) 评论(0) 推荐(0) 编辑
摘要:今天发现QFontMetric的一个问题QFontMetrics可以输入一个字体和一个字符串,计算出字符串在这种字体下的显示尺寸。这种计算比较耗时间,因此Qt内部应该是缓存了计算结果。具体方法是在第一次调用时,把QFontMetrics绑定的字体内部每个字的尺寸都计算出来,以后对相同字体求大小的时候便可以直接查询每个字的尺寸,最后累加出大小返回给用户。问题在于QFont允许通过setPointSi... 阅读全文
posted @ 2015-06-23 20:42 dydx 阅读(1096) 评论(0) 推荐(0) 编辑
摘要:1. 一开始,显示整个工程的状况 这一步具体有很多工作要做,最终目标是能够让用户快速分辨出工程由几个模块组成,哪些模块属于高层模块,哪些属于底层模块,分辨出每个模块中比较重要的类。还有每个类在程序里面的实际影响范围。 具体的设想在下一步进行,当前重点考虑类内部的设计。 2. 用户选出感兴趣的模块,进而挑选感兴趣的类。 假设挑选了下面这个类。 ... 阅读全文
posted @ 2015-05-28 01:07 dydx 阅读(257) 评论(0) 推荐(0) 编辑
摘要:试图让系统支持多视图。如图所示。现在两个视图显示的东西完全一样,下一步要使得每个视图可以独立筛选要显示的内容。发现Qt的一个优点是可以自动在各个视图中同步。有一点要注意,就是各个视图在绘制的过程中不能修改QGraphicsItem的属性,否则在修改之后,qgraphicsscene又会重新要求绘制,如此反复,程序陷入死循环。加入筛选开关之后,情况如图左边是变量,右边是函数。选中一个变量之后,相应的... 阅读全文
posted @ 2015-05-27 13:33 dydx 阅读(197) 评论(0) 推荐(0) 编辑
摘要:现时仅仅利用圆点表示函数和变量同样一个类,当前效果与先前效果对比。当前对类内部元素布局的进一步思考:(1)类内部必须能够看到所有元素。但可以提供某种筛选策略,例如只显示函数、只显示变量。(2)函数调用、变量依赖这两种边是有用的。但必须有有效的筛选。简单的筛选可以只显示函数调用或者变量依赖。复杂的筛选可以基于各种关系逐步显示。(3)当前下图的布局与之前相比,好处是视觉元素已经比较单一,只有节点和边,... 阅读全文
posted @ 2015-05-25 16:57 dydx 阅读(183) 评论(0) 推荐(0) 编辑