老生常谈, linux 下有什么能和source insight 媲美的软件

5,459 views
Skip to first unread message

hui zhang

unread,
Jan 22, 2015, 3:29:33 AM1/22/15
to ustc...@googlegroups.com
一直用 source insight 非常顺手。色彩高亮和 代码分析做的很好。
按需指定文件, 不会像有些软件非要你指定工程目录

linux 下尝试了诸多软件
eclipse cdt 慢 且设计及其不合理
vim   门槛高 且不好用
code::block code lite 一句话 不好用, 不解释。

geany  个人感觉相对而言最好用的 轻量ide , 但是find reference 不准确, 很头疼。

slick edit 最接近source insight  但是1 收费  2 居然给我找reference的时候找出一堆什么都没有的文件

clion  吹的很厉害,非要你指定工程目录,不能按需指定文件, 硬伤

用来用去还是source insight  好  但是 ubuntu wine 下也有不便

纠结啊 不知道 用什么好了


Zuyi Hu

unread,
Jan 22, 2015, 3:58:56 AM1/22/15
to ustc...@googlegroups.com
有个商业软件understand(https://scitools.com/),不知道符不符合你的要求。

--
-- 来自USTC LUG
请使用gmail订阅,不要灌水。
更多信息more info:http://groups.google.com/group/ustc_lug?hl=en?hl=en
---
You received this message because you are subscribed to the Google Groups "USTC_LUG" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ustc_lug+u...@googlegroups.com.
To post to this group, send email to ustc...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

hui zhang

unread,
Jan 22, 2015, 4:09:34 AM1/22/15
to ustc...@googlegroups.com
表面看比 source insight  牛逼
其实不实用  而且居然没有色彩高亮

另外什么 qtcreator  anjuta  什么的 和 geany 一样只能找  usage  not reference
其差别就在   
typedef struct { int x} A;
typedef struct { int x} B;
usage 区分不了 A中的x  还是B中的x  后者reference可以

在 2015年1月22日星期四 UTC+8下午4:58:56,hzy写道:

Darcy Shen

unread,
Jan 22, 2015, 6:17:51 AM1/22/15
to ustc...@googlegroups.com
没用过source insight,不知道KDevelop你认为如何?个人感觉KDevelop是Linux最好用的C++ IDE。

tonghuix

unread,
Jan 22, 2015, 7:05:34 AM1/22/15
to ustc...@googlegroups.com
我推荐Anjuta可以凑合。但你这要求也许ATOM什么的可以帮你。

另外我自己是用Emacs+Ecb的,还是可以满足我的需求的,不知道能否满足你

On Thu, Jan 22, 2015 at 07:08:32PM +0800, Darcy Shen wrote:
> 没用过source insight,不知道KDevelop你认为如何?个人感觉KDevelop是Linux最好用的C++ IDE。
>

Zhang Cheng

unread,
Jan 22, 2015, 7:09:48 AM1/22/15
to USTC LUG
这些工具里面,source insight是我个人觉得最不能忍的东西。主要就是亮点:

* 颜色太花了!
* 用非等宽字体阅读代码就已经很痛苦了,这货不仅不等宽,还不等高!

--
-- 来自USTC LUG
请使用gmail订阅,不要灌水。
更多信息more info:http://groups.google.com/group/ustc_lug?hl=en?hl=en
---
You received this message because you are subscribed to the Google Groups "USTC_LUG" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ustc_lug+u...@googlegroups.com.
To post to this group, send email to ustc...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Cheng,
Best Regards

Yan Wang

unread,
Jan 22, 2015, 11:21:03 AM1/22/15
to ustc...@googlegroups.com
+10086。。为毛这么多人推荐。。

Guo, Jiahua

unread,
Jan 22, 2015, 4:40:03 PM1/22/15
to ustc...@googlegroups.com
怎么说呢。
针对 C 和 C++ 说吧。
我用过 Visual Studio, Eclipse,QtCreator 和 Cscope,没用过 SourceInsight,YCM 只用过补全没用过跳转。

创建工程,实际上是指定编译参数的意思,包括预定义的宏和 include path,以及C++的标准(98、11 还是 14)。
不创建工程,代码阅读软件就不容易展开条件编译,这阻止了进一步的代码分析。(条件编译的一个例子是 boost 的线程库选择操作系统)


如果字符串匹配就够了的话,用 vim+cscope 或 emace+cscope 就行了。ctags 应该也可以,不过我没用过。
一些遗漏的地方就用 grep 处理了。emacs 中有个命令是 M-x grep-find。
C 语言用这种方法应该就行了。


如果是 C++ 的话,因为要处理模板、函数重载和类型推断(auto)等特性,代码阅读程序需要能解析语义。
//因此,需要能准确的解析条件编译。
//因此,多数情况下需要创建一个工程。


关于模板展开的一个测试:
==========
template<int x>
struct parity: parity<x-2>
{
};

template<>
struct parity<0> {
    static const bool is_even = true;
};

template<>
struct parity<1> {
    static const bool is_odd = true;
};
==========

Visual Studio 能展开出:
parity<98>::is_even
parity<99>::is_odd


Eclipse 能展开出:
parity<30>::is_even
parity<31>::is_odd


YCM 能展开出:
parity<500>::is_even
parity<501>::is_odd

当 x 过大时,Visual Studio,Eclipse 和 YCM 都不展开了。

QtCreator 偷了懒,parity<0> 的展开同时包括不可能同时出现的两项:
parity<0>::is_even
parity<0>::is_odd
看起来就是把所有的可能合起来了……


由此,我们可以知道,VS、Eclipse、YCM 都是认真做模板展开的。
但模板时图灵完备的。我猜它们内部有个 timeout,超时了就停止解析。

QtCreator 因该是只展开了一层,然后简单处理了一下。(这个描述似乎也不严谨……)



简单给个总结吧。
以我的感觉,从代码解析的方面看,阅读 C++ 代码的工具中:

VS、Eclipse 都还不错。
QtCreator 模板解析弱一些,但也不错。

YCM 解析没问题,但我没试用它看代码,所以我不知道。
SourceInsight 我没用过。

其他不懂语义的工具,处理C++,嗯……其实我没试过,但我猜可能比较累。


其他:
读代码没头绪时,可以考虑调用 valgrind 的 callgrind 工具,生成动态的函数调用关系图。可能有些帮助。



另外:
=========

另外什么 qtcreator  anjuta  什么的 和 geany 一样只能找  usage  not reference
其差别就在   
typedef struct { int x} A;
typedef struct { int x} B;
usage 区分不了 A中的x  还是B中的x  后者reference可以
=========
我试了一下,没发现你说的问题。



2015-01-22 16:29 GMT+08:00 hui zhang <fastf...@gmail.com>:

Guo, Jiahua

unread,
Jan 22, 2015, 4:46:27 PM1/22/15
to ustc...@googlegroups.com
2015-01-23 5:39 GMT+08:00 Guo, Jiahua <gjh...@gmail.com>:
另外:
=========
另外什么 qtcreator  anjuta  什么的 和 geany 一样只能找  usage  not reference
其差别就在   
typedef struct { int x} A;
typedef struct { int x} B;
usage 区分不了 A中的x  还是B中的x  后者reference可以
=========
我试了一下,没发现你说的问题。
 
补充:
我试了一下 qtcreator,没发现你说的问题。

Yan Wang

unread,
Jan 22, 2015, 5:00:51 PM1/22/15
to ustc...@googlegroups.com
由此,我们可以知道,VS、Eclipse、YCM 都是认真做模板展开的。
但模板时图灵完备的。我猜它们内部有个 timeout,超时了就停止解析。

​前两天正好在看template meta-programming。这个展开的限制是递归深度,比如g++默认是600~​
 

Guo, Jiahua

unread,
Jan 22, 2015, 5:06:43 PM1/22/15
to ustc...@googlegroups.com
嗯……
这一步还没有到调用外部编译器的地方,只是在代码阅读器内的分析器中展开。
// 当然你要说分析器事实上就是编译器的前端那也行……
// 有的分析器就是 clang/libclang

hui zhang

unread,
Jan 22, 2015, 8:50:16 PM1/22/15
to ustc...@googlegroups.com
等宽都可以设置的  , 默认设置确实不让人满意。

但是 source insight 的查找速度和准确度 是最高的

You received this message because you are subscribed to a topic in the Google Groups "USTC_LUG" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ustc_lug/i6CZ_pw6ZHY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ustc_lug+u...@googlegroups.com.

hui zhang

unread,
Jan 22, 2015, 8:58:24 PM1/22/15
to ustc...@googlegroups.com
对比过 geany  qtcreator  kdevelop
你看看 ubuntu 软件排位,  geany 后起之秀, 使用上明显好于后面2个

2015-01-22 19:08 GMT+08:00 Darcy Shen <sad...@zoho.com>:
没用过source insight,不知道KDevelop你认为如何?个人感觉KDevelop是Linux最好用的C++ IDE。

hui zhang

unread,
Jan 22, 2015, 9:06:50 PM1/22/15
to ustc...@googlegroups.com
qtcreator   
cnt  我在很多 struct 里面定义了   
find usage 结果如图,  把所有结构体里面的cnt 都找出来了
是我打开方式不对?



--
-- 来自USTC LUG
请使用gmail订阅,不要灌水。
更多信息more info:http://groups.google.com/group/ustc_lug?hl=en?hl=en
---
You received this message because you are subscribed to a topic in the Google Groups "USTC_LUG" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ustc_lug/i6CZ_pw6ZHY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ustc_lug+u...@googlegroups.com.
QQ截图20150123100419.png

Guo, Jiahua

unread,
Jan 23, 2015, 12:55:24 AM1/23/15
to ustc...@googlegroups.com
好吧。
我这是 QtCreator 3.2.1。
确实有这个问题,搜索时它没有区分不同的匿名结构体中同名的成员变量。

我之前测试的是从成员变量的使用处跳到定义,这个是没问题的。

You received this message because you are subscribed to the Google Groups "USTC_LUG" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ustc_lug+u...@googlegroups.com.

hui zhang

unread,
Jan 23, 2015, 1:30:42 AM1/23/15
to ustc...@googlegroups.com
所以还是  source insight 好啊   

hui zhang

unread,
Jan 26, 2015, 12:50:44 AM1/26/15
to ustc...@googlegroups.com
最后决定还是 wine  source insight了
但是wine 下有个小问题,  
因为我喜欢黑色界面,但是wine下光标颜色不会变化,也是黑色, 所以不好找,
貌似程序用的是wine 默认的光标, 与 ubuntu 设置无关,
这个找了很久也不知道该在哪里设置,  求wine 高手解答


Siliang Cao

unread,
Mar 29, 2015, 10:59:05 AM3/29/15
to ustc_lug
我觉得slickedit很好,方便的命令行、丰富的快捷键、甚至内置函数允许定制,很多东西已经是emacs的理念了,公司创始人据称是IBM以前做编辑器的。界面上展示的信息也比较丰富,鼠标导航也很方便。

其实商业工具往往成熟度高,减少折腾和走弯路的时间,人家的劳动成果还是有价值的。在国内想不想付费反正都是看自己。

找reference的BUG我也遇到过,不过用快捷键切reference就无所谓了。其它我真心觉得slickedit分析是很精准的。

不过slickedit配置也比较烦。
有个折腾slickedit比较多的博客,感觉不错,博主是写C的:http://blog.163.com/zhaojie_ding/blog/#m=0&t=1&c=fks_084066087086089067081082086095085081083074083084094074081

在 2015年1月22日 下午4:29,hui zhang <fastf...@gmail.com>写道:

hui zhang

unread,
Mar 29, 2015, 8:40:20 PM3/29/15
to ustc...@googlegroups.com
写c 用vim 绰绰有余
slickedit 用过 , 色彩高亮不行, 查找结果放在下面小窗口,  不像 source insight 那样一幕了然。
不过这个在查找效率上 是最接近 source insight的了


You received this message because you are subscribed to a topic in the Google Groups "USTC_LUG" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ustc_lug/i6CZ_pw6ZHY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ustc_lug+u...@googlegroups.com.

Zhang Cheng

unread,
Mar 29, 2015, 9:41:04 PM3/29/15
to USTC LUG
说说我的感受吧,并不是针对某个编辑器、代码阅读器,而是对代码阅读这件事本身。

除了以学习为目的(例如学习Linux内核源码)以外,在实践中很少需要整体阅读自己没有参与的项目代码。
* 如果是做开发,那么自己写的代码肯定对调用关系很清楚,对定义跳转依赖性不是很强(当然有更好了)。
* 如果是做开发,那么别人写的代码通常不需要大段的阅读,看API文档就好了。除非你是要接手别人开发的部分。
* 如果是做code review,通常都是边写边review的,例如有人提交了一个commit,就review一下这个commit,很少需要大段大段的review的。

另外,阅读代码的目的是什么?除了学习、以及要接手别人的一个项目(或其中一部分)以外,基本上只是为了弄清楚这段代码在干什么,或者是为了做性能优化。如果是为了弄清楚代码在干什么,那么一般看文档就够了,如果是为了做性能优化,那么光看是不够的,需要一些辅助工具,例如绘制call graph,对一些函数进行profile等等,光是看代码是不可能看出名堂的。

如果现在给我一个比较大的项目,要求我接手,那么我的做法会是这样的:自上而下,首先看已有的文档,弄清楚在做什么,然后尝试用工具生成call graph,或者其他的模块图(根据语言而定),搞清楚整体的模块划分和调用关系。然后在开发过程中,要改哪再去看这个地方。而不是一味的钻进去跟着代码走。

所以,我觉得现在很少有工具在定义跳转上做的很好, 可能主要的原因是需求不是很大。这功能当然是锦上添花的。此外,静态代码分析并不容易做好,不同的语言有不同的坑。例如在C语言里面,大型的项目都会有很多#ifdef 或者 #if,而这后面的条件往往是由configure的参数确定的,那么在阅读代码时(静态),代码阅读工具任何确定你要的是哪一段呢?在动态语言中,有些函数甚至是动态生成的,又如何去找到定义呢?

在我个人的实践中(我主要写python),找函数、变量的定义grep基本够了(其实用的是Vim的一个插件叫ag,调用的命令是ag,跟grep有些像),写代码时,vim现有的补全(我用的neocomple)也基本够了。
Cheng,
Best Regards

hui zhang

unread,
Mar 29, 2015, 9:53:28 PM3/29/15
to ustc...@googlegroups.com
很可惜  绝大多数项目 基本文档很少,
看那个 call graph  一来麻烦,  二来还不如直接来看代码快。

vim 用于简单语法语言 如 c 够用了,   但是 c++ 语法过于复杂。
  对 c++语法支持解析最好的, 包括你说的  #ifdef 定义等   应该是 ecipse cdt
但是eclipse的速度 对于大型工程简直是无法使用,而且配置相当麻烦。  脑残的ui设计会郁闷死你。

Zhang Cheng

unread,
Mar 29, 2015, 9:59:09 PM3/29/15
to USTC LUG
2015-03-30 9:53 GMT+08:00 hui zhang <fastf...@gmail.com>:
很可惜  绝大多数项目 基本文档很少,
看那个 call graph  一来麻烦,  二来还不如直接来看代码快。

​建议你多问问自己,为什么要去读代码?你是否有这个需要,要把每一个函数的每一行都看明白?这么做的意义是什么,对你的最终目标有什么帮助?​

如果是很小的项目(总共不到1k行的),那么跳转的意义也不大。如果是超过1k行的项目,而且文件分的很散的,我相信除了学习这一种目的外,几乎是不需要去跟着函数走的。读代码的时候,广度优先比深度优先效率要高很多。而且深度优先很容易让自己陷进去,把太多的精力放在不重要的地方。

 

vim 用于简单语法语言 如 c 够用了,   但是 c++ 语法过于复杂。
  对 c++语法支持解析最好的, 包括你说的  #ifdef 定义等   应该是 ecipse cdt
但是eclipse的速度 对于大型工程简直是无法使用,而且配置相当麻烦。  脑残的ui设计会郁闷死你。

​#ifdef 这种东西是无解的,不是速度慢的问题,如我所说,这里的条件很可能是configure的参数。当然,你可以先configure一下,生成Makefile,然后再让工具根据你的Makefile来做分析,但我相信没有人会这么读代码。​




--
Cheng,
Best Regards

Bojie Li

unread,
Mar 29, 2015, 11:25:40 PM3/29/15
to USTC_LUG

装个 visual studio community 又不花钱,对 C++ 来说绝对是最好的 IDE。反正你只是读代码,不要编译运行,把 Linux 代码拿到 Windows 上来读也没有问题。

C 语言的语法相对 C++ 简单,基于正则表达式的 cscope 之类工具还能胜任,我自己常用 vim + cscope。不过 C++ 的模板、泛型就远非正则表达式能处理的(模板是图灵完全的,而正则表达式的表达能力只相当于下推自动机),要做好 C++ 的代码分析和自动补全,基本上需要一个完整的编译器前端。

不过 visual studio 对大型项目也是很慢的,会占用很多内存,这一点跟 eclipse 一样,我觉得是很难避免的。

把用 GNU autotools 管理的项目导入到 visual studio,就丢失了 configure 信息(因为 VS 不支持)。如果这些 configure 信息你认为重要的话(比如你不想让某些条件编译的代码干扰视线),就用 eclipse 吧(eclipse 支持 autotools)。

此外,对于大型项目来说,看 call graph 或者调试运行,我感觉比静态看代码效率高(除非看代码的目的是为了查不容易稳定重现的 bug)。因为大型项目里往往有很多函数指针、泛型,要到运行时才能确定的。如果全靠静态看代码,有时候能够看名字和赋值语句猜到调用的是哪个,有时候则不容易猜到。我还遇到过从配置文件生成代码的项目(我拿不到原始配置文件),上万个函数指针在一个数组里,而调用的地方是通过数组下标来索引的(table[123](args) 这样),尽管人看起来对应关系很显然,但 IDE 的静态分析工具无能为力。

Guodong Shen

unread,
Mar 30, 2015, 1:49:34 AM3/30/15
to ustc...@googlegroups.com
问一下os x下有什么比较相对应的考试呢?

Armnotstrong

unread,
Mar 30, 2015, 2:00:24 AM3/30/15
to ustc...@googlegroups.com
idea 读java代码很爽, 定义跳转也很方便,当然这可能跟java本身的语言特性相关,不知道用来读C会是什么感觉,楼主可以试试

在 2015年3月30日 上午11:25,Bojie Li <boj...@gmail.com>写道:



--
========================================
best regards & a nice day
Zhao Ximing

Armnotstrong

unread,
Mar 30, 2015, 2:02:48 AM3/30/15
to ustc...@googlegroups.com
因人而异,因人而异

在 2015年1月22日 下午8:09,Zhang Cheng <steph...@gmail.com>写道:



--
329.png

hui zhang

unread,
Mar 30, 2015, 3:09:45 AM3/30/15
to ustc...@googlegroups.com
vs 是我用过最烂的 ide  没有之一
在折腾了 绝大多数ide, 后我现在已经回归最初选择了
source insight 在wine 下虽然有些瑕疵
但是 依然可用。


在 2015年3月30日 上午11:25,Bojie Li <boj...@gmail.com>写道:

Zhang Cheng

unread,
Mar 30, 2015, 3:11:11 AM3/30/15
to USTC LUG

2015-03-30 15:09 GMT+08:00 hui zhang <fastf...@gmail.com>:
vs 是我用过最烂的 ide  没有之一
在折腾了 绝大多数ide, 后我现在已经回归最初选择了
source insight 在wine 下虽然有些瑕疵
但是 依然可用。

​能否举一些具体的例子说说哪些地方“烂”?




--
Cheng,
Best Regards

hui zhang

unread,
Mar 30, 2015, 4:01:24 AM3/30/15
to ustc...@googlegroups.com
慢: 安装慢,  编译慢, 运行慢, 查找慢,
大: 不解释了 source insight 才35m
前两条 我觉得就可以把 vs 毙了
另外还有
颜色增强 靠插件
联想 不知道 还要不要插件。





--

Zhang Cheng

unread,
Mar 30, 2015, 4:26:15 AM3/30/15
to USTC LUG
2015-03-30 16:01 GMT+08:00 hui zhang <fastf...@gmail.com>:
慢: 安装慢,  编译慢, 运行慢, 查找慢,

​你说运行慢、查找慢,那可以理解。你说安装慢、编译慢,那就是在抬杠了。请问你会每天都安装一次么?请问SI可以编译么?在Win下其他编译工具编译同一份代码,能比VS快多少?
至于运行慢、查找慢,我没有在VS下阅读过很大规模的代码,所以我没有发言权,希望有人可以补充。​

 
大: 不解释了 source insight 才35m

​这样比较尺寸也很抬杠了。我的Vim加上各种插件的大小也远大于35m了(目前仅~/.vim/目录就有58M)。
当比较尺寸的时候肯定要比功能。当然了,如果你只是需要一个代码阅读器的话,VS多出的那么大的体积确实是浪费。
不过,今天电脑那么便宜了,你真的很在乎这点大小么?啥,你的老板不给你升级电脑?那建议你赶紧跳槽吧!
 
前两条 我觉得就可以把 vs 毙了
另外还有
颜色增强 靠插件
联想 不知道 还要不要插件。

​顺便,水木社区CProgramming版一月份也有讨论​SI的。我觉得下面有一个评论很不错(这个jackfnx似乎是科大的师兄):

发信人: jackfnx (玄之又玄), 信区: CProgramming
标  题: Re: 单说看代码,分析代码,有啥软件可以超越source insight吗
发信站: 水木社区 (Tue Jan 27 17:55:37 2015), 站内

对容易理解啊
因为正经人没人看代码
【 在 wjhtingerx (ca6140) 的大作中提到: 】
: 这事我就觉的挺奇怪的,这么多年了,SI还是一枝独秀。
: 后期各种IDE层出不穷,这个那个的,结果愣还是没SI好用,我就纳闷了,那些好用的功
能,难道抄都不会抄吗?

如我前面所说,当你读代码的时候,不妨先想一想,自己为什么要读代码?读代码的目的是什么?目前用的阅读的方式是否是达到这个目标的最好的方式?


​再PS,知乎上发现了grapeot的一个关于VS的回答,觉得很不错,借题分享过来:http://www.zhihu.com/question/27768721
这其实是一个很好的例子,前面的邮件里也提到了,有些时候读代码的目的是为了优化,定位问题,这时候单纯的”阅读“是不够的。
到现在为止,除了在学校时实验室老板要大家一起阅读学习Linux内核源码之外,我再也没有遇到过需要step by step去跟进式阅读代码的场景。而且,如果今天再有一个类似于Linux内核的源码要我去阅读学习,我也绝不会用当年的方法去读,那种效率太酸爽了。



--
Cheng,
Best Regards

hui zhang

unread,
Mar 30, 2015, 4:38:11 AM3/30/15
to ustc...@googlegroups.com
大家讨论,  各抒己见, 没有抬杠的意思。

慢 对于大型工程是致命的, vs 和 eclipse 都吃了这个亏。
你对比用用 si   就深有体会了。

另外代码阅读是必要的,  很多开源code 几乎没文档, 
以我现在搞的 cocos2dx 为例,  doxygen 文档能看个大概,   
但很多细节需要深入到代码实现才了解。
不然 光看api 说明 并不清楚里面真的做了什么,
和我们表面的理解有没有歧义。
和别的api 一起掉会不会有问题。 调用次序有没有依赖。
性能存不存在问题

特别在有些api 近似的情况。  当同一个事情 有了2个api 去实现,  哪个才是最好的方法。 只有深入代码才能理解。

另外把类库代码放入工程, 可以方便代码补全,同时方便的看其实现。

--

Zhang Cheng

unread,
Mar 30, 2015, 5:47:21 AM3/30/15
to USTC LUG

2015-03-30 16:38 GMT+08:00 hui zhang <fastf...@gmail.com>:
大家讨论,  各抒己见, 没有抬杠的意思。

慢 对于大型工程是致命的, vs 和 eclipse 都吃了这个亏。
你对比用用 si   就深有体会了。

另外代码阅读是必要的,  很多开源code 几乎没文档, 
以我现在搞的
​​
cocos2dx 为例,  doxygen 文档能看个大概,   
但很多细节需要深入到代码实现才了解。
不然 光看api 说明 并不清楚里面真的做了什么,
和我们表面的理解有没有歧义。
和别的api 一起掉会不会有问题。 调用次序有没有依赖。
性能存不存在问题

特别在有些api 近似的情况。  当同一个事情 有了2个api 去实现,  哪个才是最好的方法。 只有深入代码才能理解。

另外把类库代码放入工程, 可以方便代码补全,同时方便的看其实现。

​我仍然觉得你读代码的方法有问题。

是的,我在今天最早的邮件里就说了,​对于像定义跳转这种功能,SI确实很强大,其他工具确实很少有做的更好的。但是反过来想,这么多年都没有工具在这方面下更大的功夫,说明这种需求并不是很大。当然我不是说没有这种需求,只是这种需求很小,虽然只要看代码基本上也都有这个需求,但是即使是用grep,效率也并没有差到会影响阅读本身的。

我不清楚你在做的项目是什么,但是,如果”要通过阅读其他人提供的库的代码来决定怎么用“是一种常态的话,我觉得你这个项目的开发过程本身就有问题。如果你是在开发阶段,那么通常不需要过多的考虑优化的问题,至少不用考虑在两个没有文档的函数中该选哪一个的问题。如果是在代码的优化阶段,你完全可以用profiler来判断用哪一个函数,而不是去看其他人写的代码。就像上面贴的那个VS的链接,你也要跟到rand()函数的代码里去判断rand()函数的性能么?即使你跟进去了,你确定靠肉眼就能知道性能瓶颈在rand()函数上?优化代码,绝大多数情况下,直接看源码是最次的选择,善用各种性能测试工具才是关键。



--
Cheng,
Best Regards

hui zhang

unread,
Mar 30, 2015, 10:33:31 PM3/30/15
to ustc...@googlegroups.com
@Zhang Cheng
可能我读代码的方法确实有问题

那 什么工具对这种  call graph  和  class relationship  分析得最佳呢

之前用过eclipse  , eclipse 算是做的很好的了。

但是其也不能完全理解 c++语法  有时候几个宏或者 c++1的一些特殊字段  如 override 就会影响其分析准确性
 需要经过一番折腾配置才能用起来。



--

hui zhang

unread,
Mar 30, 2015, 10:37:28 PM3/30/15
to ustc...@googlegroups.com
补充
可能我一直没有找到 好的分析工具吧,  所以一直直接看代码。

根据我之前用过工具eclipse的经验 这些工具遇到 c++11的一些 高级特性 
如 override 字段,   lambda 表达式,  模板元  等等 就傻了。

source insight  对这些的容错 就很好。

zan jyu Wong

unread,
Mar 31, 2015, 4:41:32 AM3/31/15
to ustc...@googlegroups.com
CDT新版本对于新特性支持挺好的。配置的确有点疼,不过配好之后用得挺好的。
call graph,class relationship这些难道不是VS的强项来的吗。

You received this message because you are subscribed to the Google Groups "USTC_LUG" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ustc_lug+u...@googlegroups.com.

Yingchao Huang

unread,
Mar 31, 2015, 4:47:25 AM3/31/15
to ustc_lug


 最近在跟一门操作系统Mooc课程,用的是Understand, 感觉还不错. win/linux/mac平台都有. 不过是试用15天,之后需要注册码(你懂的...).



------------------ Original ------------------
From:  "hui zhang";<fastf...@gmail.com>;
Date:  Tue, Mar 31, 2015 10:37 AM
To:  "ustc_lug"<ustc...@googlegroups.com>;
Subject:  Re: [USTC-LUG] 老生常谈, linux 下有什么能和source insight 媲美的软件
You received this message because you are subscribed to the Google Groups "USTC_LUG" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ustc_lug+u...@googlegroups.com.

Rizza SSZ

unread,
Apr 1, 2015, 3:26:45 AM4/1/15
to ustc...@googlegroups.com
win下肯定首选vs了
linux下我用vim+youcompleteme,感觉还不错,用的clang做后端

hui zhang

unread,
Apr 1, 2015, 5:14:52 AM4/1/15
to ustc...@googlegroups.com
vim 太难用了  ctags   cscope     插件装全了 也就那样。
还要自己折腾半天 ,  

求已经折腾好的  .vimrc  以及.vim  plugin
用过多年前 linux版上一个share   折腾半天还不如装个 si  方便。



hui zhang

unread,
Apr 1, 2015, 5:16:10 AM4/1/15
to ustc...@googlegroups.com
连当年写 vim 打造 ide 的作者 吴土艮   都建议放弃vim了 

赵锦威

unread,
Apr 1, 2015, 6:00:35 AM4/1/15
to ustc...@googlegroups.com
vim 太难用了  ctags   cscope     插件装全了 也就那样。
还要自己折腾半天 ,  

 说了那么久,既然除了SI你其他都不喜欢,那还是老老实实wine吧。或者干脆Windows算了,反正在你看来没有比SI更好的。

Quanyang Liu

unread,
Apr 1, 2015, 7:22:13 AM4/1/15
to ustc...@googlegroups.com
On Wed, Apr 01 2015 at 17:14:50 +0800, hui zhang wrote:
> vim 太难用了  ctags   cscope     插件装全了也就那样。
> 还要自己折腾半天,  
>
> 求已经折腾好的  .vimrc  以及.vim  plugin
> 用过多年前 linux版上一个share   折腾半天还不如装个 si  方便。

啊哈哈哈,来用 Emacs 吧!

Darcy Shen

unread,
Apr 1, 2015, 9:17:00 AM4/1/15
to ustc...@googlegroups.com
On Thursday 22 January 2015 01:09:34 hui zhang wrote:
> 表面看比 source insight 牛逼
> 其实不实用 而且居然没有色彩高亮

>
> 另外什么 qtcreator anjuta 什么的 和 geany 一样只能找 usage not reference
> 其差别就在
> typedef struct { int x} A;
> typedef struct { int x} B;
> usage 区分不了 A中的x 还是B中的x 后者reference可以
>

KDevelop 是可以区分这两个 x 的,不妨一试。

Darcy Shen

unread,
Apr 1, 2015, 9:17:00 AM4/1/15
to ustc...@googlegroups.com
On Friday 23 January 2015 09:58:22 hui zhang wrote:
> 对比过 geany qtcreator kdevelop
> 你看看 ubuntu 软件排位, geany 后起之秀, 使用上明显好于后面2个

Ubuntu 软件排位是个啥?那些地方明显好于后面两个了?

Siliang Cao

unread,
Apr 1, 2015, 12:57:16 PM4/1/15
to ustc_lug
色彩高亮我这边很好,开的语义级别的高亮(symbol highlight),全局变量、局部变量、成员、函数、宏都能显示清楚;
SI的查找结果我不知道方在什么位置,不过slickedit的查找窗口是可以自己放置位置的:设置一个隐藏窗口放在右边,然后查找的时候从边上跳出也是可以的。

Rizza SSZ

unread,
Apr 1, 2015, 9:24:16 PM4/1/15
to ustc...@googlegroups.com
github上搜vim第一个就是:https://github.com/ma6174/vim,这个还是功能比较全的。

suemi

unread,
Apr 1, 2015, 9:57:30 PM4/1/15
to ustc...@googlegroups.com
果断用JetBrains家的一套东西啊。。。java就IDEA,python就Pycharm,web就webstorm,还有快要出的clion

在 2015年1月22日星期四 UTC+8下午4:29:33,hui zhang写道:

Siliang Cao

unread,
Apr 1, 2015, 10:18:08 PM4/1/15
to ustc_lug
vim插件包我也知道一个:http://vim.spf13.com/

配置文件的模块化做得还可以,方便自己再次定制

You received this message because you are subscribed to the Google Groups "USTC_LUG" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ustc_lug+u...@googlegroups.com.

Armnotstrong

unread,
Apr 8, 2015, 12:06:52 AM4/8/15
to ustc...@googlegroups.com
挖个坟, emacs真的好用吗? 另外,用了之后真的对丁丁的二次发育有好处吗?

--
-- 来自USTC LUG
请使用gmail订阅,不要灌水。
更多信息more info:http://groups.google.com/group/ustc_lug?hl=en?hl=en
---
You received this message because you are subscribed to the Google Groups "USTC_LUG" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ustc_lug+u...@googlegroups.com.

To post to this group, send email to ustc...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Sevenx Wasly

unread,
Jul 1, 2016, 3:00:50 AM7/1/16
to USTC_LUG
我目前是使用VS2015 + Linux虚拟机,SI确实很好, 不过Wine效果不好


在 2015年1月22日星期四 UTC+8下午4:29:33,hui zhang写道:
一直用 source insight 非常顺手。色彩高亮和 代码分析做的很好。

hui zhang

unread,
Jul 1, 2016, 3:07:21 AM7/1/16
to ustc...@googlegroups.com
结个贴
clion    最好的 c++  ide  没有之一。
前提要懂cmake

--
来自USTC LUG
请使用gmail订阅,不要灌水。
更多信息more info:http://groups.google.com/group/ustc_lug?hl=en?hl=en
---
You received this message because you are subscribed to a topic in the Google Groups "USTC_LUG" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ustc_lug/i6CZ_pw6ZHY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ustc_lug+u...@googlegroups.com.

Xiangru Lian

unread,
Aug 16, 2016, 4:39:04 PM8/16/16
to USTC_LUG
我觉得跳转的需求还是很大的,只是实现起来有难度。
Reply all
Reply to author
Forward
0 new messages