source insight的使用

guotao1983發表於2018-08-20

Source Insight是一個功能非常強大的C、C++的程式碼閱讀器,通過工程的管理,Source Insight可實現多檔案程式碼中(C工程或C和ASM的混合工程)的變數、函式的快速定位和搜尋,並且對每個開啟的源程式(C或C++程式碼)中的變數和函式的程式語句進行彩色顯示等功能。作為讀者,通過程式中語句的不同顏色以及變數和函式的快速定位,可以在一個大的工程中快速定位自己所要尋找的函式和程式段、定位變數和函式的定義和宣告,大大節約的自己的時間,把精力集中在程式碼的閱讀上。

 

一、Source Insight的安裝

Source Insight目前的最新版本是3.5版,它的安裝很簡單,根據提示一步一步安裝即可。

執行Source Insight介面如下:

各工具欄命令如下:

對應的檔案選單的功能

New(快捷鍵ctrl+N)          新建一個檔案

Open(快捷鍵ctrl+O)         開啟一個檔案

Save(快捷鍵ctrl+S)         儲存當前開啟的檔案

Save As(快捷鍵ctrl+shift+S) 將當前開啟的檔案儲存為其它名子的檔案

Save All(快捷鍵ctrl+A)      儲存所有開啟的和修改過的檔案

Print                          列印當前開啟的檔案

對應的編輯選單功能

Cut(快捷鍵ctrl+X)   

Copy(快捷鍵ctrl+C)

Paste(快捷鍵ctrl+V)

Undo(快捷鍵ctrl+Z)

Redo(快捷鍵ctrl+Y)

對應查詢選單功能

Search(快捷鍵ctrl+F)           在當前開啟的檔案中查詢

Search Backward(快捷鍵F3)        在當前游標位置進行向後查詢

Search Forward(快捷鍵F4)         在當前游標位置進行向前查詢

Search Files(快捷鍵ctrl+shift+F) 在多檔案(Source Insight工程中)中查詢

Replace(快捷鍵ctrl+H)            在當前檔案中進行查詢和替代

對應於視窗功能,與普通的多文件編輯器相同,用來設定開啟多個檔案時視窗顯示方式和規則。

用來設定Project視窗、Context視窗、Relation視窗和Clip視窗的顯示或關閉。當快捷鍵點亮時,所對應的視窗顯示。

Jump To Definition(快捷鍵ctrl+=)    跳轉到當前游標所在位置的函式或變數的定義處(並開啟檔案)

Symbol Info                          彈出一個視窗來顯示當前游標位置的函式或變數的定義原型

Browse Project Symbols(快捷鍵F7)    在整個工程中查詢一個函式或變數的出現位置

Lookup Reference(快捷鍵ctrl+/)       建立一個Reference連結,所對應的連結處會出現一個連結標誌,通過連結標誌可以方便的進行函式的檢視。

Go To Previous Link       跳轉到前一個Reference連結(此功能必須先建立一個Reference連結)

Go To Next Link(shift+F9)  跳轉到前一個Reference連結(同上)

Go Back(Alt+))            游標調轉到前一個歷史操作位置

Go Forward(Alt+.)         游標調轉到後一個歷史操作位置

Go To Line(F5)            跳轉到指定的行位置

Bookmark(ctrl+M)          書籤

幫助功能

 

二、Source Insight的使用

1、建立工程

Source Insight的強大功能是通過它的工程管理來實現的,為了有效的閱讀源程式,我們首先應建立一個功能。

選擇 “Project”選單下的子選單“New Project”新建一個工程,輸入要建立的工程名後會彈出如下視窗:

這是一個工程設定視窗,Source Insight中有許多預設的設定,比如變數和函式的顯示方式和顏色以及標頭檔案的顯示方式和顏色等,習慣性的設定對我們閱讀原始碼大有好處,所以通常我們選擇預設方式即可。工程的存放位置我們可以直接輸入全路徑。

點選OK按鈕會彈出如下視窗:

在我們新建工程以後,Source Insight 要求我們為所建的工程新增檔案(如上圖所示),我們可以通過這個視窗來為工程增加檔案(當然也可以刪除檔案)。

其中Add All可以把我們在File Name中所顯示的檔案全部加入到工程中去。在這個對話方塊裡,可以選擇將要閱讀的檔案加入工程,一種方式是通過在File Name中輸入要閱讀原始碼檔案的名稱,點選“Add”按鈕將其加入,也可以通過其中“Add All”和“Add Tree”兩個按鈕可以將選中目錄的所有檔案加入到工程中,其中“Add All”選項會提示加入頂層檔案和遞迴加入所有檔案兩種方式,而“Add Tree”相當於“Add All”選項的遞迴加入所有檔案,它採用了部分開啟檔案的方式,沒有用到的檔案不會開啟,所以,加入數千個檔案也不用擔心加入的檔案超出程式的所能容忍的最大值。具體用那種方式來新增檔案可以根據具體情況選用這些選項。

