1. 程式人生 > >【工利其器】Source Insight 學習筆記

【工利其器】Source Insight 學習筆記

前言

        “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個應用視窗。下圖展示了主介面常用視窗概貌:

        

                                                                                                        SI概貌圖

  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",此時點選這兩個按鈕會跳轉到前一個/後一個搜尋結果連結。

       

                                                                 圖4.8.11

    (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的功能點,以及對應的快捷鍵。開發者可以在其中增、刪、改、查快捷鍵。

        

  5、Create Command List 

       形式上類似於上面的“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的使用,配置等方面的內容。如果下載有問題,可以和筆者聯絡:[email protected]

 

七、常用技巧

     本節主要記錄一些比較實用且比較零散的使用技巧。

  1、檢視最近開啟的檔案列表。

       

       可以結合Toolbar中的“Go Back/Go Forward”快捷鍵使用。

       

  2、自定義快捷鍵

       開發者可以根據自己習慣,自行定義快捷鍵。功能路徑為:Menu > Options > Key Assigments

       

       選擇要修改的功能項,點選“Assign New Key”會彈出上圖底部的操作說明,按照操作進行即可自定義快捷鍵。如果想恢復預設,點選“Reset”按鈕即可。

 

       SI的功能太多了,筆者不可能全部能寫出來,這裡先從整體上做介紹並打好框架,後續筆者會根據自己的使用情況,慢慢完善。由於經驗和水平有限,難免有描述錯誤或者不妥之處,請讀者多多指教!