成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五款經(jīng)典代碼閱讀器的使用方案對(duì)比

開發(fā) 新聞
代碼閱讀是技術(shù)人的必備技能之一,高效地梳理代碼能夠極大程度上提高開發(fā)人員的工作效率,進(jìn)一步為業(yè)務(wù)創(chuàng)造新價(jià)值。

一、背景

談起代碼閱讀,大部分技術(shù)人員都不會(huì)陌生。無論是剛開始學(xué)習(xí)代碼的小白還是久經(jīng)沙場的代碼大神,不管是學(xué)習(xí)優(yōu)秀的開源項(xiàng)目還是做老項(xiàng)目的重構(gòu),代碼閱讀都是技術(shù)人的必備技能之一。在目前業(yè)務(wù)迭代迅速的環(huán)境下,高效地梳理代碼能夠極大程度上提高開發(fā)人員的工作效率,進(jìn)一步為業(yè)務(wù)創(chuàng)造新價(jià)值。

筆者搜羅了幾種業(yè)內(nèi)常用的代碼閱讀方案,并從效率,易用,成本以及是否可調(diào)試四個(gè)角度進(jìn)行對(duì)比,讀者可以根據(jù)自己的喜好選擇合適的代碼閱讀方案,也可以在評(píng)論區(qū)留下代碼梳理的經(jīng)驗(yàn),歡迎討論。

評(píng)分僅代表個(gè)人觀點(diǎn)

IDE 閱讀

效率:??

易用:??????

成本:????(部分IDE需要收費(fèi)使用)

是否可調(diào)試:是

IDE(Integrated Development Environment)應(yīng)該是每個(gè)技術(shù)人員每天工作中接觸時(shí)間最長的一類軟件,盡管不同語言有不同的IDE,但殊途同歸,IDE的核心功能是用來做代碼編輯,很多IDE也在代碼編輯層面做了性能上的優(yōu)化。

盡管各類IDE都通過各種方式實(shí)現(xiàn)了代碼閱讀以及代碼梳理的功能,但由于其作為編輯器的本質(zhì)屬性,從代碼閱讀的角度來講面對(duì)很多大型項(xiàng)目易用性和效率比較低,難以快速閱讀代碼。

以Java為例,目前業(yè)界比較常見的IDE包括IntelliJ IDEA和Eclipse等,筆者比較熟悉IDEA,即以IDEA舉例。

就IDEA而言,除了通過鼠標(biāo)點(diǎn)擊追蹤(Tips: mac下默認(rèn)快捷鍵Command+B,windows下默認(rèn)快捷鍵Ctrl+B)的方式閱讀代碼外,還有很多輔助閱讀代碼的插件,包括RainbowBrackets(多彩括號(hào),多重嵌套代碼分析),Statistic(代碼行數(shù)統(tǒng)計(jì)),SequenceDiagram(時(shí)序圖繪制)等。

用SequenceDiagram自動(dòng)化分析fastjson(1.2.84)中核心鏈路JSON.parseObject方法,可以看到大致的鏈路情況,但由于lambda表達(dá)式等比較難以解析,鏈路顯示不夠直觀。

圖片

盡管IDE能夠覆蓋日常工作中的大部分場景,但面對(duì)大型項(xiàng)目的分析(如Android源碼或者linux源碼)就捉襟見肘,其效率及易用性較低的原因主要有以下幾點(diǎn):

絕大多數(shù)IDE對(duì)代碼的分析速度較慢。由于大多數(shù)IDE在代碼編輯層面做了優(yōu)化,加載代碼的過程需要消耗更多的資源(代碼之間的關(guān)系識(shí)別等)。同時(shí),在加載大型代碼時(shí),會(huì)造成嚴(yán)重的卡頓,影響用戶體驗(yàn);

