已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
碩士學(xué)位論文 (專業(yè)學(xué)位)整合入開發(fā)過程的靜態(tài)分析工具的設(shè)計(jì)和實(shí)現(xiàn) A in 2014 of 學(xué)位論文版權(quán)使用授權(quán)書 本人完全了解同濟(jì)大學(xué)關(guān)于收集、保存、使用學(xué)位論文的規(guī)定,同意如下各項(xiàng)內(nèi)容:按照學(xué)校要求提交學(xué)位論文的印刷本和電子版本;學(xué)校有權(quán)保存 學(xué)位論文的印刷本和電子版,并采用影印、縮印、掃描、數(shù)字化或其它手段保存論文;學(xué)校有權(quán)提供目錄檢索以及提供本學(xué)位論文全文或者部分的閱覽服務(wù);學(xué)校有權(quán)按有關(guān)規(guī)定向國家有關(guān)部門或者機(jī)構(gòu)送交論文的復(fù)印件和電子版;在不以贏利為目的的前提下,學(xué)??梢赃m當(dāng)復(fù)制論文的部分或全部內(nèi)容用于學(xué)術(shù)活動(dòng)。 學(xué)位論文作者簽名: 年 月 日 同濟(jì)大學(xué)學(xué)位論文原創(chuàng)性聲明 本人鄭重聲明:所呈交的學(xué)位論文 ,是本人在導(dǎo)師指導(dǎo)下,進(jìn)行研究工作所取得的成果。除文中已經(jīng)注明引用的內(nèi)容外,本學(xué)位論文的研究成果不包含任何他人創(chuàng)作的、已公開發(fā)表或者沒有公開發(fā)表的作品的內(nèi)容。對(duì)本論文所涉及的研究工作做出貢獻(xiàn)的其他個(gè)人和集體,均已在文中以明確方式標(biāo)明。本學(xué)位論文原創(chuàng)性聲明的法律責(zé)任由本人承擔(dān)。 學(xué)位論文作者簽名: 年 月 日同濟(jì)大學(xué) 碩 /博士學(xué)位論文 摘要 I 摘要 本文針對(duì)航天星載軟件的技術(shù)現(xiàn)狀,開發(fā)了 一套與開發(fā)環(huán)境整合的 言代碼靜態(tài)分析和度量軟件。研究 碼的特點(diǎn),對(duì)編譯器生成的 信息文件進(jìn)行格式分析,提煉可用信息,再使用詞法分析工具獲得源代碼的程序結(jié)構(gòu),并提煉源代碼扇入扇出,圈復(fù)雜度信息。通過與 命令行接口和共享文件傳遞源代碼的這些靜態(tài)分析和度量數(shù)據(jù), 發(fā)平臺(tái)將這些數(shù)據(jù)與源代碼同列顯示,為開發(fā)者提供代碼質(zhì)量的靜態(tài)分析結(jié)果,以便開發(fā)者及時(shí)糾正代碼中的不恰當(dāng)處,提高軟件開發(fā)效率和可靠性。 在實(shí)現(xiàn)方法上,系統(tǒng)開發(fā)采 用 g+編 譯工具,以 開源的詞法分析工具進(jìn)行輔助 ,完成了 對(duì)星 載嵌入式軟件 代碼的靜態(tài)分析和度量和結(jié)果顯示 。 關(guān)鍵字: 言,靜態(tài)分析和度量, 信息,詞法分析, 發(fā)平臺(tái)I n an da da da to of DE a of in of 信息 ty so to On g+ da 碩 /博士學(xué)位論文 目錄 錄 第 1 章 引言 . 5 題的提出 . 5 文研究內(nèi)容和組織結(jié)構(gòu) . 6 究內(nèi)容 . 6 織結(jié)構(gòu) . 6 第 2 章 嵌靜態(tài)分析和度量工具開發(fā)環(huán)境和相關(guān)技術(shù) . 8 言介紹 . 8 述 . 8 言特點(diǎn) . 9 統(tǒng)開發(fā)環(huán)境 . 10 g+ . 10 介 . 11 發(fā)系統(tǒng)的相關(guān)技術(shù) . 12 信息文件介紹 . 12 法分析技術(shù) . 14 態(tài)分析和度量技術(shù)現(xiàn)狀 . 15 結(jié) . 16 第 3 章 嵌靜態(tài)分析和度量工具需求分析 . 17 嵌靜態(tài)分析和度量工具需求分析 . 17 結(jié) . 19 第 4 章 嵌靜態(tài)分析和度量工具系統(tǒng)設(shè)計(jì) . 20 統(tǒng)設(shè)計(jì)思路 . 20 統(tǒng)體系結(jié)構(gòu)設(shè)計(jì) . 21 統(tǒng)模塊設(shè)計(jì) . 25 信息文件讀取 . 25 信息信息分析 . 28 法分析初始化 . 29 法分析 . 29 行語句模塊劃分 . 30 行路徑分析 . 31 取子程序調(diào)用信息 . 32 立子程序調(diào)用關(guān)系圖 . 33 錯(cuò)處理 . 33 口設(shè)計(jì) . 34 結(jié) . 35 第 5 章 嵌靜態(tài)分析和度量工具的 編程實(shí)現(xiàn) . 36 據(jù)流 設(shè)計(jì) . 36 據(jù)結(jié)構(gòu)設(shè)計(jì) . 43 寫系統(tǒng)所需的類 . 44 寫與 訊代碼 . 52 同濟(jì)大學(xué) 碩 /博士學(xué)位論文 目錄 結(jié) . 53 第 6 章 嵌靜態(tài)分析和度量工具的 測(cè)試 . 54 試環(huán)境 . 54 試內(nèi)容和測(cè)試結(jié)果 . 55 第 7 章 總結(jié)和展望 . 58 論 . 58 一步工作的方向 . 58 參考文獻(xiàn) . 59 致謝 . 錯(cuò)誤 !未定義書簽。 個(gè)人簡歷、在讀期間發(fā)表的學(xué)術(shù)論文與研究成果 . 錯(cuò)誤 !未定義書簽。 同濟(jì)大學(xué) 碩 /博士學(xué)位論文 整合入開發(fā)過程的靜態(tài)分析工具的設(shè)計(jì)和實(shí)現(xiàn) 5 第 1章 引言 題的提出 代碼中的 往是由于開發(fā)者忽略一些代碼缺陷而造成的,這些代碼缺陷可能是極其微小的錯(cuò)誤,以至于在程序的編譯期并未給出很好的錯(cuò)誤,從而導(dǎo)致這些代碼缺陷在程序的運(yùn)行期以某種非正常形式呈現(xiàn)出來。那么對(duì)于開發(fā) 這開說,這些微小的代碼缺陷,往往是很難跟蹤調(diào)試的,因此也為修復(fù)代碼帶來了很大困難。 星載軟件是衛(wèi)星工程的核心,星載軟件承擔(dān)了對(duì)整個(gè)衛(wèi)星功能的最終實(shí)現(xiàn),是整個(gè)衛(wèi)星的靈魂,一旦軟件出現(xiàn)錯(cuò)誤,后果直接導(dǎo)致衛(wèi)星功能的錯(cuò)誤,甚至關(guān)系到衛(wèi)星的在軌壽命。 隨著航天產(chǎn)業(yè)的發(fā)展,航天器的功能越來越強(qiáng)大,其控制航天器工作的星載軟 件也日益龐大,代碼量不斷增加,模塊數(shù)也從幾十個(gè)模塊增長為幾百,甚至幾千個(gè)模塊。最明顯的特征是早期的氣象衛(wèi)星 上用于存儲(chǔ)軟件的 小只有幾十 面還包含了數(shù)管和姿軌控軟件,而現(xiàn)在最新的氣象衛(wèi)星型號(hào) 的數(shù)管計(jì)算機(jī)的用 于存儲(chǔ)軟件的存儲(chǔ)器大小就達(dá)到了兆級(jí)別。 軟件規(guī)模的增加,勢(shì)必造成軟件 錯(cuò)綜復(fù)雜,不易發(fā)現(xiàn)。 在已研和在研星載軟件研制中,暴露了星載軟件的若干 代碼 問題,有些問題在半物理聯(lián)試、甚至是整星聯(lián)試中才得以發(fā)現(xiàn)。 有的問題在軌運(yùn)行狀態(tài)時(shí)才暴露出來,為衛(wèi)星正常工作帶來巨大的影響。 所以必須要在代碼開發(fā)階段就要發(fā)現(xiàn)部分代碼存在的潛在缺陷,并在開發(fā)階段就進(jìn)行修補(bǔ),防止這些潛在的缺陷由于不易暴露而持續(xù)到后續(xù)的各種研制階段中,甚至遺留到上天在軌運(yùn)行。 但是設(shè)計(jì)編碼階段的工具不具備對(duì)代碼的語法和語義的詳細(xì)信息,無 法鑒別出程序的圈復(fù)雜度等質(zhì)量數(shù)據(jù),因此不能及時(shí)將錯(cuò)誤信息反饋給星載軟件開發(fā)人員。 目前靜態(tài)分析和度量就可以對(duì)代碼進(jìn)行分析,以各種度量數(shù)值來反應(yīng)軟件代碼的質(zhì)量情況。這些質(zhì)量情況以模塊為單位,軟件開發(fā)人員可以根據(jù)這些度量數(shù)據(jù)對(duì)代碼進(jìn)行優(yōu)化設(shè)計(jì)和修改,提升代碼質(zhì)量,消除潛在缺陷 1。 我國多顆在軌運(yùn)行的衛(wèi)星的星載軟件都已成功采用 言, 言的模塊化程度高、可讀性好和調(diào)試方法方便對(duì)軟件開發(fā)人員來說也是提高軟件健壯性和質(zhì)量的堅(jiān)實(shí)基礎(chǔ)。隨著衛(wèi)星平臺(tái)處理任務(wù)的復(fù)雜度越來越高、型號(hào)研制周期的第 1 章 引言 6 縮短、 32 位 型號(hào)應(yīng)用, 言將會(huì)成為衛(wèi)星平臺(tái)主要使用的語言。 由于 言應(yīng)用面較少,其相關(guān)的工具較少,靜態(tài)分析和度量工具也較少,目前可用的 工具必須將代碼單獨(dú)導(dǎo)入分析,結(jié)果也單獨(dú)輸出,不能與代碼開發(fā)結(jié)合,其使用的方便性和簡便性,與開發(fā)的互動(dòng)性都交叉,無法及時(shí)有效的提醒開發(fā)者目前代碼的質(zhì)量問題,也就無法讓開發(fā)者及時(shí)在開發(fā)過程中進(jìn)行修改。不僅僅是 他工具 都是串行的方式進(jìn)行工作的,某一個(gè)工具發(fā)現(xiàn)了代碼的錯(cuò)誤,只能返回到開發(fā)工具里進(jìn)行修正,工作效率較低。而且這些工具與開發(fā)工具都是分離的,每個(gè) 工具都有自己獨(dú)立的界面,需要用大量的時(shí)間在這些工具之間切換,使用不方便。 因此分析 言的特點(diǎn),研究創(chuàng)建 一種與星載軟件開發(fā)環(huán)境整合的 一定實(shí)用價(jià)值。 文研究內(nèi)容和組織結(jié)構(gòu) 究內(nèi)容 本文對(duì)目前星載軟件開發(fā)的主要語言 言進(jìn)行分析,并結(jié)合星載軟件靜態(tài)分析和度量的具體需求,利用 言的庫信息文件的內(nèi)容,結(jié)合 載軟件提煉靜態(tài)分析和度量結(jié)果,并通過與接口,將結(jié)果通過 代碼整合顯示。 實(shí)現(xiàn)方法上 采用了 g+ 編譯平臺(tái),利用詞法分析軟件對(duì) 得代碼的各種信息,并計(jì)算,統(tǒng)計(jì)出代碼的各種質(zhì)量指標(biāo),通過參數(shù)和共享文件的方式與 訊。達(dá)到度量結(jié)果與代碼整合顯示在 織結(jié)構(gòu) 第 1 章 闡述 目前星載軟件提高軟件可靠性面臨的問題,給出了整合入代碼開發(fā)工具的靜態(tài)分析和度量的方案,介紹了度量工具對(duì)代碼質(zhì)量提高的作用,提出了該方案的可行性和實(shí)用性。 第 2 章 介紹了 嵌靜態(tài)分析和度量工具的相關(guān)技術(shù),介紹了 g+編譯系統(tǒng)的優(yōu)勢(shì),詞法分析工具的應(yīng)用和 信息文件格式和信息的提煉,介紹了與 訊的方法。 第 3 章對(duì) 嵌靜態(tài)分析和度量工具的需求分析,給出了靜態(tài)分析和度量工具的詳細(xì)需求。 第 4 章對(duì) 信息文件的信息提取,詞法分析結(jié)果分析、與 據(jù)交同濟(jì)大學(xué) 碩 /博士學(xué)位論文 整合入開發(fā)過程的靜態(tài)分析工具的設(shè)計(jì)和實(shí)現(xiàn) 7 互等各模塊的設(shè)計(jì)進(jìn)行闡述。 第 5 章 對(duì)各模塊功能的代碼實(shí)現(xiàn),軟件確認(rèn)測(cè)試結(jié)果,給出軟件實(shí)際運(yùn)行效果。 第 6 章 總結(jié)了全文的工作,概括了系統(tǒng)的特點(diǎn)和優(yōu)勢(shì),以及下一步的工作。 第 2 章 嵌靜態(tài)分析和度量工具開發(fā)環(huán)境和相關(guān)技術(shù) 8 第 2章 嵌靜態(tài)分析和度量工具 開發(fā)環(huán)境和相關(guān)技術(shù) 首先 闡述開發(fā)該工具所需要的開發(fā)環(huán)境和相關(guān)技術(shù),介紹 言的概況,開發(fā)工具 g+, 信息文件格式,詞法分析技術(shù)和目前靜態(tài)分析和度量的技術(shù)現(xiàn)狀。 言介紹 述 美國國防部在 20 世紀(jì) 80 年代早期主持發(fā)展的編程語言。當(dāng)時(shí)主要有兩個(gè)目的,第一是把 計(jì)成用于滿足大規(guī)模、高可靠性應(yīng)用軟件(特別是嵌入式實(shí)時(shí)系統(tǒng))的需要;第二是把 為美國國防部的通用編程語言。 在 20 世紀(jì) 80 年代中期, 成了國際標(biāo)準(zhǔn),然后在 20 世紀(jì) 90 年代中期進(jìn)行了修正,使之全力支持面向?qū)ο缶幊獭,F(xiàn)在一般稱前者為 者為 1987 年,美國國防部頒布了稱為“ 強(qiáng)制使用 命令,即要求所有的國防軟件必須用 現(xiàn)。 1997 年,美國國防部取消了“ 一年之后,五角大樓的官員就不僅解散了“美國國防部 作辦公室”( 而且還中斷了事實(shí)上所有用于 業(yè)發(fā)展的資金供給。 當(dāng)時(shí),軟件行業(yè)中很多人把這個(gè)事件看作是 言的末日來臨。但是現(xiàn)在一些專家認(rèn)為,美國國防部放棄對(duì) 支持貌似災(zāi)禍實(shí)為好事,理由是將來的 戶將單純從技術(shù)和商業(yè)的角度來看待 不用考慮太多政治上的原因。 事實(shí)上, 沒有消亡,仍然用于各種領(lǐng)域。 應(yīng)用范圍包括從硬實(shí)時(shí)的處理到商業(yè)化的桌面工具。其用戶包括小至初學(xué)者,大至公司,和遍及全世界的政府機(jī)構(gòu),私有機(jī)構(gòu)以及學(xué)術(shù)界等。 言已在安全性敏感的領(lǐng)域里顯示了其不一般的力量,尤其是在交通運(yùn)輸業(yè)中。波音公司的 777 飛機(jī)大量使用了 言,而且準(zhǔn)備在具有最高安全性適航證書級(jí)別( 和 B 級(jí))的軟件中繼續(xù)使用該語言。 地鐵中也有應(yīng)用,如倫敦 黎地鐵最近的延伸段;紐約地鐵的 ;同濟(jì)大學(xué) 碩 /博士學(xué)位論文 整合入開發(fā)過程的靜態(tài)分析工具的設(shè)計(jì)和實(shí)現(xiàn) 9 法國的高速火車( 歐洲、亞洲以及拉美的地鐵軌道系統(tǒng)。還有在商業(yè)船用控制中也有它的應(yīng)用。 其它領(lǐng)域像電視、娛樂業(yè)、醫(yī)學(xué)計(jì)算、通信網(wǎng)絡(luò)開關(guān)、金融和信息系統(tǒng)都得到了應(yīng)用。它也應(yīng)用于含有高安全性核反應(yīng)堆的工業(yè)控制中和桌面軟件中。當(dāng)然 往常一樣使用于美國和聯(lián)合國的軍事項(xiàng)目中。像 歐洲空間辦事處之類的非軍事政府機(jī)構(gòu)也使用 當(dāng)今世界和外層空間中有數(shù)億行的 代碼在使用 2。 言特點(diǎn) 言的重要特征就是其鍵入式風(fēng)格,模塊化 設(shè)計(jì),編譯檢查,平行處理, 異常處理及 泛型編程。 95 年加入了對(duì) 面向?qū)ο笤O(shè)計(jì)的支持,包括動(dòng)態(tài)分配等。 編譯檢查主要是針對(duì)沒有分配的內(nèi)存讀寫的保護(hù),堆棧溢出錯(cuò)誤,單個(gè)錯(cuò)誤空閑,隊(duì)列讀寫錯(cuò)誤以及其他可以避免的小問題。這些檢查可以在為增加效率的情況下被取消,但是在編譯的時(shí)候他們卻能帶來很高的效率。同樣它也包括對(duì)程序的嚴(yán)正的設(shè)置。因?yàn)檫@些原因,它被廣泛應(yīng)用于一些非常重要的系統(tǒng)中,例如航空電子學(xué),武器及航天飛行器的操作系統(tǒng)中。同樣它支持很多的 編譯時(shí)間檢查,這些檢查被用來避免一些錯(cuò)誤的發(fā)生。這種錯(cuò) 誤往往是在其他語言中在運(yùn)行以前都不能被察覺到的,需要在 源碼中加入特殊的檢查設(shè)置才能被發(fā)現(xiàn)。 動(dòng)態(tài)內(nèi)存管理非常安全和高規(guī)格,它類似于 言卻不同于 C 語言的。這種特殊功能并不需要特殊的運(yùn)行設(shè)置。盡管這種語言的語意結(jié)構(gòu)允許對(duì)于不能讀寫的目標(biāo)進(jìn)行自動(dòng)的碎片搜集,但是大多數(shù)運(yùn)行都不支持它。 A 支持有限形式基于區(qū)域的 存儲(chǔ)管理。無效的讀寫常在運(yùn)行時(shí)候被檢查出來(除非這種檢測(cè)被人為關(guān)閉)并且有時(shí)候在編譯時(shí)候就被發(fā)現(xiàn)。 言的定義同國際標(biāo)準(zhǔn)化組織( 標(biāo)準(zhǔn)有很大不同,因?yàn)樗且粋€(gè)自由內(nèi) 容形式的。這種做法的后果是被廣大程序員只能從它的標(biāo)準(zhǔn)化文檔(普遍認(rèn)為是 參考使用手冊(cè)( 尋找細(xì)節(jié)性的技術(shù)問題,但是普遍情況是一本標(biāo)準(zhǔn)教科書卻可以在其他不同語言上使用。 言由嚴(yán)格的巴斯特范式定義 ,但是不適合一般人閱讀 國軍用標(biāo)準(zhǔn)認(rèn)證的語言 . 其 編譯器經(jīng)過嚴(yán)格的審查 ,以確保同樣的代碼在任一編譯器上產(chǎn)生同樣的可執(zhí)行效果 并行性在代碼級(jí)可以在無操作系統(tǒng)下同樣運(yùn)行 . 言最初設(shè)計(jì)是為了構(gòu)建長周期的、高度可靠的軟件系統(tǒng)。它提供了一系列功能來定 義相關(guān)的 數(shù)據(jù)類型 (對(duì)象 (操作 (程序包( 程序包可以被參數(shù)化,數(shù)據(jù)類型可以被擴(kuò)展以支持可重用庫的構(gòu)建。操作既可以使用方便的順序控制結(jié)構(gòu),通過 子程序 (實(shí)現(xiàn),也可以第 2 章 嵌靜態(tài)分析和度量工具開發(fā)環(huán)境和相關(guān)技術(shù) 10 通過包含并發(fā) 線程同步控制的入口 (實(shí)現(xiàn)。 支持單獨(dú)編譯 (在物理層上支持模塊性。 含了很復(fù)雜的功能以支持實(shí)時(shí) ( 并發(fā)程序設(shè)計(jì) (錯(cuò)誤可以作為異常 (標(biāo)示,并可以被明確地處理。 覆蓋了系統(tǒng)編程 (這需要對(duì) 數(shù)據(jù)表示和系統(tǒng)特性訪問的精確控制。最后,提供了預(yù)定義的標(biāo)準(zhǔn)程序包,包括輸入輸出、字符串處理、數(shù)值計(jì)算的基本函數(shù)和隨機(jī)數(shù)生成來 3。 統(tǒng)開發(fā)環(huán)境 g+ g+( 譯器套裝 中的一部分 ),是一套由 發(fā)的編程語言編譯器。它是一套以 可證所發(fā)行的自由軟件,也是 劃的關(guān)鍵部分,亦是自由的類 蘋果電腦 S X 操作系統(tǒng)的標(biāo)準(zhǔn)編譯器。 g+的外部接口 類似 一個(gè)標(biāo)準(zhǔn)的 譯器。用戶在命令行下鍵入 g+的 程序名,以及一些命令參數(shù),以便決定每個(gè)輸入文件使用的個(gè)別語言編譯器,并為輸出代碼使用適合此硬件平臺(tái)的匯編語言編譯器,并且選擇性地運(yùn)行連接器以 生成 可運(yùn)行的程序。 對(duì)于 譯器來說,程序的編譯要經(jīng)歷預(yù)處理、編譯、匯編、連接四個(gè)階段,如 圖 譯器的四個(gè)階段 。 同濟(jì)大學(xué) 碩 /博士學(xué)位論文 整合入開發(fā)過程的靜態(tài)分析工具的設(shè)計(jì)和實(shí)現(xiàn) 11 圖 譯器的四個(gè)階段 從功能上分,預(yù)處理、編譯、匯編是三個(gè)不同的階段,但 g+的實(shí)際操作上,它可以把這三個(gè)步驟合并為一個(gè)步驟來執(zhí)行。 目前 統(tǒng)和類 統(tǒng)基本都是用 g+作為 C 語言編譯器, g+ g+在 的 統(tǒng)的實(shí)現(xiàn) ,其功能與 g+大致相同,其編譯出的程序可以運(yùn)行在 統(tǒng)中,也就是包含了各種類 。 介 讓 有 境的軟件。 g+就會(huì)包含在里面。對(duì)于開發(fā)者, 一個(gè)開發(fā)環(huán)境 , 對(duì)于用戶來說 一個(gè)運(yùn)行環(huán)境。 一和 大的區(qū)別在于,使用 以在 調(diào)用 系統(tǒng)函數(shù)。比如進(jìn)程函數(shù),等等。所以,雖然說, 運(yùn)行在 的,但是她還是使用的是 統(tǒng)的函數(shù)和思想。 許多自由軟件的集合,最初由 發(fā),用于各種版本的 ,運(yùn)行類 統(tǒng)。 主要目的是通過重新編譯,將 統(tǒng)(例如 及其他 統(tǒng))上的軟件移植到 。 植工作在 T、 000、 003 上比較好,在 5 和 8 上,相對(duì)差勁一些。目前 負(fù)責(zé)維護(hù)。 括了一套庫,該庫在 統(tǒng)下實(shí)現(xiàn)了 統(tǒng)調(diào)用的 有一套 發(fā)工具集(比如 g+、 這樣可以進(jìn)行簡單的軟件開發(fā);第 2 章 嵌靜態(tài)分析和度量工具開發(fā)環(huán)境和相關(guān)技術(shù) 12 還有一些 統(tǒng)下的常見程序。 2001 年,新增了 X 于 1995 年,最初作為 程師 一個(gè)項(xiàng)目。 1996 年后,由于看到 以提供 統(tǒng)上的 入 式工具(以往的方案是使用 其他工程師也加入了進(jìn)來。特別吸引人的是,以實(shí)現(xiàn) 如可以在 作站上 此就形成 樣比單純?cè)?編譯要快不少。 1998年起, 始將 作為產(chǎn)品來提供。 發(fā)系統(tǒng)的相關(guān)技術(shù) 信息文件 介紹 譯只需要使用 跟主程序代碼文件即可將整個(gè)工程編譯,可以說 含了一 個(gè)源代碼工程管理系統(tǒng)。在這個(gè)源代碼工程管理中,每次源代碼修改之后,所有被修改的文件必須被重新編譯。 依賴規(guī)則是非常復(fù)雜的,特別是過載、 言、類屬和 程序。 動(dòng)的執(zhí)行所有需要重新編譯的源代碼、重新 重新 信息文件起到了重要作用 4。 如果目標(biāo)文件相關(guān)的 信息文件存在并且它的以前的時(shí)間戳和所有的源代碼(在 信息 文件依賴節(jié)中列出的)的時(shí)間戳吻合,那么 該目標(biāo)文件被認(rèn)為“ up to 也就是說除非源代碼本身或者任何依 賴文件被修改,否則沒有必要重新編譯這個(gè)文件。 先檢查指定的主單元是否“ up to 如果成立,則不需要編譯主單元。如果不成立, 譯主程序從而建立一個(gè)新的對(duì)應(yīng)于最新源代碼的 信息文件。然后檢查 信息 文件的主單元以找出所有主程序所依賴的源代碼, 環(huán)的對(duì)所有的文件實(shí)施上面的步驟。 信息文件是 代碼文件在經(jīng)過 譯后生成的一個(gè)文本文件,該文件與源代碼包一一對(duì)應(yīng)。該文件包含了對(duì)應(yīng) 言包代碼中的各種信息。 主要包含 信息如下。 (1) 創(chuàng)建工具版本信息 : 一般放在第一行 , 以字母 V 標(biāo)識(shí) , 后面跟版本號(hào) , 如 : V ib 5 (2) 主程序信息 : 以字母 M 標(biāo)識(shí) , 后面跟優(yōu)先級(jí)設(shè)置及字符集設(shè)置信息 ,主要格式如下。 M T=w=? 同濟(jì)大學(xué) 碩 /博士學(xué)位論文 整合入開發(fā)過程的靜態(tài)分析工具的設(shè)計(jì)和實(shí)現(xiàn) 13 其中 以為兩種值: P, F。 P 為無參數(shù)過程, F 為有返回的函數(shù)。 有當(dāng)本編譯單元有有效的“ 設(shè)定主任務(wù)優(yōu)先級(jí)的時(shí)候有效。 T=示 用設(shè)定的值。 w=?標(biāo)示了是否用寬字符編碼。 (3) 編譯參數(shù)信息 : 以字母 A 標(biāo)識(shí) , 后面跟編譯選項(xiàng) , 如 : A 4) 單元屬性信息 : 以字母 P 標(biāo)識(shí),后面跟編譯指示配置 , 如 : P X。 (5) 特性限制信息 : 以字母 R 標(biāo)識(shí),后面跟特性列表 (如果特性被限制,則對(duì)應(yīng)字符為 v,否則為 n), 在嵌入式程序中,限制的特性比較多 (6) 單元引用信息 , 以字母 W 標(biāo)識(shí),對(duì)應(yīng)于單元中的 定的引用單元,如 : W s 信息 (7) 鏈接選項(xiàng)信息 , 以字母 L 標(biāo)識(shí),對(duì)應(yīng)于編譯指示 如 : L 8) 單元版本信息 , 以字母 U 標(biāo)識(shí),對(duì)應(yīng) 性及 性 , 如 : U p%s E K 里的 單元 屬性。 (9) 文件依賴信息 : 以字母 D 標(biāo)識(shí),后面跟依賴的文件名,時(shí)間戮,及文件的檢驗(yàn)和 , 如 : 20120331025321 0210) 交叉引用信息 : 以字母 X 標(biāo)識(shí),后面跟文件出現(xiàn)序號(hào)及文件名 、 若干行是符號(hào)信息 , 信息中包含符號(hào)的行列信息及類型信息 , 行首的還包括符號(hào)名稱 。 (11)此外還有一些其他方面的信息,比較少見,不再列出 。 下面舉例說明。 445|91面這行引用信息是類型 共可見布爾類型,在第 44 行第 5 列聲明的。共有四個(gè)地方引用。 1) 當(dāng)前文件的第 5 行,第 23 列有一處引用 2) 當(dāng)前文件的第 6 行,第 45 列有一處修改 3) 編譯單元 3 的第 9 行,第 35 列有一處引用 4) 編譯單元 3 的第 11 行,第 56 列有一處引用 6 可見,通過對(duì)經(jīng)過補(bǔ)充的 信息文件進(jìn)行分析,按照文件格式進(jìn)行解析,即可獲得詳細(xì)的 代碼的各個(gè)標(biāo)簽等相互引用關(guān)系,從而獲得程序結(jié)構(gòu),所得的程序結(jié)構(gòu)信息可以作為 代碼靜態(tài)分析的基礎(chǔ) 7。 第 2 章 嵌靜態(tài)分析和度量工具開發(fā)環(huán)境和相關(guān)技術(shù) 14 法分析 技術(shù) 在 設(shè)計(jì)出來的一個(gè)優(yōu)秀的計(jì)算機(jī)詞法分析工具。主要功能是生成一個(gè)詞法分析器( C 源碼。需要先編寫描述詞法分析器的文件,經(jīng)過 譯后 ,生成一 個(gè) 文件, 然后由 C 編譯器將該 C 文件編譯后,生成詞法分析器 8。如果將該文件與自己開發(fā)的文件整合,就可以再自己的工具中實(shí)現(xiàn)詞法分析,以詞法分析獲得結(jié)果來對(duì)代碼進(jìn)行靜態(tài)分析和度量,獲得代碼的各種質(zhì)量數(shù)據(jù) 。 L E X 編 譯 器C 編 譯 器自 定 義 工 具 其 他 代 碼自 己 的 S c a n n e 流 T o k e n 序 列L e x . y y . cM y . c 。 . . 法分析過程 法分析器文件的格式: 輔助定義部分 % 識(shí)別規(guī)則部分 % 用戶子程序部分 上面花括號(hào)內(nèi)的內(nèi)容不是必須出現(xiàn)的。識(shí)別規(guī)則部分是 核心, 9。它其實(shí)就是一張表,表內(nèi)每一個(gè)項(xiàng)有兩部分,一部分是正則表達(dá)式,該正則表達(dá)式就是用來查找源代碼中符合的代碼項(xiàng),另外一部分就是符合這個(gè)正則表達(dá)式所需要執(zhí)行的動(dòng)作。下面的表達(dá)式就是一個(gè)例子。 6|32) is is no ); 上述例子就是在找到 輸出“ is is no 這句話。 同濟(jì)大學(xué) 碩 /博士學(xué)位論文 整合入開發(fā)過程的靜態(tài)分析工具的設(shè)計(jì)和實(shí)現(xiàn) 15 態(tài)分析和度量 技術(shù)現(xiàn)狀 從第一個(gè)計(jì)算機(jī)軟件的出現(xiàn)到現(xiàn)在,已經(jīng)融入到我們生活和工作的各個(gè)方面,影響著我們的生活,也將繼續(xù)讓我們的生活不同。星載嵌入式軟件承擔(dān)著衛(wèi)星的各項(xiàng)控制任務(wù),是衛(wèi)星的大腦,大腦一但出問題,對(duì)整個(gè)衛(wèi)星的壽命影響可能是致命的。對(duì)于越來越復(fù)雜的星載嵌入式軟件,軟件開發(fā)的風(fēng)險(xiǎn)也越來越得到重視,軟件的質(zhì)量更是航天型號(hào)中特別關(guān)注的地方。有軟件就會(huì)有 伴隨著軟件一起來到這個(gè)世界的。能降低軟件問題是 航天型號(hào)軟件開發(fā)人員一直為之奮斗的目標(biāo)。 軟件的故障暴露可能存在于軟件的整個(gè)生命周期,在編譯中,調(diào)試中,單元測(cè)試中,組裝測(cè)試中,確認(rèn)測(cè)試中,系統(tǒng)聯(lián)試中,甚至在軌發(fā)生都是經(jīng)常的事。不可能要求軟件開發(fā)者能在開發(fā)階段解決所有可能出現(xiàn)的問題,但是可以再開發(fā)階段盡可能的解決可能存在的問題。 如果在軟件人員開發(fā)階段獲得目前代碼的質(zhì)量信息是讓軟件開發(fā)人員在開發(fā)階段盡可能解決可能發(fā)生的問題的關(guān)鍵。 但是軟件的質(zhì)量是個(gè)不具體的概念,軟件的質(zhì)量體現(xiàn)在眾多方面。單簡化來說,靜態(tài)度量的結(jié)果可以反映軟件的質(zhì)量。靜態(tài)度量主要是對(duì)軟件代 碼的模塊調(diào)用結(jié)構(gòu)、扇入扇出數(shù)、圈復(fù)雜度、輸入?yún)?shù)、返回路徑等指標(biāo)進(jìn)行測(cè)量。測(cè)量結(jié)果如果都達(dá)標(biāo)的話,基本可以說是良好的代碼質(zhì)量 6。 比如圈復(fù)雜度,圈復(fù)雜度過大的話,代碼復(fù)雜度也大,代碼路徑多,分支多,需要考慮的內(nèi)容也多,如果開發(fā)者忽略某個(gè)分支,很可能該分支就會(huì)出現(xiàn)問題。其次高圈復(fù)雜度的代碼不容易維護(hù),該一個(gè)地方,就有可能影響其他代碼,可讀性也差。 靜態(tài)分析和度量越來越得到重視,其在軟件開發(fā)中的作用獲得了認(rèn)可。越來越多的集成開發(fā)環(huán)境整合靜態(tài)分析和度量工具 7。 1 提供全新的 代碼靜態(tài)分析能力,其中包括在 C+代碼分析能力,代碼查詢能力增強(qiáng)等等。代碼分析窗口,代碼分析警告出現(xiàn)在代碼分析工具窗口,窗口能夠幫助開發(fā)者管理和解決代碼分析警告。 過濾警告信息,能夠靠關(guān)鍵字,項(xiàng)目名稱等信息過濾代碼分析警告。代碼編輯器高亮,在代碼分析器選擇一條警告信息時(shí),相關(guān)警告代碼會(huì)在編輯器中高亮顯示。 C+消息排查,在代碼分析窗口下,你可以進(jìn)行修改代碼并且排除此條警告消息的操作。 C+規(guī)則設(shè)置,新增 C+規(guī)則集,像管理代碼一樣,你能夠可以指定和定制代碼分析的規(guī)則集。此外 具可以通過插件的 方式整合在 發(fā)平臺(tái)中,以其在軟件開發(fā)過程中對(duì)代碼進(jìn)行分析。 臺(tái)的集成開發(fā)環(huán)境 整合了靜態(tài)分析工具。 靜態(tài)第 2 章 嵌靜態(tài)分析和度量工具開發(fā)環(huán)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職植物保護(hù)(農(nóng)藥應(yīng)用)試題及答案
- 2025年高職數(shù)字媒體(VR制作進(jìn)階)試題及答案
- 2025年大學(xué)歷史(世界近現(xiàn)代史)試題及答案
- 2025年大學(xué)化工類(化工安全規(guī)范)試題及答案
- 大學(xué)(藥學(xué))藥物分析技術(shù)2026年綜合測(cè)試題及答案
- 2025年大學(xué)大四(交通運(yùn)輸)交通運(yùn)輸綜合試題及答案
- 2025年大學(xué)攝影(攝影教育心理學(xué))試題及答案
- 2025年中職地質(zhì)工程技術(shù)(地質(zhì)勘探基礎(chǔ))試題及答案
- 2025年大學(xué)大三(會(huì)展經(jīng)濟(jì)與管理)會(huì)展經(jīng)濟(jì)分析階段測(cè)試題及答案
- 2025年大學(xué)大三(生物科學(xué))細(xì)胞生物學(xué)實(shí)驗(yàn)階段測(cè)試題及答案
- 中國工藝美術(shù)館招聘筆試試卷2021
- 申論范文寶典
- 【一例擴(kuò)張型心肌病合并心力衰竭患者的個(gè)案護(hù)理】5400字【論文】
- 四川橋梁工程系梁專項(xiàng)施工方案
- DB32T 3695-2019房屋面積測(cè)算技術(shù)規(guī)程
- 貴州省納雍縣水東鄉(xiāng)水東鉬鎳礦采礦權(quán)評(píng)估報(bào)告
- GB 8270-2014食品安全國家標(biāo)準(zhǔn)食品添加劑甜菊糖苷
- 2023年杭州臨平環(huán)境科技有限公司招聘筆試題庫及答案解析
- 易制毒化學(xué)品日常管理有關(guān)問題權(quán)威解釋和答疑
- 湖北省高等教育自學(xué)考試
- 企業(yè)三級(jí)安全生產(chǎn)標(biāo)準(zhǔn)化評(píng)定表(新版)
評(píng)論
0/150
提交評(píng)論