App下載

工具用得好,Python源碼閱讀沒煩惱

猿友 2020-09-29 11:49:33 瀏覽數(shù) (4612)
反饋

文章來源于公眾號:Python技術(shù) 作者:派森醬

每當(dāng)我們接手一個(gè)新項(xiàng)目時(shí),面對龐雜的模塊、繁復(fù)的代碼,想必心情是非常絕望的,“這都特么啥呀?”

如果你也有這樣的煩惱,那你就應(yīng)該看這篇文章。

我們閱讀源碼的一大煩惱在于,項(xiàng)目代碼中存在著各種各樣的調(diào)用,而我們的大腦卻沒辦法像計(jì)算機(jī)一樣完好地維護(hù)一個(gè)動(dòng)態(tài)的調(diào)用鏈;時(shí)常發(fā)生的情況就是一頭扎進(jìn)了源碼中,然后——

“我是誰?我在哪兒?我為什么要在這兒?”

顯然,作為一個(gè)地道的程序員,這個(gè)時(shí)候應(yīng)該想到借助工具了。

再根據(jù)軟件界第一定律“99%的工作都是別人做過的”,于是我們大可以拿來主義一把,琢磨琢磨是不是已經(jīng)有人做了這樣的工具。

說到這里可能很多同學(xué)已經(jīng)想到了一個(gè)被局部稱為“世界第一編輯器”的軟件——Source Insight。(然后看了看正版價(jià)格就灰溜溜滾回了Google)

然后還有強(qiáng)大的Understand,付費(fèi)環(huán)節(jié)還比較繁瑣,暫時(shí)pass。

直到我們在 V2EX 看見有同學(xué)推薦了一款名為Sourcetrail的開源軟件。

下載安裝

打開軟件官方網(wǎng)站,可以看到一個(gè)很簡潔的頁面,直截了當(dāng)?shù)馗嬖V你它是哪條道上的四年級老大哥:Sourcetrail就是為你閱讀陌生源碼賦能的。同時(shí)還免費(fèi)、開源、跨平臺……h(huán)áo嘛,今年幾大紅火要素都占齊活兒了,不撈一把都說不過去。

下載安裝

接下來就是download,在GitHub的release頁面選擇自己系統(tǒng)對應(yīng)的發(fā)布版本下載安裝:

下載安裝

具體的安裝步驟與其他應(yīng)用相比大同小異,就不再贅述了,否則這篇文章也太水了點(diǎn)

軟件介紹

安裝好后,運(yùn)行程序,會出現(xiàn)這樣的界面:

運(yùn)行程序界面

我們選擇“New Project”,在隨后的界面中填寫好項(xiàng)目名稱和項(xiàng)目路徑:

軟件介紹

填好后點(diǎn)擊下方的Add Source Group按鈕,用以添加代碼。

——在Sourcetrail中允許我們在同一個(gè)項(xiàng)目中添加多個(gè)來源的代碼,甚至允許各個(gè)代碼分組的語言互不相同,這些代碼分組即為各個(gè)Source Group。

由于我們只需要查看一個(gè)代碼庫的內(nèi)容,因此我們也只需要添加一個(gè)Source Group即可,如下圖依次點(diǎn)擊:

軟件介紹

在繼續(xù)輸入新的信息前,打開你的命令行工具(Windows系統(tǒng):Win+R,輸入cmd然后回車;Linux下不贅述),輸入where python(Windows)或which python3(Linux),即可看到當(dāng)前環(huán)境的Python安裝路徑,記下這個(gè)路徑,我們需要用它來解析 Python 代碼。

然后在新的界面中,需要填寫 Python 環(huán)境的字段填入剛剛我們查到的Python所在目錄(即去除最后一個(gè)斜杠及之后的內(nèi)容)。

其他的需要注意的就是“要建立索引的文件/目錄”,這個(gè)字段就是添加我們真正要閱讀的 Python 源碼路徑。字段左下角有一個(gè)“+”號,點(diǎn)擊即可增加一個(gè)源碼路徑:

軟件介紹

原本是想把 Python 之父龜叔多年前寫的爬蟲程序作為示例的,奈何網(wǎng)絡(luò)不給力,遲遲拉取不下源碼,于是另外找了一份開源項(xiàng)目“北京實(shí)時(shí)公交”替換之。

點(diǎn)擊右下角“Create”,再點(diǎn)擊“Start”:

軟件介紹

解析就開始了:

軟件介紹

再點(diǎn)擊“OK”:

軟件介紹

得到下圖的解析結(jié)果:

解析結(jié)果

可以看到,Sourcetrail將解析結(jié)果按“文件”、“模塊”等大致分了類。

我們點(diǎn)擊最關(guān)心的“函數(shù)(Function)”來體驗(yàn)一下:

體驗(yàn)成果

在左邊,Sourcetrail為我們生成了形象的調(diào)用圖;在右邊,Sourcetrail列出了當(dāng)前焦點(diǎn)函數(shù)的代碼及其相應(yīng)調(diào)用。

無論在左邊操作還是在右邊操作,都會帶來界面的同步變化。

從此我們再也不必苦哈哈地在A4紙上寫下繁瑣的調(diào)用關(guān)系了哈哈哈哈,翻身農(nóng)奴把歌唱

咸魚翻身

總結(jié)

本文介紹了一個(gè)可以把源碼調(diào)用關(guān)系可視化的工具,可以極大便利我們閱讀他人代碼的工作。實(shí)際上這類工具還有很多,比如Source Insight和Understand。

只要是能夠提升我們學(xué)習(xí)/開發(fā)效率的,我們都應(yīng)該樂于嘗試。后續(xù)我們還會推薦一些這類實(shí)用的工具,希望可以幫助大家升職加薪[手動(dòng)滑稽]。

以上就是W3Cschool編程獅關(guān)于工具用得好,源碼閱讀沒煩惱的相關(guān)介紹了,希望對大家有所幫助。

0 人點(diǎn)贊