“Source Insight(以下簡(jiǎn)稱(chēng)SI)是世界上最好的編輯器”,說(shuō)這句話(huà)不知道會(huì)不會(huì)出門(mén)被打呢?-_- 中國(guó)古話(huà)說(shuō)得好,“文無(wú)第一,武無(wú)第二”,所以不敢說(shuō)SI是最好的,但是說(shuō)是“最好的之一”絕對(duì)是妥妥的。它以豐富的語(yǔ)言支持、便捷的功能、快速的源碼導(dǎo)航、實(shí)時(shí)的上下文顯示、獨(dú)立的符號(hào)數(shù)據(jù)庫(kù)等眾多優(yōu)點(diǎn),在全世界范圍內(nèi)廣受程序員們的歡迎。本文將結(jié)合筆者的實(shí)際操作和學(xué)習(xí),基于SI3.5做一些使用記錄。另外,筆者對(duì)SI的使用,主要是用于閱讀源碼,本文介紹的功能也是基于閱讀方面的。
本文的主要內(nèi)容如下:
一、SI簡(jiǎn)介
SI是一款面向項(xiàng)目開(kāi)發(fā)的程序編輯器和代碼瀏覽器,它提供了一個(gè)視圖將分散在各個(gè)地方的代碼匯合在一起形成一個(gè)虛擬的整體,供開(kāi)發(fā)者方便地閱讀和編輯,如下圖所示。
該段英文摘自SI官方幫助文檔,從這里可以看出SI的設(shè)計(jì)宗旨就是方便開(kāi)發(fā)者查看和修改項(xiàng)目源碼。
二、SI的優(yōu)勢(shì)
SI是如今最好用的語(yǔ)言編輯器之一,具有很多其他編輯器無(wú)法比擬的優(yōu)點(diǎn),比如下面幾點(diǎn)。
1、支持語(yǔ)言種類(lèi)多。
SI幾乎支持所有的語(yǔ)言,如C、C++、C#、JAVA、ASM、PAS、ASP、HTML等,而其它編輯器往往只支持其中某類(lèi)或某幾種語(yǔ)言,豐富性遠(yuǎn)不及SI。
2、擁有自己的數(shù)據(jù)庫(kù)。
SI自動(dòng)傳創(chuàng)建并維護(hù)他自己高性能的符號(hào)數(shù)據(jù)庫(kù),包括包名、函數(shù)、method、全局變量、結(jié)構(gòu)、類(lèi)、注釋和功能源文件里定義的其它類(lèi)型的符號(hào)等。我們可以通俗地理解為緩存,當(dāng)需要再次查找某個(gè)符號(hào)時(shí),就可以直接從數(shù)據(jù)庫(kù)中查找,而不用在整個(gè)源碼庫(kù)中搜索,極大提高了效率。
3、顯示豐富的程序相關(guān)信息。
SI提供了豐富多彩的窗口,為被選中的代碼提供豐富的信息,如reference trees、class inheritance diagrams、call tress,symbol windows等。后面會(huì)專(zhuān)門(mén)介紹這些窗口的使用。
4、實(shí)時(shí)顯示上下文信息。
SI提供了Context Window,當(dāng)鼠標(biāo)選擇代碼中的某個(gè)符號(hào)時(shí),該window會(huì)實(shí)時(shí)顯示選中符號(hào)的上下文信息。在下文中的Context Window會(huì)詳細(xì)講到。甚至在你編輯的時(shí)候,SI同時(shí)分析你的源碼,提供實(shí)時(shí)的信息并進(jìn)行分析。
5、快速。
提供了快速和革新的訪(fǎng)問(wèn)源代碼和源信息的能力,能以最快的速度對(duì)源代碼導(dǎo)航和提供任何程序編輯器的源信息。
三、創(chuàng)建項(xiàng)目
在SI窗口的頂部工具欄上依次點(diǎn)擊 Project > New Project,即可開(kāi)始創(chuàng)建一個(gè)新的項(xiàng)目了。之所以要特別介紹項(xiàng)目的創(chuàng)建過(guò)程,除了這是一個(gè)極常用的操作外,還有就是創(chuàng)建過(guò)程中有一些注意事項(xiàng)需要留心,筆者在使用過(guò)程中就曾經(jīng)走過(guò)不少?gòu)澛罚谶@里特別記錄一下。 1、項(xiàng)目命名及設(shè)置項(xiàng)目存儲(chǔ)路徑
2、項(xiàng)目設(shè)置
如下圖,在紅框部分選擇需要打開(kāi)的源碼所在的路徑,筆者最初使用的時(shí)候,就忽略了這里,導(dǎo)致在后面的步驟中,找不到源碼,一度以為是SI版本異常了,所以這里特別提醒一下。其它的選項(xiàng)這里就按照默認(rèn)的選擇就可以了,筆者就是這么做的。當(dāng)然,這個(gè)要根據(jù)用戶(hù)自己需要來(lái)選擇了,看個(gè)人喜好。
3、添加/刪除項(xiàng)目文件
在這個(gè)界面上,可以看到左側(cè)“Directory”這一欄的根節(jié)點(diǎn),就是第二步“項(xiàng)目設(shè)置”中咱們選擇的源碼路徑所在的盤(pán)符,如果你要添加的源文件不在這個(gè)盤(pán)符,就沒(méi)法找到了。在該盤(pán)符下選擇想要添加的文件,如藍(lán)色部分“Android-8.0.0_r1”,這是Android 系統(tǒng)源碼根目錄,因?yàn)檫@里選擇的是文件夾,所以點(diǎn)擊右邊的“Add Tree”來(lái)添加整個(gè)目錄。如果選擇的是文件,多個(gè)文件就選擇“Add All”,單個(gè)文件就選擇“Add”
添加時(shí)會(huì)給出對(duì)話(huà)框,表示正在添加。筆者添加的源碼目錄有4G以上,所以這時(shí)需要等待好幾分鐘的時(shí)間。
添加完成以后,可以看到對(duì)話(huà)框提示,點(diǎn)擊“確定”即可,此時(shí)可以繼續(xù)添加項(xiàng)目文件。
4、完成項(xiàng)目創(chuàng)建
當(dāng)不需要再添加文件了,點(diǎn)擊“Close”按鈕關(guān)閉該界面,即完成了項(xiàng)目的創(chuàng)建。此時(shí)顯示的界面如下,左下區(qū)域顯示的就是新建的項(xiàng)目,列表顯示了項(xiàng)目中文件。
四、常用窗口
SI的用戶(hù)接口主要包含如下幾種類(lèi)型:
(1)頂部主要菜單和工具欄;
(2)用于編輯的源文件窗口;
(3)可停放或浮動(dòng)的工具窗口。
由于SI是一個(gè)MDI(Multiple Document Interface,多文檔接口),這意味著每一個(gè)你打開(kāi)的源文件都擁有它自己的子窗口。在這一節(jié)中,將主要介紹主要菜單和最常用到的9個(gè)應(yīng)用窗口。下圖展示了主界面常用窗口概貌:
1、主菜單(Main Menu)
和其他所有編輯器一樣,主菜單欄包含了所有編輯器功能的入口。每一類(lèi)功能又都分類(lèi)到某個(gè)子菜單中,這一點(diǎn)自然不用多說(shuō),地球人都知道,就不一一展示每個(gè)子菜單和功能點(diǎn)界面了,一些常用和重要的操作,咱們后文詳細(xì)介紹。
從上圖可以看到,分類(lèi)其實(shí)是非常簡(jiǎn)潔和明確的,看子菜單名稱(chēng)大概就能知道其中包含了哪些功能,很方便查找。這里筆者著重推薦一下“Help”子菜單。無(wú)疑,官方的幫助文檔,是最權(quán)威,最全面的,如果英文不是太差,對(duì)某些功能不是太明白的話(huà),完全可以從這個(gè)文檔中去查找,筆者看過(guò)其中不少說(shuō)明,其實(shí)還是很容易看懂的。如下為官方幫助文檔概貌,內(nèi)容還是比較全面的:
2、工具欄(Toolbars)
工具欄列出了不少比較常用的一些功能快捷按鍵,這個(gè)也是地球人都知道的吧。如下顯示了SI設(shè)置的所有快捷工具圖標(biāo)。
(1)顯示/隱藏工具欄
點(diǎn)擊菜單欄View子菜單欄,點(diǎn)開(kāi)Toolbars,就可以看到工具欄顯示選擇界面,可以在這里選擇顯示/隱藏哪些工具,如下圖所示。也可以右鍵點(diǎn)擊SI窗口頂部或工具欄空白處,也可以顯示下圖界面。
(2)工具欄工具簡(jiǎn)介
把鼠標(biāo)停留在工具欄的圖標(biāo)上,會(huì)簡(jiǎn)單說(shuō)明該工具的作用。咱們下面簡(jiǎn)單看看工具欄都包含了哪些功能,做到心中有數(shù),這有助于以后快速定位到某些功能的入口而不用每次都到菜單欄中去找,少走一些彎路。
1)標(biāo)準(zhǔn)工具欄(Standard Toolbar):包含了基本的文件操作
2)編輯工具欄(Edit Toolbar):包含一些基本的編輯操作
3)搜索工具欄(Search Toolbar):包含了一些搜索命令
4)導(dǎo)航工具欄(Navigation Toolbar):包含了一些界面導(dǎo)航功能。
a)Go To Previous Link / Go To Next Link:在搜索結(jié)果界面,用于跳轉(zhuǎn)到前一個(gè)/后一個(gè)結(jié)果的鏈接。
b)Go Back/Go Forward:回到上個(gè)/下個(gè)操作界面;
c)Go To Line:跳轉(zhuǎn)到某一行
d)Bookmarks:添加書(shū)簽,或定位到書(shū)簽處。鼠標(biāo)光標(biāo)停留在編輯窗口的某一行,點(diǎn)擊該按鈕,會(huì)顯示如下界面??梢赃x擇在“Name”處輸入書(shū)簽名并點(diǎn)擊“Set”按鈕,新增一個(gè)書(shū)簽;也可以在“Marks”處顯示的書(shū)簽列表中選擇一個(gè)書(shū)簽,雙擊或者點(diǎn)擊“Go To”按鈕,就可以跳轉(zhuǎn)到該書(shū)簽對(duì)應(yīng)的代碼處了。對(duì)于要經(jīng)常查看某處代碼,這個(gè)工具算是相當(dāng)給力了。
5)符號(hào)工具欄(Symbol Toolbar):用于訪(fǎng)問(wèn)一些符號(hào)信息(這里說(shuō)的符號(hào),前面第二大點(diǎn)第2小點(diǎn)講過(guò)其含義了,不明白的可以返回去看看)。
a)Jump To Definition:跳轉(zhuǎn)到選中的某個(gè)符號(hào)定義的地方。其實(shí)當(dāng)在編輯器中用鼠標(biāo)選擇某個(gè)符號(hào),如果打開(kāi)了“Contex Window”的話(huà),可以在“Context Window”中實(shí)時(shí)看到該符號(hào)的定義處,這個(gè)后面講到該窗口時(shí)再詳細(xì)講,這里不贅述。
b)Symbol Info:彈出對(duì)話(huà),顯示選擇的符號(hào)的相關(guān)信息,以及一些操作按鈕,如下圖所示??梢钥吹缴厦妗癑ump To Definition”是這里的一個(gè)小功能。
c)Browser Project Symbols:可以查看整個(gè)項(xiàng)目中的符號(hào)列表。
d)Look up References:顯示該符號(hào)被引用的地方。會(huì)彈出一個(gè)對(duì)話(huà)框,根據(jù)選擇的搜索條件進(jìn)行搜索,顯示一個(gè)搜索結(jié)果窗口列出這些引用信息(由于該該窗口尺寸原因,這里不好顯示,就不貼圖了)。其實(shí)在“Relation Window”中,也會(huì)實(shí)時(shí)顯示這些應(yīng)用列表的,這個(gè)后面在講該窗口時(shí)會(huì)詳細(xì)講,這里就不贅述了。
6)窗口工具欄( Window Toolbar):用于控制窗口的排列
7)幫助工具欄(Help Toolbar):訪(fǎng)問(wèn)幫助文檔。
點(diǎn)擊“Help Mode”后會(huì)出現(xiàn)一個(gè)“?”,將其拖到你想尋求幫助的地方,就會(huì)顯示該處相關(guān)的幫助文檔。
8)視圖工具欄(View Toolbar):開(kāi)啟/隱藏常用的幾個(gè)窗口,后面會(huì)專(zhuān)門(mén)對(duì)這幾個(gè)窗口做介紹。
9)構(gòu)建工具欄(Build Toolbar):運(yùn)行和編譯項(xiàng)目。
10)版本控制工具欄(Source Control Toolbar):包含了操作版本控制的相關(guān)工具。
3、源文件窗口(Source File Windows)
源文件窗口,可以稱(chēng)作是SI的主角了,因?yàn)樵创a都顯示在這個(gè)窗口,可編輯,可同時(shí)打開(kāi)多個(gè)窗口,在左上角紅框處顯示了源文件文件名和路徑。
在源文件窗口選中某個(gè)符號(hào)并點(diǎn)擊右鍵,會(huì)顯示一個(gè)功能菜單,可以對(duì)源文件進(jìn)行操作,如下圖所示:
這些功能有些是基本操作,有些是“見(jiàn)名思義”,一看就知道功能,有些在前面介紹工具欄的時(shí)候介紹過(guò),這里就不再一一說(shuō)明了,僅選擇性簡(jiǎn)單介紹幾個(gè):
Highlight Word 將文件中所有所選單詞高亮顯示,再次點(diǎn)擊會(huì)取消高亮。比如截圖中選擇“reason”并高亮,文件中的所有“reason”這個(gè)單詞都高亮了。另外,這個(gè)功能對(duì)注釋區(qū)無(wú)效。
Special Window Color/Remove Special Window Color 設(shè)置和取消編輯窗口的背景顏色。
Keyword List 顯示當(dāng)前文件所有的的關(guān)鍵字列表。
Style Properties
Document Options 設(shè)置編輯區(qū)文字顏色、大小、間隔等屬性。
Language Properties
Edit Condition
4、符號(hào)窗口(Symbol Windows)
符號(hào)的概念前面第二大節(jié)第2小點(diǎn)解釋過(guò),不清楚的可以往前翻看。該窗口和源文件窗口相依相存,同時(shí)出現(xiàn)或隱藏,它顯示在源文件窗口的左邊,展示了當(dāng)前文件中的所有符號(hào)列表。如下圖所
示:
頂部顯示了文件名;搜索欄中輸入要查找的符號(hào)可以快速找到要找的符號(hào);中間部分顯示了符號(hào)列表,每一項(xiàng)前面都有一個(gè)符號(hào),這些符號(hào)表示不同的符號(hào)類(lèi)型;底部為工具欄,主要用于顯示符號(hào)排序方式,決定顯示哪些內(nèi)容,字體顏色和大小等。(Tips:如果在操作過(guò)程中,發(fā)現(xiàn)該窗口為空白了,可以點(diǎn)擊工具欄中的排序方式選擇按鈕,相當(dāng)于刷新了一下,即可正常顯示了,最開(kāi)始筆者碰到這種情況的時(shí)候,曾經(jīng)蒙圈過(guò)...)
在窗口區(qū)域內(nèi)點(diǎn)擊右鍵,會(huì)顯示一個(gè)菜單欄,顯示針對(duì)該窗口的一些操作功能,如下圖所示:
值得注意的是,菜單欄中Cut~Select Symbol,操作對(duì)象是整個(gè)符號(hào)所代表的代碼塊,而不是符號(hào)所代表的字符串。比如鼠標(biāo)選中某個(gè)方法符號(hào),點(diǎn)擊“Copy Symbol”后復(fù)制的就是整個(gè)方法了。這里有個(gè)比較生僻的功能——“Duplicate Symbol”,表示重復(fù)符號(hào),將符號(hào)復(fù)制并粘貼,功能上看就相當(dāng)于“Copy Symbol”和“Paste Symbol”一次組合使用了。菜單中剩余的功能基本上就是Window面板中搜索欄和工具欄中的功能,這里不贅述。
5、項(xiàng)目窗口(Project Window)
項(xiàng)目窗口顯示了項(xiàng)目的相關(guān)信息,可以在SI頂部“View > Project Window”或者Toolbar中“Project Window”按鈕來(lái)控制該窗口的顯示/隱藏。
(1)概貌
如下圖所示,為項(xiàng)目默認(rèn)窗口的概貌圖,我們可以看到,它顯示了項(xiàng)目名稱(chēng),快速搜索欄,中間的內(nèi)容顯示區(qū)和底部的工具欄,當(dāng)然還有右上角的最大/最小化和關(guān)閉按鈕。
(2)內(nèi)容顯示區(qū)
這個(gè)區(qū)域會(huì)根據(jù)“快速搜索欄”輸入的關(guān)鍵字過(guò)濾出文件名或路徑包含該關(guān)鍵字的匹配列表,上圖中還顯示了文件大小,和修改時(shí)間。這個(gè)區(qū)域的內(nèi)容也會(huì)隨著工具欄中的按鈕的切換而變化顯示內(nèi)容。后面講工具欄時(shí)會(huì)再講到。雙擊某一項(xiàng)或者在某一項(xiàng)上點(diǎn)擊右鍵調(diào)出的菜單中點(diǎn)擊“Open”就可以快速進(jìn)入到對(duì)應(yīng)的源文件。
(3)工具欄
默認(rèn)選擇是顯示,也可以通過(guò)在該項(xiàng)目窗口點(diǎn)擊右鍵后顯示的菜單欄“Toolbar”選項(xiàng)來(lái)顯示/隱藏工具欄。窗口工具欄中黃框部分按鈕用于切換內(nèi)容顯示區(qū)的顯示內(nèi)容;藍(lán)框部分會(huì)根據(jù)黃框部分按鈕的選擇而有所變動(dòng),主要用于跳轉(zhuǎn)到某些界面;綠框部分為項(xiàng)目窗口屬性設(shè)置按鈕,包括字體大小、顏色、背景色等。把鼠標(biāo)指針?lè)胖迷诎粹o上,會(huì)顯示該按鈕功能。
1)黃框中按鈕功能如下:
Project File List:項(xiàng)目文件列表。默認(rèn)選擇為該項(xiàng),在“內(nèi)容顯示區(qū)”顯示當(dāng)前項(xiàng)目中的所有文件列表,并降序排列,如概貌圖中所示。Tips:這里可以在搜索欄中靈活使用通配符,比如輸入“*.java”再按“Enter”按鍵,可以篩選出所有的java文件;如果再輸入“*”并“Enter”,則取消前面通配符效果,也可以理解是“*”表示顯示所有。
Project File Browser:項(xiàng)目文件瀏覽器,以目錄樹(shù)的形式顯示。
Project Document Types:按照文件的文檔類(lèi)型來(lái)分類(lèi)顯示。
Project Symbol List:顯示項(xiàng)目中符號(hào)列表。
注意:這里工具欄中黃色邊框中的按鈕,與其他幾個(gè)界面有所不同了。
Project Symbol Classes:按照符號(hào)的類(lèi)型進(jìn)行分類(lèi)顯示。
2)黃框中
前面也提到了,藍(lán)框中的按鈕是變化的。當(dāng)左邊切換到“Project Symbol List”或“Project Symbol Classes”這兩個(gè)顯示Symbol的界面時(shí),藍(lán)框中顯示了4個(gè)按鈕,這里的4個(gè)按鈕和SI整體窗口頂部的工具欄中符號(hào)工具欄(Symbol Toolbar)一樣,這里不贅述,不清楚的可以查看前面“工具欄”這一節(jié)。當(dāng)選擇的是其他3種界面時(shí),顯示的是概貌圖中界面:Open Project、Add or Remove Project Files 和 Project Report。Project Report,生成當(dāng)前項(xiàng)目中的統(tǒng)計(jì)數(shù)據(jù),如下圖(1)所示,可以選擇一些統(tǒng)計(jì)項(xiàng),點(diǎn)擊“OK”按鈕,會(huì)生成一個(gè)統(tǒng)計(jì)報(bào)告文件如下圖(2)所示。
圖(1)
圖(2)
3)綠框中
綠框中按鈕的功能是設(shè)置項(xiàng)目窗口的界面信息,如下圖所示,可以設(shè)置顯示內(nèi)容,字體/顏色/大小等。
(4)右鍵菜單欄 在該窗口中點(diǎn)擊右鍵,可以調(diào)起項(xiàng)目窗口的功能菜單欄,如下圖所示。前面黃框部分按鈕在切換顯示內(nèi)容是文件或符號(hào)的時(shí)候,菜單欄會(huì)有一點(diǎn)不同,但也是大同小異,這里不單獨(dú)貼圖了。這里單獨(dú)提一下“Synchronize Files”,同步項(xiàng)目中的所有修改,其他功能或在工具欄中講到過(guò),或見(jiàn)名思義,就不贅述了。
6、關(guān)聯(lián)窗口(Relation Window)
Relation Window也是SI的一個(gè)創(chuàng)新點(diǎn),用于顯示當(dāng)前被選中的Symbol和外界的聯(lián)系,比如被哪些地方引用,被哪些地方調(diào)用等。它和后面要講到的Context Window一樣,都是跟蹤選中的Symbol而自動(dòng)實(shí)時(shí)地變化。
(1)開(kāi)關(guān)位置
可以在SI頂部菜單欄選擇/取消“View > Relation Window”,或者在頂部Toolbar中點(diǎn)擊“Relation Window”快捷按鈕來(lái)顯示/隱藏該窗口。
(2)窗口內(nèi)容
當(dāng)鼠標(biāo)光標(biāo)停留在某個(gè)Symbol上時(shí),該窗口中會(huì)立即顯示設(shè)置的關(guān)聯(lián)內(nèi)容,該窗口基本內(nèi)容如下圖所示:
圖4.6.1
頂部“References”表示該窗口顯示的內(nèi)容與當(dāng)前光標(biāo)所在的Symbol是引用關(guān)系,這個(gè)關(guān)系可以在設(shè)置中選中,還有“Calls”、Contains等關(guān)系,后面會(huì)講到。中間內(nèi)容區(qū)顯示了引用當(dāng)前Symbol的地方,該例子中就是表示變量“_isFaceIDSwitchOpen”被當(dāng)前類(lèi)KeyguardUpdateMonitor中isFaceIDSwitchOpen()方法的第2760、2764、2769行引用。點(diǎn)擊每一行會(huì)在Context Window中實(shí)時(shí)顯示上下文。底部是該窗口的快捷工具箱。
(3)Toolbar各功能簡(jiǎn)介
從左往功能依次為
Jump To Definition:將光標(biāo)移動(dòng)到所選項(xiàng)被定義的地方,可能是某個(gè)方法,或者某個(gè)類(lèi)等。
Symbol Info:彈出一個(gè)popup window,顯示Relation Window中被選項(xiàng)的定義。
Lookup Reference:搜索指定或者選中字段的應(yīng)用情況,后面講搜索的時(shí)候會(huì)詳細(xì)講到。
Lock Relation Window:選中后表示鎖住當(dāng)前窗口,不會(huì)實(shí)時(shí)改變內(nèi)容。
Refresh Relation Window:刷新窗口。
View Relation Outline:以大綱的形式顯示內(nèi)容,如圖4.6.2所示。
View Relation Horizonal Graph:水平顯示內(nèi)容,如圖4.6.3所示。
View Relation Vertical Graph:垂直顯示內(nèi)容,如圖4.6.1所示。
Relation Window Properties:窗口屬性設(shè)置,里面功能點(diǎn)比較多,這里單獨(dú)劃出一個(gè)小節(jié)詳細(xì)說(shuō)明。
圖4.6.2
圖4.6.3
(4)Relation Window Properties
該對(duì)話(huà)框除了能設(shè)置字體,顏色等外觀(guān)屬性外,還能設(shè)置內(nèi)容與光標(biāo)選項(xiàng)的關(guān)系等多種內(nèi)在聯(lián)系。
圖4.6.4
1)Automatic Symbol Tracking
設(shè)置Symbol自動(dòng)跟蹤相關(guān)屬性,如下圖所示。如果不希望自動(dòng)跟蹤Symbol,選擇“Off”或者在Toolbar中選擇“Lock Relation Window”即可。
這些選項(xiàng)字面意思比較簡(jiǎn)單,這里就不啰嗦了。
2)Automatic Expansion Option
Expand duplicate branches:是否展開(kāi)重復(fù)的分支。
Level:展開(kāi)分支的層級(jí)。比如設(shè)置為“2”,那么被Calls的函數(shù),以及該函數(shù)再調(diào)用的函數(shù)都會(huì)顯示。
3)View Relationship
單獨(dú)設(shè)置被選中的Symbol類(lèi)型與Relaiton Window中顯示內(nèi)容的關(guān)系,選中的類(lèi)型不同,關(guān)系也不一樣。該處列出了“Type”、“Functions”、“Variables/Constants”、“Classes”、“Files”五種類(lèi)型,以及可以設(shè)置的關(guān)系。例如,如圖4.6.4中,給“Functions”設(shè)置的是“Calls”關(guān)系,那么當(dāng)鼠標(biāo)選中某個(gè)函數(shù),那么當(dāng)前Relation Window中就會(huì)顯示被該函數(shù)“Calls”的信息。
這些Relation可以分為3類(lèi),不同的類(lèi)型匹配的速度也不一樣,從快到慢依次為:
Contains:顯示當(dāng)前symbol的內(nèi)容。
Calls:被當(dāng)前symbol調(diào)用的其他symbol。比如選中了函數(shù),則會(huì)顯示被該函數(shù)調(diào)用的其他函數(shù)。
References:顯示有哪些symbol調(diào)用了當(dāng)前symbol,作用范圍僅在當(dāng)前文件。比如,選中了某個(gè)函數(shù),則會(huì)顯示當(dāng)前文件中調(diào)用了該函數(shù)的函數(shù)。在比較大的項(xiàng)目中,這項(xiàng)關(guān)系的匹配是比較耗時(shí)的。
對(duì)于“Group multiple references into one item” 以及“Columns”,其中的有些功能還沒(méi)太明白,以后搞明白了再補(bǔ)上。
4)Graph按鈕(最右邊一列中的按鈕)
該對(duì)話(huà)框主要用于設(shè)置關(guān)系圖的外觀(guān),這個(gè)比較簡(jiǎn)單,不多說(shuō)了。
(5)右鍵菜單欄
該菜單欄中的功能有的在前面講到過(guò),有的比較簡(jiǎn)單,就不一一列舉。這里說(shuō)一下“New Relation Window”,同一個(gè)窗口中可以同時(shí)打開(kāi)多個(gè)Relation Window。開(kāi)發(fā)者可以同時(shí)打開(kāi)“Calls”關(guān)系窗口和“References”關(guān)系窗口,根據(jù)自己的需求決定,非常便利。
7、剪貼板窗口(Clip Window)
剪貼板窗口是一個(gè)浮動(dòng)窗口,可以隨意拖動(dòng)和停留在界面中。它類(lèi)似于剪貼板,但相比于剪貼板只能保存最近一次的剪切外,該窗口可以保留多個(gè)剪貼記錄。
(1)開(kāi)關(guān)位置 可以在SI界面頂部的Toolbar中點(diǎn)擊“Clip Window”開(kāi)關(guān),或在頂部菜單欄“View > Clip Window”選擇/取消來(lái)顯示/隱藏該窗口。 (2)窗口內(nèi)容 該窗口的顯示信息如下圖。每一個(gè)clip項(xiàng)都包含一clip名稱(chēng)和該clip的內(nèi)容。
(3)Toolbar各功能簡(jiǎn)介
上圖中最底部的Toolbar,從左往右功能如下:
New Clip:創(chuàng)建一個(gè)新的clip。
Delete Clip:刪除選中的clip。
Edit Clip:編輯選中的clip的內(nèi)容。
Cut To Clip:在“Source File Window”選中某字符串,點(diǎn)擊該按鈕,所選擇部分將被剪切并彈出對(duì)話(huà)框創(chuàng)建一個(gè)新的clip,被剪內(nèi)容將作為新clip的內(nèi)容,clip名稱(chēng)需要自定義。
Copy To Clip:與“Cut To Clip”類(lèi)似,不同的是,該功能是復(fù)制選中的部分。
Paste From Clip:選中某條clip,如果光標(biāo)在“Source File Window”內(nèi),點(diǎn)
擊該功能按鈕,會(huì)把clip內(nèi)容粘貼在光標(biāo)處。雙擊選中的clip也有同樣的效果。
Clip Window Properties:設(shè)置該窗口的一些屬性
(4)右鍵菜單欄
在該窗口內(nèi)點(diǎn)擊右鍵,會(huì)顯示如下菜單欄。其中功能上面基本都介紹了,這里不贅述,只簡(jiǎn)單補(bǔ)充一下“Show Clipboard”。當(dāng)選中某個(gè)clip,并點(diǎn)擊“Show Clipboard”,會(huì)彈出一個(gè)窗口顯示該clip的內(nèi)容,和點(diǎn)擊“Edit Clip”非常類(lèi)似,只是無(wú)法編輯。
8、搜索窗口(Search Results Window)
搜索功能絕對(duì)是一個(gè)最常用的功能之一了,使用十分頻繁,下面對(duì)搜索功能及搜索結(jié)果窗口做一些基本的介紹。
(1)搜索功能入口
開(kāi)發(fā)者可以點(diǎn)擊頂部主菜單欄中“Search”選擇搜索子功能,如下圖4.8.1所示;或者在頂部Toolbar快捷工具欄中點(diǎn)擊相應(yīng)的快捷按鈕進(jìn)行搜索,如下圖4.8.2紅框部分;或者使用快捷鍵調(diào)出對(duì)應(yīng)的搜索功能窗口,如下圖4.8.1所示。
圖4.8.1
圖4.8.2
(2)Search
該功能主要在當(dāng)前文件范圍內(nèi)進(jìn)行搜索,根據(jù)自身的需要添加搜索條件,一般選擇默認(rèn)就可以了。
圖4.8.3
Find:需要搜索的字符串,點(diǎn)擊右邊倒三角可以查看并選擇歷史搜索記錄。
Case Sensitive:大小寫(xiě)敏感。
Use Regular Expressions:使用正則表達(dá)式。
Wrap Arround:(還沒(méi)清楚其作用)
Select When Found:找到該字符串時(shí),該字符串被選中。
Whole Words Only:只包含整個(gè)要搜索的字符串。如果不選中,則包含欲搜索字符串的字符串都會(huì)被搜索到。
Forward/Backward 以當(dāng)前文件中鼠標(biāo)光標(biāo)所在處為參照點(diǎn),向前/向后搜索。與圖4.8.1或圖4.8.2中“Search Forward”/“Search Backward”功能一致。
Selection 在當(dāng)前文件可見(jiàn)范圍內(nèi)搜索。
Whole File (截圖紅框①處):在當(dāng)前整個(gè)文件內(nèi)搜索。
Search(截圖紅框②處):如果能搜索到,鼠標(biāo)只會(huì)定位到滿(mǎn)足條件的某一個(gè)搜索結(jié)果處。
Whole File(截圖紅框③處):點(diǎn)擊該按鈕,會(huì)在當(dāng)前整個(gè)文件中進(jìn)行搜索,如果有多個(gè)搜索結(jié)果,會(huì)顯示一個(gè)搜索結(jié)果列表,如下圖4.8.4所示。
Files(截圖紅框④處):點(diǎn)擊該按鈕,會(huì)跳轉(zhuǎn)到“Search Files”功能界面,下面會(huì)詳細(xì)介紹。
圖4.8.4
(3)Search Files
與“Search”功能相比,這里用于在多個(gè)文件中進(jìn)行搜索。如下圖所示,為其功能界面,以下將對(duì)該功能進(jìn)行簡(jiǎn)單介紹。
圖4.8.5
1)先看“Options”(上圖紅框②處)中各選項(xiàng)的含義(在“Search”功能中講到過(guò)的選項(xiàng)含義,這里不再贅述):
Project Wide:在整個(gè)項(xiàng)目范圍內(nèi)的所有文件中進(jìn)行搜索。
Include Subdirectories:在圖4.8.5紅框①處如果選中的是目錄,該選項(xiàng)用于
選擇是否要在該目錄的子目錄中進(jìn)行遞歸搜索。
Find Non-Matching:
Skip Inactive Code:跳過(guò)無(wú)效代碼查找。
Skip Comments:跳過(guò)注釋查找。
Search Only Comments:僅在注釋中查找。
2)Find:在“Search”功能中講過(guò),這里不贅述。
3)File Name:制定查找范圍,可以是具體的某個(gè)文件,也可以是某個(gè)文件夾。可以圖4.8.5紅框①處中選擇,也可以在截圖右下角點(diǎn)擊“Browser”按鈕進(jìn)行選擇。左邊的倒三角點(diǎn)擊后,顯示歷史記錄列表。
4)圖4.8.5紅框①區(qū):該區(qū)域會(huì)顯示具體的文件或者目錄。點(diǎn)擊③處“Show Dirs”,該按鈕顯示的文字會(huì)在“Show Dirs”/“Show Files”之間換號(hào),①區(qū)內(nèi)容也會(huì)隨之變化。在②區(qū)選擇“Project Wide”也會(huì)顯示所有文件,選擇“Include Subdirectories”則會(huì)顯示目錄。
5)Search Results:④區(qū)中的選項(xiàng)為設(shè)置搜索結(jié)果需要顯示哪些內(nèi)容,如圖4.8.4所示。
值得注意的是:在選擇源文件的時(shí)候,不是硬盤(pán)中所有的文件都能顯示,這里和前文介紹新建項(xiàng)目時(shí)所選擇的源碼路徑所在盤(pán)符有關(guān)。
(4)Search Project/Lookup Reference
“Search Project“和”Lookup Reference”功能界面除了左上角標(biāo)題欄不同外,其它一模一樣,這里就以“Lookup Reference”為例,如下圖所示。
1)Search Method:這里有四個(gè)選項(xiàng)
Simple String:最普通的形式,把搜索項(xiàng)作為字符串,可以查找文件中出現(xiàn)的任意字符或者字符串,當(dāng)工程比較大的時(shí)候查找比價(jià)慢。
Regular Expression:正則表達(dá)式方式搜索??梢詤⒖迹骸維ource Insight搜索正則表達(dá)式使用技巧】
Keyword Expression/Lookup Reference:這兩種方式查找的結(jié)果基本相同,只是顯示方式略有差異。有些文章中說(shuō),這兩種方式都是使用SI預(yù)先建立的數(shù)據(jù)庫(kù),查找起來(lái)速度相當(dāng)快,但通常這種速度只在查找標(biāo)識(shí)符時(shí)有明顯效果,且強(qiáng)烈建議像函數(shù)名、變量名等的查找,用這兩種方式進(jìn)行查找。這里筆者聲明一下,筆者暫時(shí)還沒(méi)體驗(yàn)到這里說(shuō)的快速,在浩瀚的源碼中搜索某個(gè)函數(shù)或變量時(shí),都很費(fèi)事,所以這里不敢打包票。
2)Lines of Context:每一條結(jié)果項(xiàng)顯示的行數(shù)。前面我們可以看到,不同方式的搜索結(jié)果種,有的只顯示一行,有的顯示多行,就和這里有關(guān)。有的行數(shù)可以編輯,而有的不能編輯。
3)Search In:指定搜索范圍。
4)Find Reference To:這個(gè)lable會(huì)根據(jù)“Search Method”中方式的選擇而變化。其中的內(nèi)容為搜索項(xiàng),點(diǎn)擊倒三角會(huì)顯示搜索記錄列表。
(5)Search Result Window
其實(shí)前面已經(jīng)講到過(guò)該窗口了,當(dāng)搜索完后,會(huì)展示一個(gè)窗口用于顯示搜索結(jié)果,如下圖所示,紅色框中顯示了有多少個(gè)匹配項(xiàng),多少個(gè)文件。主內(nèi)容區(qū)也顯示文件名,所在行數(shù)等信息。
圖4.8.10
下圖是一個(gè)完整的搜索結(jié)果及其它窗口交互界面。當(dāng)選擇“Search Result Window”中某一項(xiàng)時(shí),會(huì)在“Context Window”中實(shí)時(shí)顯示其上下文內(nèi)容,如下圖中④去所示。在搜索結(jié)果項(xiàng)前都有一個(gè)紅色按鈕,如③區(qū)所示。點(diǎn)擊對(duì)應(yīng)項(xiàng)該按鈕,會(huì)顯示其對(duì)應(yīng)的“Source File Window”及所搜索字段所在位置,且也有一個(gè)紅色按鈕,如下圖②區(qū)所示,點(diǎn)擊這些按鈕,界面會(huì)在“Source File Window”和“Search Result Window”之前來(lái)回切換。下圖①區(qū)顯示的Toolbar按鈕,我們?cè)谇懊嬷vToolbar的時(shí)候介紹過(guò),是"Go To Previous Link / Go To Next Link",此時(shí)點(diǎn)擊這兩個(gè)按鈕會(huì)跳轉(zhuǎn)到前一個(gè)/后一個(gè)搜索結(jié)果鏈接。
(6)其他
在圖4.8.1中“Search”子菜單中還有很多選項(xiàng),有的比較簡(jiǎn)單,有的前文中陸陸續(xù)續(xù)介紹過(guò),這里就不贅述了。
9、上下文窗口(Context Window)
上下文窗口是SI中一個(gè)革新功能,在用戶(hù)瀏覽或者編輯源碼過(guò)程中,會(huì)實(shí)時(shí)自動(dòng)顯示鼠標(biāo)點(diǎn)擊或選中部分的相關(guān)信息,可以簡(jiǎn)單地看做是預(yù)覽功能。
(1)開(kāi)關(guān)位置
上下文窗口的顯示/隱藏開(kāi)關(guān)位于菜單欄“View > Context Window” 或 Toolbar中“Context Window”按鈕。
(2)窗口內(nèi)容顯示
上下文窗口位于前面SI概貌圖的左下角,其顯示內(nèi)容,會(huì)根據(jù)鼠標(biāo)所選取或點(diǎn)擊的內(nèi)容的類(lèi)型而有很大差別。下表總結(jié)了不同的鼠標(biāo)行為與相應(yīng)的上下文窗口顯示結(jié)果(摘自SI官方幫助文檔):
1)在源文件窗口操作時(shí) 如果選中的是源文件窗口中的符號(hào)或局部變量,參數(shù)等,該窗口會(huì)顯示選中內(nèi)容被定義(如果是方法、類(lèi)或結(jié)構(gòu)體等,下同)或聲明(如果是全局變量或引用等,下同)的上下文信息。如下圖顯示的是在源文件窗口中選中“reason”時(shí)的結(jié)果:頂部顯示了選中的內(nèi)容“reason”,類(lèi)型“Locol Variable”,所在文件名“SystemServer.java”,所在文件路徑等;中間顯示區(qū)高亮顯示了“reason”的定義處,以及它所在的上下文信息——函數(shù)performPendingShutdown()內(nèi);底部為工具欄,這個(gè)后面單獨(dú)講到。
如果在源文件窗口中輸入信息,如果以這個(gè)字符串開(kāi)頭的符號(hào)有多個(gè),則會(huì)在上下文窗口中顯示匹配的符號(hào)列表。如下圖顯示的就是在源碼文件中輸入“star”字符串后該窗口的表現(xiàn)。
2)在Project Window操作時(shí)
如果當(dāng)前Project Window顯示的是文件,且鼠標(biāo)選中了其中一個(gè)文件,Context Window中顯示的則是文件內(nèi)容。
如果當(dāng)前Project Window顯示的是符號(hào),鼠標(biāo)選中后,Context Window中則會(huì)顯示符號(hào)的聲明或這定義的上下文代碼。
3)在Clip Window操作時(shí)
當(dāng)鼠標(biāo)選中Clip Window列表中的某一項(xiàng)Clip時(shí),Context Window頂部會(huì)顯示當(dāng)前內(nèi)容類(lèi)型為“Clip”,Clip名稱(chēng)為“Reason”,內(nèi)容來(lái)源為“Text from Typing”,Clip內(nèi)容為“Text Clip in Context Window”,當(dāng)雙擊Clip內(nèi)容時(shí),會(huì)彈出一個(gè)編輯窗口,編輯其內(nèi)容。
4)在Symbol Window操作時(shí)
如果當(dāng)期鼠標(biāo)選中的是Symbol中的某一個(gè)符號(hào),那Context Window顯示的是對(duì)符號(hào)的定義或聲明。
5)在Relation Window操作時(shí)
如果當(dāng)前鼠標(biāo)選中的是Relation Window中的內(nèi)容時(shí),Context Window中顯示的是該引用項(xiàng)所在的位置。如下圖中,Relation Window顯示的是SystemServer.java類(lèi)中performPendingShutdown()方法中的局部變量reason的應(yīng)用者列表,當(dāng)鼠標(biāo)點(diǎn)擊最后一條時(shí),Context Window就定位并高亮顯示了該引用項(xiàng)的位置。
(3)底部工具欄
下圖為Context Wiindow中底部的工具欄,黃框部分功能參考SI頂部Toolbar中部分,這里不贅述。藍(lán)框部分功能為:Complete Symbol、Lock Context Window、Context Window Properties
Complete Symbol:自動(dòng)補(bǔ)全符號(hào)功能。即當(dāng)用戶(hù)在Source File Window區(qū)域輸入字符串時(shí),點(diǎn)擊該按鈕可以顯示以該字符串開(kāi)頭的符號(hào)列表,供用戶(hù)選擇自動(dòng)補(bǔ)全。如下圖所示:
Lock Context Window:上下文窗口鎖。選中該按鈕后,上下文窗口內(nèi)容就會(huì)被鎖住,不會(huì)實(shí)時(shí)變化;再次點(diǎn)擊,則取消鎖功能。
Context Window Properties:上下文窗口屬性。設(shè)置上下文窗口的字體類(lèi)型/大小/顏色,背景色,跟蹤屬性,顯示內(nèi)容等特性。
(4)右鍵菜單欄
在Context Window上點(diǎn)擊右鍵調(diào)出功能菜單如下所所示,除了紅框中“Project-Wide Rename(顧名思義:項(xiàng)目范圍內(nèi)對(duì)選中項(xiàng)重命名)”外其他都在前面講過(guò)了,這里不贅述。
五、幫助功能
正如大多數(shù)軟件及開(kāi)發(fā)工具包一樣,官方提供的幫助文檔就是最好的教程,SI也不例外。當(dāng)然這需要讀者有一定的英文文檔閱讀基本功,因?yàn)檫@類(lèi)文檔都是英文版的。從筆者的經(jīng)驗(yàn)來(lái)看,語(yǔ)法什么的其實(shí)不那么復(fù)雜,關(guān)鍵的生僻單詞可以查詞典,也不是難事,反而是閱讀的耐心才是閱讀英文文檔的關(guān)鍵。下面簡(jiǎn)單介紹一下SI的幫助相關(guān)的功能。
1、功能入口
點(diǎn)擊SI頂部菜單欄“Help”子菜單欄,即可顯示“幫助”相關(guān)的子功能
2、幫助文檔
點(diǎn)擊列表中的“Help”或者快捷鍵F1,會(huì)調(diào)出官方幫助文檔來(lái),如下圖所示:
該部分提供了“目錄”、“索引”、“搜索”、“書(shū)簽”等搜索方式,搜索起來(lái)非常方便。從上面截圖可以看到“Window Tour”,是不是似曾相識(shí)?沒(méi)錯(cuò),筆者前文將到的常用窗口功能,就有一部分是取材于該幫助文檔。該文檔的使用還是比較簡(jiǎn)單的,這里就不啰嗦了。
2、Help Mode 點(diǎn)擊該項(xiàng)后,會(huì)在界面上出現(xiàn)一個(gè)鼠標(biāo)箭頭+“?”的符號(hào),隨著鼠標(biāo)移動(dòng),只要在SI界面上點(diǎn)擊某個(gè)窗口或按鈕,就會(huì)調(diào)出幫助文檔,并顯示點(diǎn)擊處相關(guān)的幫助信息。
3、HTML Help/SDK Help
用于加載本地的一些幫助文檔。
4、Create Key List
會(huì)彈出如下文檔,記錄了SI的功能點(diǎn),以及對(duì)應(yīng)的快捷鍵。開(kāi)發(fā)者可以在其中增、刪、改、查快捷鍵。
形式上類(lèi)似于上面的“Create Key List”,功能上顯示了SI的功能點(diǎn)以及對(duì)該功能點(diǎn)的描述。
6、Toolbar幫助快捷按鈕
在前文講“Toolbar”的時(shí)候講到過(guò),這里再提一下。SI頂部Toolbar上有兩個(gè)幫助相關(guān)的快捷按鈕,如下圖所示
這兩個(gè)功能前面也都提到了,這里不贅述。
7、Other
菜單欄中還有“Serial Number”、“Source Insight Web Site”、“About Source Insight”功能,比較簡(jiǎn)單,主要用于顯示一些SI的基本信息,這里也不啰嗦了。
筆者之所以特地用一個(gè)章節(jié)來(lái)寫(xiě)“Help”這個(gè)用法很簡(jiǎn)單的功能,是因?yàn)楣P者在學(xué)習(xí)SI時(shí),就極大地收益于該幫助文檔。該文章中的不少內(nèi)容也是取材于該文檔。與此同時(shí),從使用其他軟件和SDK的經(jīng)歷來(lái)看,對(duì)官方幫助文檔的作用有著深切的體會(huì)。所以筆者在以后的開(kāi)發(fā)和學(xué)習(xí)中,會(huì)更加加強(qiáng)對(duì)官方文檔的閱讀,這一節(jié)也是用于勉勵(lì)自己,也建議讀者也能夠養(yǎng)成閱讀官方文檔的好習(xí)慣。
六、宏(Marco)的使用
介紹SI,就不得不提到宏。宏是SI的一個(gè)強(qiáng)大的功能,有的人甚至認(rèn)為是SI中最強(qiáng)大最有趣的功能。用戶(hù)可以通過(guò)編寫(xiě)宏來(lái)實(shí)現(xiàn)自定義功能,極大地提高效率。筆者以前在網(wǎng)上找到過(guò)一個(gè)這方面寫(xiě)得挺好的教程,作者非常用心,筆者這里就不重復(fù)造這個(gè)輪子了(當(dāng)然筆者在這方面經(jīng)驗(yàn)和水平都有限-_-),這里把該教程分享出來(lái):
該教程介紹了當(dāng)前廣受歡迎的三個(gè)宏:Quicker、Code Review、Chnchar的使用,配置等方面的內(nèi)容。
七、常用技巧
本節(jié)主要記錄一些比較實(shí)用且比較零散的使用技巧。 1、查看最近打開(kāi)的文件列表。
可以結(jié)合Toolbar中的“Go Back/Go Forward”快捷鍵使用。
2、自定義快捷鍵 開(kāi)發(fā)者可以根據(jù)自己習(xí)慣,自行定義快捷鍵。功能路徑為:Menu > Options > Key Assigments
選擇要修改的功能項(xiàng),點(diǎn)擊“Assign New Key”會(huì)彈出上圖底部的操作說(shuō)明,按照操作進(jìn)行即可自定義快捷鍵。如果想恢復(fù)默認(rèn),點(diǎn)擊“Reset”按鈕即可。
SI的功能太多了,筆者不可能全部能寫(xiě)出來(lái),這里先從整體上做介紹并打好框架,后續(xù)筆者會(huì)根據(jù)自己的使用情況,慢慢完善。由于經(jīng)驗(yàn)和水平有限,難免有描述錯(cuò)誤或者不妥之處,請(qǐng)讀者多多指教!
審核編輯:湯梓紅
-
編輯器
+關(guān)注
關(guān)注
1文章
801瀏覽量
31119 -
Source
+關(guān)注
關(guān)注
0文章
17瀏覽量
9801 -
insight
+關(guān)注
關(guān)注
0文章
7瀏覽量
2170
原文標(biāo)題:神器必會(huì)!特別好使的編輯器Source Insight
文章出處:【微信號(hào):技術(shù)讓夢(mèng)想更偉大,微信公眾號(hào):技術(shù)讓夢(mèng)想更偉大】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論