針對(duì)代碼閱讀,很多IDE要求對(duì)代碼進(jìn)行編譯,否則就會(huì)產(chǎn)生大量“飄紅”,無法進(jìn)行代碼閱讀。一個(gè)大型項(xiàng)目往往需要非常久的編譯時(shí)間,并且環(huán)境配置的難度極大,降低了代碼閱讀的效率;

常用的IDE往往針對(duì)某種語言進(jìn)行了特化(當(dāng)然也有類似CLion的跨平臺(tái)IDE),對(duì)其他語言的支持程度不高,如果項(xiàng)目中存在跨平臺(tái)的問題往往難以通過單一IDE進(jìn)行代碼閱讀。

微軟的VSCode面世后,很多開源作者陸續(xù)推出了代碼閱讀的魔法級(jí)插件(CodeRunner,PartialDiff,TODOTree等等)以提升代碼閱讀體驗(yàn),相信在各路大神的努力下,IDE閱讀法終將成為最好的代碼梳理方法。

Source Insight

效率:??????????

易用:????

成本:??????????

是否可調(diào)試:支持第三方命令

官方網(wǎng)站(地址:https://www.sourceinsight.com/)

世界上只有兩種人,用過SI的人和沒用過SI的人,SI的出現(xiàn)讓很多開發(fā)人員第一次感受到了代碼閱讀的快樂(相信很多Android開發(fā)者都用這個(gè)神器閱讀過Android源碼)。如果說IDE是專注于代碼編寫的平臺(tái),那么SI就是專注于代碼分析的神器。SI為開發(fā)人員提供了以下核心功能:

  1. 快速的代碼分析:SI能夠通過內(nèi)置引擎快速分析代碼,并形成繼承樹以及函數(shù)調(diào)用樹,占用資源量極小。
  2. 準(zhǔn)確的代碼查找:SI支持快速查看函數(shù)和變量使用位置的功能,幾乎立即自動(dòng)顯示對(duì)函數(shù)、變量、類等的引用。
  3. 多種語言支持:Source Insight 內(nèi)置了針對(duì) C/C++、C#、Java、Objective-C 等語言的動(dòng)態(tài)分析工具。

圖片

SI幾乎能夠完成代碼鏈路分析中的全部工作,但它也有著不容忽視的缺點(diǎn):

  1. 成本較高。SI是收費(fèi)軟件,需要繳納高昂的費(fèi)用才能使用其全部功能。
  2. SI僅支持Windows平臺(tái),Mac平臺(tái)想要使用必須安裝虛擬機(jī)(推薦下CrossOver)。
  3. 界面樣式較老且沒有官方中文插件,這導(dǎo)致了其易用性較低。

Understand

效率:????????

易用:??????????

成本:??????????

是否可調(diào)試:支持第三方命令

官網(wǎng)網(wǎng)站(https://www.scitools.com/)

Understand是一款小眾的代碼閱讀工具,國內(nèi)的使用人群不多(主要原因是太貴了,并且沒有Souce Insight那么多魔法可用),但有很多外國公司利用該軟件進(jìn)行日常的代碼分析以及缺陷查找工作。Understand的核心功能和Source Insight比較類似,包括:

  1. 強(qiáng)大的圖形繪制能力,包括繼承關(guān)系圖,函數(shù)調(diào)用圖,包含關(guān)系圖等等。
  2. 豐富的標(biāo)識(shí)符信息,具有強(qiáng)大的代碼信息數(shù)據(jù)庫,能夠存儲(chǔ)代碼相關(guān)的各類符號(hào)信息。
  3. 方便的搜索功能,能夠快速查找及定位指定的標(biāo)識(shí)符。

圖片

利用Understand通過代碼直接生成流程圖,相比較而言個(gè)人更喜歡Understand生成的各類圖形,樣式而言比Source Insight更為優(yōu)雅

圖片

相比Source Insight,Understand支持在Mac平臺(tái)及Linux平臺(tái)上運(yùn)行,但從用戶的反饋看在進(jìn)行代碼分析時(shí)存在著一定的資源消耗過多的現(xiàn)象。與Source Insight一樣,Understand也是需要付費(fèi)的,而且沒有免費(fèi)試用版本,同時(shí)也不支持中文。

OpenGrok

效率:??????

易用:??

成本:無(開源)

是否可調(diào)試:否

官網(wǎng)網(wǎng)站(https://oracle.github.io/opengrok/?)

OpenGrok是一款用 Java 編寫的高效源代碼搜索和交叉引用查詢引擎,能夠幫助開發(fā)人員深入了解代碼,主要具有以下幾個(gè)核心功能:

  1. 強(qiáng)大的依賴分析能力,借助內(nèi)置的Analysis引擎,OpenGrok支持多種版本管理工具,能夠根據(jù)代碼的提交歷史進(jìn)行代碼分析,并為源碼的變量/對(duì)象、結(jié)構(gòu)體/類、函數(shù)/接口、宏等生成可供快速搜索的索引文件。
  2. 快速高效的代碼搜索功能,支持不同類別的搜索并直達(dá)代碼。

OpenGrok對(duì)代碼管理工具做了特化性的支持,能夠便捷快速地看到對(duì)應(yīng)代碼行的提交信息以及提交歷史。

圖片

相對(duì)而言,OpenGrok在同類產(chǎn)品中具備一定的優(yōu)勢,其搜索速度以及文件加載速度較快,但其使用方法比較復(fù)雜,學(xué)習(xí)成本相對(duì)較高,并且也沒有強(qiáng)大的可視化能力。由于OpenGrok核心依賴于Tomcat或其他web容器服務(wù),需要用戶根據(jù)系統(tǒng)環(huán)境自行配置(官方配置文檔,地址:https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok),整體而言易用性較低,應(yīng)根據(jù)實(shí)際需要謹(jǐn)慎使用。

Sourcetrail

效率:??????

易用:????????

成本:無(開源)

是否可調(diào)試:支持IDE調(diào)試

官網(wǎng)網(wǎng)站(https://github.com/CoatiSoftware/Sourcetrail)

和OpenGrok一樣,Sourcetrail也是一款開源的代碼分析工具,并支持跨平臺(tái)代碼分析。Soucetrail提供了以下幾個(gè)功能:

  1. 以腦圖的形式展示了函數(shù)調(diào)用鏈路。在分析代碼的同時(shí),Sourcetrail提供了優(yōu)雅的圖形化界面以展示工程項(xiàng)目中的各類標(biāo)識(shí)符信息以及鏈路圖,能夠讓人更為直觀地了解整個(gè)工程的鏈路信息。
  2. 優(yōu)秀的跨平臺(tái)支持,提供了Linux,Mac以及Windows等多個(gè)平臺(tái)的安裝包。
  3. 提供了擴(kuò)展接口,可用于自定義語言分析。

圖片

Sourcetrail是一款非常強(qiáng)大的代碼分析工具,使用起來非常簡單靈活,而且還可以關(guān)聯(lián)IDE。但是其對(duì)軟件拓?fù)涞姆治龃嬖谝欢ň窒扌裕⑶易髡咭呀?jīng)宣布不再更新,需要根據(jù)使用場景謹(jǐn)慎選用。

實(shí)戰(zhàn)測試

在該模塊,我們將針對(duì)一款開源軟件的核心鏈路分別采用上述幾種代碼閱讀方案進(jìn)行分析,以對(duì)比各類工具在實(shí)際操作中的效果。由于Source Insight和Understand均需要收費(fèi),本次僅采用IDE閱讀法,OpenGrok以及Sourcetrail進(jìn)行核心鏈路的簡要分析。

  1. 目標(biāo)代碼:fastjson(代碼地址:https://github.com/alibaba/fastjson)
  2. 代碼版本:1.2.76
  3. 代碼語言:Java

IDE閱讀

由于閱讀的目標(biāo)是java代碼,擬采用IntelliJ IDEA進(jìn)行代碼閱讀。

? 核心代碼定位

我們?cè)陂喿x代碼時(shí)常常通過一個(gè)核心方法入手,接著逐層進(jìn)行代碼分析。針對(duì)本次代碼閱讀,以JSON.parseObject方法作為入口進(jìn)行代碼分析。JSON.parseObject方法主要功能在于將一個(gè)JSON的字符串解析成JSONObject的形式,JSONObject相當(dāng)于fastjson中的基本運(yùn)行單元,代表了一個(gè)具體的JSON塊。

圖片

可以看到,parseObject存在很多重載方法,為了找到核心方法,需要逐級(jí)查找,過程比較繁瑣。

圖片

? 核心代碼鏈路分析

在鏈路分析層面,首先可以分析核心類對(duì)應(yīng)的繼承關(guān)系,以初步分析各個(gè)類之間的關(guān)聯(lián)關(guān)系。

圖片

接著可以借助各類插件實(shí)現(xiàn)初步的代碼分析,繪制時(shí)序圖,UML圖等等,但想要深入了解代碼結(jié)構(gòu)還需要深入源碼進(jìn)行閱讀,可視化支持程度不高。

OpenGrok閱讀

OpenGrok的安裝過程比較繁瑣,有web開發(fā)經(jīng)驗(yàn)的同學(xué)推薦根據(jù)官方文檔的安裝方式進(jìn)行安裝及配置。

?  核心代碼定位

OpenGrok有著強(qiáng)大的代碼搜索功能,支持正則以及各類多條件表達(dá)式,并且由于預(yù)先進(jìn)行了索引分析,代碼搜索的速度比常規(guī)IDE迅速了很多,能夠快速定位核心代碼。

圖片

圖片

?  核心代碼鏈路分析

OpenGrok的一大缺點(diǎn)在于其不支持代碼的可視化分析,在進(jìn)行代碼閱讀時(shí)需要開發(fā)人員手動(dòng)梳理鏈路。但其對(duì)代碼中的各類標(biāo)識(shí)符(symbol)均增加了支持快速查找的鏈接,相比ide而言,在閱讀依賴關(guān)系比較復(fù)雜的代碼過程中能夠起到比較顯著的提效作用。

Sourcetrail閱讀

Sourcetrail官方提供了支持各類平臺(tái)的二進(jìn)制安裝包,支持一鍵安裝,非常快捷。

?  核心代碼定位

Sourcetrail同樣集成了高效的代碼搜索功能,用戶可以在搜索欄全局搜索代碼。相比OpenGrok,Sourcetrail的界面設(shè)計(jì)更為清晰,但建立索引的速度相對(duì)較慢,且不能查看代碼的歷史提交信息。

圖片

圖片

該工具的一大優(yōu)點(diǎn)在于利用腦圖的形式展示了各類方法之間的調(diào)用關(guān)系,鏈路梳理比較清晰,能夠讓用戶快速找到核心代碼所在位置。

?  核心代碼鏈路分析

在代碼鏈路分析上,Sourcetrail沒有進(jìn)行代碼的拓?fù)潢P(guān)系分析,但能夠通過點(diǎn)擊腦圖的形式結(jié)合代碼閱讀對(duì)代碼鏈路進(jìn)行梳理。通過IDE插件的形式可以將Sourcetrail與IDE關(guān)聯(lián),有效提高我們代碼閱讀的效率。

圖片

總結(jié)

技術(shù)學(xué)習(xí)是一個(gè)不斷積累和沉淀的過程,優(yōu)秀的代碼閱讀工具能夠提高我們學(xué)習(xí)和積累的效率,相信每個(gè)技術(shù)人內(nèi)心都有一套自己學(xué)習(xí)技術(shù)的方法,希望筆者的文章能夠幫助你在今后的學(xué)習(xí)與工作中提高效率,勇攀高峰。

團(tuán)隊(duì)介紹

我們是大淘寶平臺(tái)會(huì)員技術(shù)團(tuán)隊(duì),負(fù)責(zé)整個(gè)淘寶天貓的平臺(tái)會(huì)員成長和運(yùn)營,肩負(fù)著大盤GMV增長的重要職責(zé)。旗下會(huì)員體系豐富多樣,例如,88VIP會(huì)員體系串聯(lián)整個(gè)阿里經(jīng)濟(jì)體并吸引了眾多外部生態(tài)伙伴的加盟,真正幫用戶實(shí)現(xiàn)了“吃、玩、聽、看、買、游”一條龍服務(wù);淘寶省錢卡:通過全網(wǎng)通用紅包利益刺激,構(gòu)建了更加靈活的權(quán)益型會(huì)員體系,為全網(wǎng)消費(fèi)者提供了最為直接有效的省錢路徑。

同時(shí),我們圍繞會(huì)員成長的生命周期構(gòu)建了完整的會(huì)員成長體系,在支撐整個(gè)淘寶天貓平臺(tái)會(huì)員業(yè)務(wù)快速發(fā)展的同時(shí),還橫向賦能了天貓會(huì)員店、行業(yè)卡、商家付費(fèi)會(huì)員等新會(huì)員形態(tài),構(gòu)建了可賦能全行業(yè)的會(huì)員基礎(chǔ)體系。

責(zé)任編輯:張燕妮 來源: 大淘寶技術(shù)
相關(guān)推薦

2023-03-23 13:47:00

LinuxEPUB閱讀器

2020-11-16 16:11:48

開源電子書閱讀器

2021-04-04 08:16:09

NewsFlash閱讀器開源

2017-10-16 15:49:31

Linux閱讀器電子書

2022-06-02 14:01:54

屏幕閱讀器NVDAWindows

2013-11-28 15:02:34

Ubuntu技巧Geary

2013-09-02 16:52:31

Windows 8.1

2021-07-29 15:57:11

任意代碼漏洞攻擊

2025-04-01 07:38:35

2011-09-15 18:43:00

UbuntuchmPDF

2010-01-22 14:20:17

Visual C++

2021-05-10 09:52:37

漏洞惡意代碼網(wǎng)絡(luò)攻擊

2014-12-03 10:46:15

iReader

2017-04-11 13:31:40

閱讀器開源RSS

2015-12-03 10:04:36

Ncurses工具LNAV

2009-05-05 09:00:48

RSS瀏覽器

2017-11-21 22:13:52

微軟PDFEdge

2020-03-13 19:26:38

Linux電子書閱讀器桌面應(yīng)用

2012-12-21 15:29:07

Android

2011-09-09 10:19:13

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久久久成人精品 | 伊人欧美视频 | 综合久久综合久久 | 国产 日韩 欧美 在线 | 一区影院 | 在线观看成人 | 精品一二三 | 日日夜夜精品视频 | 东方伊人免费在线观看 | 免费一级毛片 | 在线视频日韩 | 狠狠色狠狠色综合系列 | 日本免费小视频 | 久久人人网| 亚洲狠狠 | 国产成人精品免费 | cao在线 | 亚洲精品一区二区三区中文字幕 | 蜜臀久久99精品久久久久野外 | 国产免费让你躁在线视频 | 午夜影院在线观看免费 | 久久久资源 | 免费视频一区二区三区在线观看 | 亚洲码欧美码一区二区三区 | 一级毛片视频在线 | 91在线区 | 欧美日韩电影一区 | 伊人春色成人 | 亚洲 自拍 另类 欧美 丝袜 | 欧美日韩国产三级 | 精品久久国产 | 国产日产久久高清欧美一区 | 国产精品1区 | 91pao对白在线播放 | 亚洲精品电影 | 久久av一区二区三区 | av一级久久 | 亚洲一区免费在线 | 91久久综合亚洲鲁鲁五月天 | 亚洲精品九九 | 91麻豆产精品久久久久久 |