需要注意的中,File Name框中顯示的只是Source Insight所能支援的檔案(.c  .cpp  .h等),對於ASM程式和其它檔案將不會顯示。我們可以通過Show only known document types這一選項來選擇顯示其它型別的檔案。

 

2、認識工程和檔案的閱讀

當我們建立好工程檔案後,我們就可以通過工程視窗來檢視我們工程中所新增的檔案,如下圖所示:

其中視窗左邊顯示的就是工程視窗,我們可以通過工具欄來顯示和隱藏工程視窗。工程視窗標題為我們建立或開啟的工程檔名,工程視窗通過列表框顯示了我們工程中包含的全部檔案以及一些相關資訊(檔案路徑、大小、修改日期),當我們需要閱讀某個檔案時,我們可以在工程視窗中選擇這個檔案,通過雙擊這個檔案可以出現檔案視窗,如下圖所示:

在這裡,我開啟了工程的檔案bio.c,相應的右邊彈出了檔案視窗,我們可以通過這個視窗來進行源程式的閱讀。檔案視窗分兩部分,一部分為源程式的文字顯示,另一部分為開啟的源程式的結構和變數函式資訊,通過這個視窗,我們可以方便的觀察源程式的結構以及定位該程式中所用到的變數和函式。對於Source Insight所支援的檔案(C程式和C++程式),Source Insight可以快速的對源程式結構以及源程式中出現的變數、函式進行分析,並且用不同的圖示來表示,如用:

表示巨集定義,如標頭檔案、條件編譯命令等。

表示變數

表示函式

同時,源程式的文字用不同的顏色來顯示,表示程式碼的不同意義。其中預設註釋為藍色顯示,變數和函式用深藍色顯示,標頭檔案用黃色表示等。這些顯示規則我們可以通過設定選單來改變,不過建議大家不要修改這些屬性,這樣便於大家的源程式互相閱讀。

 

3、函式和變數的原型定位

在我們進行源程式閱讀時,經常會要檢視一個函式和變數的定義原型(也就是說這個函式或變數在那定義的?如何定義的?),在Source Insight中我們可以方便快速的定位函式或變數的原型。

(a)通過Jump To Definition來定位

用Jump To Definition來定位函式或變數原型時,有兩種方法,第一種方法我們將當前游標放在我們要查詢的函式或變數上,點滑鼠右鍵,選擇Jump To Definition;第二種方法我們可以通過工具欄上的按鈕來選擇 Jump To Definition功能(這時游標放在我們要查詢的函式或變數上)。當然我們也可以通過快捷鍵來選擇這一功能。如圖所示:

在這裡,我需要查詢INTLOCK()函式的原形宣告,我將游標放在INTLOCK()上,點右鍵選擇Jump To Definition,出現如下視窗:

這時Source Insight快速找到了這個函式的定義語句,並開啟包含這條語句的檔案(這個檔名在主視窗中可以看到:Comdef.h),並且選中了這個函式定義語句。

(b)通過Context視窗來顯示

Source Insight提供一個快速檢視視窗Context,通過這個視窗,我們也可以快速檢視函式或變數的原形定義。

如圖所示:

和上例相同,我們要查INTLOCK()這個函式的原形,我們首先要開啟Context視窗,通過工具欄的按鈕來開啟Context視窗,在檔案視窗中,將游標位置放在INTLOCK()上,很快Context視窗就會顯示這個函式的原形定義,此時Context視窗的標題為我們要查詢的函式INTLOCK()。這個功能使用起來非常方便。

 

4、Reference功能

在我們閱讀一個大的專案原始碼時,可能會遇到許多的源程式,但我們通常只專案中的一個部分,但這些部分可能會出現在許多源程式之間。過去我們只有通過檢視所有的源程式來查詢我們關心的那部分程式碼,現在我們可以通過Source Insight的Reference功能來實現。

Reference功能是Source Insight的特色之一,它可以在速度極快的在整個工程中找到所有的標記,並且在該行程式的前邊加上紅色箭頭的小按鈕連結上。如下圖所示:

在這裡我要查詢bio_set_sw()這個函式在我的工程中有那些檔案呼叫了這個函式,將游標放在bio_set_sw()這個函式上,點選工具欄上的 Search Files 在多個檔案中查詢或直接點Reference按鈕,會彈出上面的視窗,視窗是Reference在整個工程中的搜尋結果,我們可以看出,這個函式在我的工程中呼叫或引用了12次,並且顯示了這些呼叫的語句,這給我們節省了大量時間。如果我們還要更進一步的看這個函式在每個檔案中引用的上下文時,我們可以點選來開啟相應的檔案,如下圖所示:

通過點選我們展開了Reference,開啟了一個引用這個函式的檔案,我們就可以觀察這個函式引用的上下文了。當我們看完後還要檢視別的檔案時,我們可以繼續點選來收起Reference,這時又回到了上個視窗的介面,通過Reference我們可以更好的閱讀源程式。

相關文章