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