• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            笑看風(fēng)云淡

            寵辱不驚,看庭前花開花落;去留無(wú)意,望天空云卷云舒
            posts - 96, comments - 48, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 ::  :: 聚合  :: 管理

            配置SourceInsight

            Posted on 2008-03-24 17:17 天之驕子 閱讀(21932) 評(píng)論(0)  編輯 收藏 引用

            Source Insight實(shí)質(zhì)上是一個(gè)支持多種開發(fā)語(yǔ)言(java,c ,c++等等)的編輯器,只不過由于其查找、定位、彩色顯示等功能的強(qiáng)大,常被我們當(dāng)成源代碼閱讀工具使用。

            所以,為了有效的閱讀源程序,首先必須選擇功能菜單上的 Project”選項(xiàng)的子菜單“New Project”新建一個(gè)項(xiàng)目,項(xiàng)目名稱可以自由選定,當(dāng)然也可以選擇刪除(Remove)一個(gè)項(xiàng)目。當(dāng)刪除一個(gè)項(xiàng)目的時(shí)候,并不刪除原有的源代碼文件,只是將該軟件生成的那些工程輔助文件刪除。設(shè)定之后,將會(huì)彈出一個(gè)對(duì)話框如圖1,接受默認(rèn)選擇,如果,硬盤空間足夠,可以將第一個(gè)復(fù)選框選上,該選項(xiàng)將會(huì)需要與源代碼大致同等的空間來(lái)建立一個(gè)本地?cái)?shù)據(jù)庫(kù)以加快查找的速度。

            images for article about Source Insight on 2006-2-26

             

            1 工程設(shè)置

            點(diǎn)擊“OK”按鈕,接受選擇后,將會(huì)有一個(gè)新的對(duì)話框彈出,在這個(gè)對(duì)話框里,可以選擇將要閱讀的文件加入工程,通過直接在頂部文本框輸入盤符、回車、來(lái)切換各個(gè)盤。一種文件加入工程的方式是通過在File Name中輸入要閱讀源代碼文件的名稱,點(diǎn)擊“Add”按鈕將其加入;另一種方式是鼠標(biāo)點(diǎn)選。可通過其中“Add All”和“Add Tree”兩個(gè)按鈕可以將選中目錄的所有文件加入到工程中,其中“Add All”選項(xiàng)會(huì)提示只加入目錄下本層文件和遞歸加入所有子目錄文件兩種方式,而“Add Tree”相當(dāng)于“Add All”選項(xiàng)的遞歸加入所有文件,可以根據(jù)需要使用。由于該程序采用了部分打開文件的方式,沒有用到的文件不會(huì)打開,所以,加入數(shù)千個(gè)文件也不用擔(dān)心加入的文件超出程序的所能容忍的最大值。

            建立項(xiàng)目后,可以在右邊項(xiàng)目窗口中、右鍵選擇New Files新建文件(文件名會(huì)全部轉(zhuǎn)為小寫)、Add and Remove Files添加項(xiàng)目文件、Synchronize Files同步文件(即相當(dāng)于增強(qiáng)版的刷新/refresh)。

            images for article about Source Insight on 2006-2-26

             

            2 添加文件

            加入文件后,點(diǎn)擊Close,可以出現(xiàn)使用界面,如圖3所示,其中,右邊的那個(gè)窗口(Linux Project,即工程窗口)缺省按照字母順序列出當(dāng)前工程中所有的文件。

             

            images for article about Source Insight on 2006-2-26

            3 工作窗口

            右邊的窗口(Linux Project)下邊有一排按鈕、從左至右分別為:按字母順序文件列表、顯示文件夾、按照文件類型歸類文件、全部文件的所有標(biāo)記列表、按照標(biāo)記類型歸類標(biāo)記、跳轉(zhuǎn)到定義處、顯示標(biāo)記信息、瀏覽工程標(biāo)記、查找函數(shù)調(diào)用、工程屬性,其中全部文件的所有標(biāo)記列表選項(xiàng)可能要一段時(shí)間抽取標(biāo)記,同步到數(shù)據(jù)庫(kù)去,如果開始選擇了建立標(biāo)記數(shù)據(jù)庫(kù),將會(huì)在今后節(jié)省同步時(shí)間,最有用的莫過于瀏覽標(biāo)記信息和查找函數(shù)調(diào)用,前者可以通過“Jump”按鈕在不同的地方查找同樣的標(biāo)志,還可以通過“Reference”按鈕結(jié)合后者進(jìn)行全局的標(biāo)記查找。下面我們打開一個(gè)文件,簡(jiǎn)單介紹一下Reference功能。

            雙擊一個(gè)文件就可以打開該文件,顯示如圖4所示

             

            images for article about Source Insight on 2006-2-26

            4

             

            左邊的窗口(21142.c)下面也有一排按鈕、從左至右分別為:按字母順序排列所有標(biāo)記、按照文件中行數(shù)順序排列標(biāo)記、按照類型排列標(biāo)記、瀏覽本地文件標(biāo)記、標(biāo)記窗口屬性。

            Reference功能是Source Insight的特色之一,它可以在速度極快的在整個(gè)工程中找到所有的標(biāo)記,并且在該行程序的前邊加上紅色箭頭的小按鈕鏈接上。圖5是一個(gè)Reference搜索后的結(jié)果,它可以有兩種模式,一種集中顯示結(jié)果,圖5顯示的就是這種模式,在這種模式下,可以通過前邊的紅色箭頭小按鈕進(jìn)入另外一種模式,該標(biāo)記的具體的所在處,也可以通過標(biāo)記的具體所在處點(diǎn)擊紅色箭頭小按鈕進(jìn)入警種模式,還可以通過工具條上的兩個(gè)紅色小箭頭直接在第二種模式下前后移動(dòng),察看相應(yīng)信息。它的這個(gè)強(qiáng)大的功能使得閱讀Linux源程序有如神助。但是要注意的是,當(dāng)進(jìn)行了第二次“Reference”時(shí),它會(huì)提示你將結(jié)果集附加在第一個(gè)結(jié)果集的后邊還是取代第一個(gè)結(jié)果集。如果選擇前者,不能對(duì)結(jié)果集根據(jù)前后兩次搜索結(jié)果進(jìn)行分類,然后在其子類里進(jìn)行移動(dòng),只能在整個(gè)結(jié)果集里移動(dòng);如果,選擇后者,結(jié)果集將會(huì)被替換為第二次搜索的結(jié)果,略微有些不方便。

             

            images for article about Source Insight on 2006-2-26

            圖5 Reference的搜索結(jié)果

            當(dāng)然,Source Insight 還提供了一些其他常見的便利。比如:右鍵菜單幾乎包含了程序的所有功能,可以在編輯窗口為程序加上行號(hào),還可以統(tǒng)計(jì)整個(gè)工程的程序行數(shù),當(dāng)然還有功能強(qiáng)大卻用不上的自動(dòng)完成功能。

            配置成簡(jiǎn)單好用的c/java代碼編輯器

            1、縮進(jìn)與tab

            1Options菜單àPreferencesàTyping卡,勾掉下面兩項(xiàng)∶

            Typing tab indents lineregardless of selection,空行按tab無(wú)法前進(jìn)

            Typing tab replaces current selection,選定部分內(nèi)容、再按tab時(shí)會(huì)清除所選

            2Options菜單àDocument Options(針對(duì)不同文件類型,分別進(jìn)行設(shè)置)à下拉左上文件類型框、選擇合適類型(c源文件)àEditing Options框中,tab width=2à Editing Options框中,勾選Expand tabs(這樣,按tab鍵、等價(jià)于輸入2個(gè)空格)

            3Options菜單àDocument Optionsà選擇合適的文件類型à點(diǎn)擊右邊中間的Auto Indentà在彈出的框中,左邊一定要點(diǎn)Smart,右邊有兩個(gè)復(fù)選框Indent Open BraceIndent Close Brace,具體效果可以看SISHELP。按照部門里的編程風(fēng)格要求,最方便的就是把兩個(gè)復(fù)選框都取消掉,然后點(diǎn)OK

            勾選Auto IndentSMART的效果∶在C程序里, 如果遇到行末沒有分號(hào)的語(yǔ)句,IF, WHILE, SWITCH, 寫到該行末按回車,則新行自動(dòng)相對(duì)上一行縮進(jìn)兩列。

            勾掉Indent Open BraceIndent Close Brace的效果∶繼上一段,在相對(duì)縮進(jìn)行里, 如果輸入"}", 則自動(dòng)和上一行列對(duì)齊(好像勾不勾都會(huì)有這個(gè)功能);而輸入"{"時(shí),不會(huì)與下面的行對(duì)齊(這是勾上Indent Open Brace時(shí)的效果)。

            2、向項(xiàng)目中添加文件時(shí),只添加特定類型的文件(文件類型過濾器)

            有個(gè)同事比較生猛,得整匯編代碼,但在SIS里建立PROJECTADD TREE的時(shí)候,根據(jù)默認(rèn)設(shè)置并不會(huì)把該TREE里面所有匯編文件都包含進(jìn)來(lái),只加了.inc.asm后綴的,.s后綴的沒有。而且用SIS打開.s的文件,一片黑白沒有色彩,感覺回到DOSEDIT時(shí)代了…… 解決方法是在Options->Document Options里面,點(diǎn)左上的Document Type下拉菜單,選擇x86 Asm Source File,然后在右邊的File filter*.asm*.inc的后面加上*.s;接著CLOSE就可以了。上面兩個(gè)問題解決了,但注意加入*.s后還需要重新ADD TREE一遍才能把這些匯編加到PROJECT里面。

            3、去掉功能強(qiáng)大但是無(wú)用的自動(dòng)完成功能

            Options菜單àPreferences àTypingàAuto Completion框,勾掉Use automatic symbol completion window(這里是SIS的全局設(shè)置)

            Options菜單àDocument OptionsàEditing Options框中,勾掉Allow auto-complete(局部設(shè)置)

            上面兩項(xiàng)必須全部勾選,才能啟用Auto Completion功能

            4、恢復(fù)小鍵盤的“+-*/”功能

            Options菜單àKey assignments,通過關(guān)鍵詞Scroll 找到Scroll Half Page Up,取消小鍵盤/;通過關(guān)鍵詞Scroll 找到Scroll Half Page Down取消小鍵盤*;通過關(guān)鍵詞Function找到Function Up,取消小鍵盤-,通過關(guān)鍵詞Function找到Function down,取消小鍵盤+

            5、恢復(fù)ctrl+a的全選功能

            通過關(guān)鍵詞save 找到save all,更改為ctrl+shift+a,通過關(guān)鍵詞select找到select all 更改為ctrl +a

            6、解決字符等寬對(duì)齊問題。

            SIS默認(rèn)字體是VERDANA,很漂亮。這網(wǎng)頁(yè)上應(yīng)該也是用的VERDANA字體。但由于美觀的緣故,VERDANA字體是不等寬的。比如下面兩行

            llllllllll

            MMMMMMMMMM

            同樣10個(gè)字符,長(zhǎng)度差多了.VERDANA來(lái)看程序,有些本應(yīng)該對(duì)齊的就歪了。解放方法是使用等寬的字體,但肯定比較丑。可以用DOS字體,也就是記事本里的默認(rèn)字體sysfixed 很丑,要有心理準(zhǔn)備。比較推薦的是用Courier New

            SourceInsight提供的功能

            1、解析日志信息時(shí)非常有用的Source Link

            總地說來(lái),SourceLink根據(jù)特定的搜索模式,把當(dāng)前文件中滿足模式的行、鏈接到由該行指定的其他源文件中。

            所謂特定的搜索模式,共有兩種“File, then line”和“Line, then file”,其中前后兩部分依靠正則表達(dá)式的組的概念來(lái)予以分割。如果當(dāng)前文件具有匹配行,比如“Error d:tcsrcq5.c 18: Lvalue required in function jsSort”,那么SourceInsight在該行創(chuàng)建SourceLink、把該行鏈接到由該行指定的文件中(即d:tcsrcq5.c,第18行)。

            1.1 創(chuàng)建SourceLink

            運(yùn)行Search菜單的Parse Source Links…命令,在彈出的框中、選擇搜索模式、并填入相應(yīng)的正則表達(dá)式串,點(diǎn)OKSIS就會(huì)解析當(dāng)前文件,如果有匹配,就創(chuàng)建SourceLink

            1.2 在解析日志信息時(shí),使用SourceLink

            可以打開日志信息,運(yùn)行Parse Source Links命令,日志中能夠匹配模式的每一行(通常是含有錯(cuò)誤信息的行)、就會(huì)被設(shè)置上一個(gè)SourceLink

            1.3在解析自定義命令輸出時(shí),使用SourceLink

            首先勾選Custom Command 中的“Parse Links in Output”,然后選擇特定的搜索模式,最后填入合適的正則表達(dá)式。這樣,Source Insight把輸出信息作為當(dāng)前搜索用文件;并且,如果有匹配行(通常即編譯錯(cuò)誤信息行),SIS 該行創(chuàng)建SourceLink、并把每一個(gè)錯(cuò)誤信息中給定的文件(和行號(hào))作為link目的地,這對(duì)于我們修改源代碼錯(cuò)誤非常有幫助。

            2、替換(Replace VS 上下文敏感的智能重命名(Context-Sensitive Smart Rename

            2.1 替換(Replace

            目前來(lái)說,普通的替換命令、快捷鍵為ctrl+H,足以已滿足工作要求。

            在彈出的替換窗口中,在Search框中勾選Selection來(lái)只在所選文本區(qū)域中替換(當(dāng)然這時(shí)你要先選定區(qū)域然后再按ctrl+H)、勾選WholeFile來(lái)在整個(gè)當(dāng)前文件內(nèi)替換、兩者都不勾選來(lái)從當(dāng)前光標(biāo)處替換至文件末尾;點(diǎn)右邊的Files…按鈕,可選擇替換多個(gè)文件的內(nèi)容。

            2.2上下文敏感的智能重命名(Context-Sensitive Smart Rename

            Smart Rename命令、快捷鍵是Ctrl+’,是上下文敏感的全局搜索替換。它可以智能地重命名全部項(xiàng)目文件中的一個(gè)標(biāo)示符。SourceInsight的搜索索引(search index)使得搜索過程進(jìn)行地非常快。而且,使用Smart Rename所做的替換會(huì)被記錄在Search Results窗口中,每一條替換記錄旁有一個(gè)SourceLink鏈接到替換發(fā)生地文件。

            Smart Rename可以用來(lái)重命名標(biāo)記(symbol)。如果勾選了Smart Reference Matching選項(xiàng),Smart Rename就只在正確的上下文范圍內(nèi)進(jìn)行重命名。它可以智能地重命名全部項(xiàng)目文件中的一個(gè)標(biāo)示符;它可以重命名函數(shù)本地變量,類或結(jié)構(gòu)體成員、函數(shù)。

            在彈出的Smart Rename窗口中有下面幾項(xiàng)∶

            Old Name 填舊名稱。光標(biāo)下的詞會(huì)被自動(dòng)加載;光標(biāo)的位置非常重要,這是因?yàn)?/span>Source Insight會(huì)根據(jù)本地上下文背景、準(zhǔn)確地確定你想要重命名哪一個(gè)標(biāo)記。

            推薦只填單個(gè)詞、而不是字符串。

            如果你在命名成員變量、或本地變量(),Old Name框中會(huì)顯示完全標(biāo)記名、即上層容器名+標(biāo)記名。例如,框中的“DocDraw.paintStruc”代表DocDraw是函數(shù)名,paintStruc是函數(shù)的本地成員變量。

            New Name 填新名稱。只填標(biāo)記名,不填上層容器名。

            Output Search Results 如果勾選,搜索替換結(jié)果日志會(huì)被輸出到Search Results窗口中。可以通過Windows菜單來(lái)切換,或ctrl+tab切換察看。并且每一條記錄旁會(huì)有SourceLink鏈接到替換發(fā)生地文件。

            Confirm Each Replacement 每次替換詢問。

            Skip Comments 不重名注釋部分。

             

            【使用心得列表】

            (1)如何用Smart Rename重命名數(shù)組的數(shù)組名?如果只選取數(shù)組名,會(huì)報(bào)錯(cuò)!

            (2)如果勾掉Smart Reference Matching,會(huì)搜索全部項(xiàng)目文件,并且Old Name框中不顯示完全限定名;如果勾選Smart Reference Matching,無(wú)法重命名數(shù)組名,而且鼠標(biāo)位置不正確時(shí)會(huì)報(bào)錯(cuò)。應(yīng)該如何應(yīng)對(duì)?

            3、在SourceInsight中提供的正則表達(dá)式

            3.1SourceInsight中提供的正則表達(dá)式

            正則表達(dá)式,是用來(lái)匹配復(fù)雜模式的特殊搜索用字符串。正則表達(dá)式串中,許多字符具有特殊的含義。例如,有個(gè)特殊的字符代表 行首

            下面是SourceInsight提供的所有可用特殊字符∶

            Table 4.3: Regular Expression Characters

            Character

            Matches

            ^ (at the beginning only)

            beginning of line。如^Hello,匹配Hello在句首。

            .

            any single character

            [abc]

            any single character that belongs to the set abc

            [^abc]

            any single character that does not belong to the set abc

            *

            zero or more occurrences of the preceding character

            +

            one or more occurrences of the preceding character

            t

            a tab character

            s

            a space character

            w

            white space (a tab or a space character)

            $

            the end of the line。如TRUE$,匹配TRUE在句尾。

            轉(zhuǎn)義字符。如果在它后面有元字符,取消其特殊含義。

             

            可利用 “(” “)”、把正則表達(dá)式分割成不同的;模式中的每個(gè)組自左向右指定為 Group #nn=1,2,…組的概念在替換時(shí)很有用。

            例如∶

            abc(xyz)可匹配abcxyz,其中xyz被認(rèn)為是group#1

            利用21來(lái)替換(abc)(xyz),替換結(jié)果為xyzabc

            3.2 正則表達(dá)式在配置tc編譯器中的應(yīng)用∶

            正則表達(dá)式格式與源代碼文件路徑相對(duì)應(yīng),這里我的tc安裝目錄為d:tctc源文件放在d:tcsrc下,并命名為qn.cqtn.c(其中n=1,2,…)。

            觀察Tc編譯器某一次輸出錯(cuò)誤信息的格式∶

            Error d:tcsrcq5.c 18: Lvalue required in function jsSort

            則我們要匹配“d:tcsrcq5.c 18”部分,進(jìn)一步地,按照SourceInsight捕捉輸出并加以解析時(shí)的要求,要以組的形式、分別匹配“d:tcsrcq5.c 18”中的文件部分和行號(hào)部分∶

            行號(hào)([1-9][0-9]*)

            空格行號(hào)s([1-9][0-9]*)

            文件名(d:tcsrc[qQ][tT][1-9][0-9]*.[cC])

            全部加起來(lái)為∶

            (d:tcsrc[qQ][tT]*[1-9][0-9]*.[cC])s([1-9][0-9]*)

             

            3.3 正則表達(dá)式在配置javac編譯器中的應(yīng)用∶

            我的JAVA_HOMEc:jdk,我的java源文件放于d:javasrc中,并命名為qn.javaqtn.java(其中n=1,2,…)。

            觀察JDK編譯器某一次輸出錯(cuò)誤信息的格式∶

            D:javasrcQ3.java:3: ';' expected

            正則表達(dá)式為∶

            ([dD]:javasrc[qQ][tT]*[1-9][0-9]*.java):([1-9][0-9]*)

             

            4、自定義命令

            自定義命令與項(xiàng)目相關(guān),在一個(gè)項(xiàng)目中定義的所有自定義命令屬于該項(xiàng)目、只對(duì)該項(xiàng)目有效(包括快捷鍵等)。

            自定義命令類似于命令行批處理文件。SIS允許自定義命令在后臺(tái)運(yùn)行;并可以捕捉自定義命令的輸出、放置于文件中、或粘貼入當(dāng)前光標(biāo)插入點(diǎn)。

            分別利用上面SIS對(duì)輸出信息的處理方式,自定義命令對(duì)集成編譯器相當(dāng)有用,可以捕捉編譯器輸出并創(chuàng)建SourceLink尋錯(cuò);自定義命令對(duì)于文本過濾也相當(dāng)有用,可選中待過濾區(qū)塊、運(yùn)行Sort自定義命令、粘貼回選定區(qū)塊、即完成文本過濾。

            請(qǐng)按下面步驟創(chuàng)建自定義命令∶

            Options菜單àCustom Command

            à點(diǎn)右邊Add鈕、填入新自定義命令名稱,或下拉左邊Commands、選擇命令進(jìn)行修改

            àRun框、填入待執(zhí)行命令行,可含有特殊元字符,見后面的元字符表

            àDir框、執(zhí)行命令行時(shí)應(yīng)處的目錄,如不填,以源代碼文件所在目錄為命令執(zhí)行目錄

            à勾選Output框的Capture Output、輸出被捕捉,如果勾選Paste Output,輸出被粘貼

            à勾選Control Group框中的Save Files FirstSIS會(huì)在運(yùn)行命令前先檢查文件是否保存

            à勾選Control Group框中的Pause When DoneSIS會(huì)在命令結(jié)束后暫停、方便檢查

            à勾選Source Links in Output框中的Parse Source Links,?/p>


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久婷婷人人澡人人| 99久久精品国内| 国产精品久久久久乳精品爆| 国产福利电影一区二区三区久久老子无码午夜伦不 | 亚洲国产成人久久综合一| 久久久久亚洲AV无码专区桃色 | av色综合久久天堂av色综合在| 久久久久se色偷偷亚洲精品av| 99久久无码一区人妻a黑| 久久93精品国产91久久综合| 久久久久久无码Av成人影院 | 午夜精品久久久久久久无码| 国产精品久久久久久福利漫画| AA级片免费看视频久久| 国产亚洲精久久久久久无码77777 国产亚洲精品久久久久秋霞 | 久久97久久97精品免视看秋霞| 无码任你躁久久久久久老妇App| 91精品国产乱码久久久久久| 日本加勒比久久精品| 久久亚洲精品无码AV红樱桃| 亚洲天堂久久久| 久久人妻少妇嫩草AV蜜桃| 久久天天躁狠狠躁夜夜躁2O2O| 四虎久久影院| 热综合一本伊人久久精品| 色综合久久久久网| 欧美精品一本久久男人的天堂| 性做久久久久久久久浪潮| 久久99精品久久久久久野外 | 国产成人久久精品二区三区| 久久亚洲精品无码AV红樱桃| 亚洲欧美成人综合久久久| 中文国产成人精品久久不卡| 精品多毛少妇人妻AV免费久久| 精品国产福利久久久| 久久九九久精品国产免费直播| 久久精品国产一区二区| 国产成人精品久久一区二区三区av| 精品熟女少妇a∨免费久久| 久久99国产精品尤物| 久久er99热精品一区二区|