• 开源的和商业的C/C++源代码导航工具zz


    Richard Stallman自建立自由软件基金会,启动GNU工程至今已经有20多年,什么时候“Copyleft”的理念才能战胜“Copyright”呢?不知 道。至少现在还看不到这一天,因为我们还是经常在为减免高昂的软件使用授权费用而寻找开源替代品的时候失望而归。

    看看这种软件的比 较:C/C++源代码导航工具。

    阅读复杂的源代码,辅助工具是必要的,否则就会成为一个费时费力的工作,不能很好地专注在代码本身。过去我 知道的两个工具source insight和cscope。但是对于我这样的受windows影响过深的“IT新生代”来说,还是source insight要好用得多:只需要用鼠标点来点去,就可以完成源代码的关联、导航,变量、函数、调用、关键字 ... ... 一目了然,不再需要记住那么多的命令,快捷键,更不需要在多个窗口之间切换来切换去。

    可是source insight是要钱的,$249一个授权,即使是从2.0升级到3.5,也需要付$99。

    于是,上网寻找开放源代码的软件替代品,同时留 意了一下相关的商业软件。

    我很容易就找到了另外两个商业软件,看起来都很不错,而且一个比一个贵:
    Understand for C++ $495 http://www.scitools.com/
    Codesurfer   $795 http://www.grammatech.com/

    开 源的也找到两个,不过感觉都没有source insight好用。

    Doxygen
     主页:http://www.stack.nl/~dimitri/doxygen/index.html
     以 前以为Doxgen只用来从代码注释生成文档,没有想到Doxygen还有很强大的源代码分析功能,而且还有Windows版本。但是和Source Insight相比,有两点让我不喜欢。一是分析时间太长了;二是缺省的分析结果的组织方式不太方便本地浏览。Source Insight的分析结果保存在它自己的数据库中,用户不需要关心分析数据。而Doxygen缺省的分析结果被组织成了html格式,这对于通过Web来 了解代码带来便利,但是使用起来效率比较低,因为变量、函数以及引用都是在不同的页面中,不能做到一目了然。在浏览器中阅读源代码多少也有些不习惯。个人 觉得,还是Source Insight这种多窗口的桌面应用程序来得方便。
     
    cbrowser
     主页:http://cbrowser.sourceforge.net
     cbrowser 是用tcl/tk给cscope写的一个GUI,应该是好用的。可惜我下载的cbrowser-0.8不能在Unix上跑。在我的一台inux下也没有运 行起来,可能缺东西,需要时间来解决。
     
    此时,同事推荐我使用了SlickEdit,也很贵,但是公司购买了License。直观上感觉 SlickEdit速度比Source Insight要块些,编辑窗口比较整洁。source insight以字体大小来突出关键字,显得有些凌乱。SlickEdit还有很多别的功能,比较强大,可是俺只拿它来看代码。

    从目前取得 的结果比较来看,开源软件还是没有办法替代这些商业软件。失败。

    当然,从功能上来说,Doxygen也是很不错的。从程序员的角度来 说,doxygen做为源码分析、导航工具,缺乏的不过是一个GUI前端,以方便用户(桌面)的使用。我怀疑已经有人做了这样的东西,只不过暂时找不到而 已。因为Doxygen提供了一个很有意思的功能,就是把对源代码分析的结果组织成XML格式,这为第三方的应用程序利用Doxygen分析的结果提供了 重要的途径。http://www.stack.nl/~dimitri/doxygen/infoflow.gif

    联 想了起前些日子找到的一个copyleft的编辑工具Nodepad++(http://notepad-plus.sourceforge.net)。 如果作一个Nodepad++ Plugin,利用编Nodepad++的语法高亮、折叠等编辑器功能,利用Doxygen的分析结果,做一个“轻量级”的源代码的导航工具,会不会很有 意思呢?

  • 相关阅读:
    【server】瞎写
    【windows c++ 笔记】随笔
    【VScode】使用VScode来写markdown ② 流程图
    【VScode】使用VScode 来写markdown ① 时序图
    【windows c++ 笔记】 正则表达
    【sublime text】中文乱码问题解决过程
    【vue3】从0搭建Vue3项目
    【git】设置VScode为默认查看差异工具
    【lua实战摸索】C API&auxiliary library 使用笔记
    【vue3】监控响应: reactive/watch/watchEffect/provide.inject/computed
  • 原文地址:https://www.cnblogs.com/madfrog/p/1766506.html
Copyright © 2020-2023  润新知