你用過的最好的代碼閱讀或編輯工具是什麼?

除了source insight


Scitools出品的Understand 2.0。用了很多年了,比Source Insight強大很多。以前的名字叫Understand for C/C++,Understand for Java,Understand for Ada,最近這幾年合併成了一個產品。

最值得一提的是各種關係圖的繪製,以及在這些圖上的交互操作:Declaration Graphs / Hierarchy Graphs / Control Flow Graphs / Dependency Graphs / UML Class Diagram。事實上圖形化的分析功能,是我閱讀代碼中用到最多的。如果只需要代碼高亮+全局符號跳轉這樣的功能,VS2010+VisualAssist,Xcode3/4,eclipse這些IDE本身已經做的足夠好了,不需要額外的代碼閱讀工具。

不客氣的說,Source Insight的圖形分析功能在Understand面前就是個玩具。

另外一點是對多語言的支持,主流的C/C++,Java,C#就不說了,另外還支持Ada/FORTRAN/Pascal/Cobol/PHP/HTML/CSS等等一堆語言。當然,C++/Java/C#之外的語言用的比較少,不太清楚這些對語言的支持程度是否能夠達到和主流語言的相同水平。

除此之外這個軟體是跨平台的,Windows/Linux/MacOS/Solaris都支持。現在不少團隊都需要同時維護多個Mobile平台,多個Desktop平台,或者Client端/Server端的程序。運行在多個平台上的代碼閱讀/分析工具對這樣的團隊應該會很有吸引力。

當然Source Insight也有非常強的地方,那就是能夠支持異常複雜的高亮方案,除了顏色,還能指定不同的字體/字型大小/粗體/斜體。但是在我看來,這個feature似乎用處不大,因為最有益於工作效率的高亮方案,應該和你在IDE中一致的代碼高亮方案。這樣在IDE和代碼閱讀器之間切換時,才不需要動腦筋去切換方案。大腦對於常量/變數/類型/方法的識別,一切都應當在下意識中完成。

比較不幸的是,據我觀察,這款軟體在國內的認知率似乎並不是很高。一方面的原因可能是因為GUI的控制項為了跨平台,無法做的很漂亮,另一方面的原因,可能是因為這個名字的緣故。相對於Source Insight而言,Understand這個搜索關鍵字實在是太容易被埋沒了。

希望能有更多的開發者喜歡上這款軟體。


IntelliJ

它被評為最優秀的IDE,在國外深受好評。能快速的在類中定位方法。而且集成的UML能能對某個類生產UML圖,瀏覽一個類的全貌。

它的多窗口功能,能在不同的窗口中進行編製。在多顯示器下更顯突出。

支持版本瀏覽,能比較一個類的歷史修改記錄。


除了source insight,就沒有感覺好的了。Eclipse和Netbeans還湊合,vim+cscope也不錯,工程大到一定程度之後,反倒覺得find+grep更得心應手


從前讀/寫C程序時是ctags/cscope+vim。

後來很長一段時間接觸Java/Python代碼。都是直接在Finder里找到文件,用MacVim打開文件閱讀代碼。偶爾也用用Ack。

新加入團隊這段時間純Python,用Vim+NerdTree+Ack閱讀編輯代碼。

----------------------------------------------

由於閱讀別人項目的代碼通常帶有目的性,而自己又會有幾下定位到文件的狗屎運,因此連cscope之類的東西都懶得配置了。寫代碼方面也沒配任何的OmniComplete,甚至通常映射C-n的&都取消掉了。這樣的好處除了會強制減少介面命名的歧義外,就比較練記憶力。:)


如果只是文本編輯器,我比較喜歡Sublime Text 2 ,如果是IDE的話,我一般用eclipse,特別是在web開發的話會配合aptana 插件。


看來這裡微軟的用戶比較少啊, 我用Visual Studio,傳說中個頭最大的開發工具.


沒人用TextMate么...Windows下的sublime text也很好用...


C/C++的代碼閱讀,可以試試 Code Browser by Woboq for C/C++ source code


linux nano

windows sublime text


首先贊一下source insight.

然後:UltraEdit很不好嗎?找關聯關係,一般用serach in project.很好用。

不過後來接觸了source insight,就感覺這個用來進行代碼瀏覽太好用了。

UE裡面11年定義了一組宏用來進行文件頭部注釋和代碼塊注釋。

開始試用vim了,但是我找不到vim如何處理工程。所以,現在寫代碼是vim+ue.


VS code, 這個挺好用的。


understand和doxygen。understand擅長基於語法結構瀏覽代碼,doxygen除了基於語法結構外還支持基於注釋提供的功能結構瀏覽代碼。如果coder能在注釋中利用doxygen提供的group指令描述代碼的層次,則doxygen可以根據這些指令在文檔中生成相應的鏈接。另外,doxygen支持的語言相當多,這點比understand強。understand強在生成各種關係圖,查詢定位準確,支持代碼質量分析和統計等doxygen沒有或較弱的功能。

除了understand和doxygen以外,ea和visio也能瀏覽代碼,他們強在能自動生成uml圖,對於快速瀏覽類體系結構有幫助。但是在語法分析方面較弱,如果程序中宏定義較多的話,往往會報錯,比如qt的代碼經常能把ea玩死。


在linux上用vim,在windows上用notepad++。簡單就是美。


sourceinsight和understand各有優劣,understand的優勢在於關係圖的繪製很強大,但是如果是作為編輯器,比如新增函數是無法實時分析的,也就是說沒法解析到,需要手動分析才行,不是很好;sourceinsight的話,簡單粗暴,作為開發ide還是挺實用的,但是在關係圖的表示上做的有所欠缺


IntelliJ IDEA,剛入門有點兒難,但習慣之後你會覺得非常爽..絕對是最聰明的IDE...


Emacs, 不服來戰:)


分頁阅读: 1 2