版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、目 錄1Testbed功能介紹11.1編程規(guī)則驗證11.2數(shù)據(jù)流分析11.3控制流分析11.4表達式分析21.5接口分析21.6軟件質量度量分析22使用Testbed 進行編碼規(guī)則的定制和檢查22.1確定測試需求22.2建立測試工程22.3定制代碼分析規(guī)則22.4配置Report選項22.5分析執(zhí)行及結果查看23結果分析及測試報告編寫23.1質量度量信息的獲取23.2程序質量度量報告單23.3靜態(tài)分析質量報告單2附錄A:靜態(tài)分析推薦規(guī)則使用說明21 Testbed功能介紹1.1 編程規(guī)則驗證編程標準驗證是高可靠性軟件開發(fā)不可缺少的軟件質量保證方法,使用LDRA Testbed 自動地驗證應用軟
2、件是否遵循了所選擇的編程規(guī)則。編程規(guī)則由軟件項目管理者根據(jù)自身項目的特點并參考現(xiàn)有的成熟的軟件編程標準制定,如DERA(歐洲防務標準),MISRA(汽車軟件標準),LDRA Testbed依據(jù)此規(guī)則搜索應用程序,并判斷代碼是否違反所制定的編程規(guī)則。LDRA Testbed報告所有違反編程規(guī)則的代碼并以文本方式或圖形反標注的方式顯示。測試人員或編程人員可根據(jù)顯示的信息對違反編程規(guī)則的代碼進行修改。1.2 數(shù)據(jù)流分析LDRA Testbed分析軟件中全局變量、局域變量及過程參數(shù)的使用狀況,并以圖形顯示、HTML或ASCII文本報告方式表示,清晰地識別出變量使用引起的軟件錯誤,此種方法既可使用于單元
3、級,亦可使用于集成級、系統(tǒng)級。 通過 Testbed數(shù)據(jù)流分析功能,可方便地分析出軟件中一些可能的程序欠缺,如:1. 沒使用的函數(shù)參數(shù);2. 不匹配的參數(shù);3. 變量未賦初值就引用;4. 代碼中有多余變量;5. 給值傳遞參數(shù)賦值;6. 無返回值的函數(shù)路徑;7. 函數(shù)的實參是全局變量。1.3 控制流分析控制流分析檢查以下內(nèi)容:1. 不可達代碼;2. 不合理的循環(huán)結構;3. 存在浮點相等比較;4. 函數(shù)存在多個出口;5. 函數(shù)存在多個入口。1.4 表達式分析表達式分析檢查以下內(nèi)容:1. 表達式中的括號使用不當;2. 數(shù)組下標越界;3. 存在被零除;4. SWITCH語句缺少DEFAULT;5. C
4、ASE語句缺少BREAK;6. 存在混合運算;7. 對指針進行邏輯比較;8. 在邏輯表達式中使用賦值操作符。1.5 接口分析接口分析檢查以下內(nèi)容:1. 實參和形參個數(shù)不匹配;2. 實參和形參類型不匹配;3. 函數(shù)參數(shù)定義的結構和調(diào)用的結構不一致。1.6 軟件質量度量分析對于軟件開發(fā)工程師、項目負責人及高級管理者來說,軟件質量的管理與監(jiān)控是非常困難的且費時。LDRA Testbed很好地解決了這一問題,使得管理者很容易地收集正在開發(fā)的軟件系統(tǒng)的相關信息并判斷軟件是否滿足軟件質量標準要求,從而達到對軟件項目的質量跟蹤與控制。Testbed 提供數(shù)據(jù)文件接口,用戶可基于現(xiàn)行軟件標準自行定義適合本系統(tǒng)
5、或項目的軟件質量模型。靜態(tài)分析的軟件度量元和相應的說明見表1:表 1 軟件質量度量元說明序號度量元指標要求說明1函數(shù)代碼行數(shù)<=200函數(shù)包含的語句數(shù)。2注釋度量>=20%代碼的有效注釋率。3函數(shù)參數(shù)<=7函數(shù)參數(shù)個數(shù)。4Goto語句0Goto語句數(shù)。5圈復雜度<=10控制流圖中邊的數(shù)量與節(jié)點數(shù)量之間的差值加2。6基本復雜度<=4圈復雜度與流程圖中結構化子圖的數(shù)量之間的差值;基本復雜度高意味著非結構化程度高,難以模塊化和維護。7LCSAJ密度<=20LCSAJ 密度是一個描述軟件可維護性的概念,它是指當改變一行代碼時,對其它線性代碼順序和跳轉的影響程度,值越
6、大說明影響的測試路徑相對越多,因此系統(tǒng)可維護性越低。8控制流結點數(shù)<=10控制流結點數(shù)表示流程圖中控制流相交的交點數(shù)。9基本結點數(shù)<=5將流程圖中的結構化部分簡化成一個點,簡化以后流程圖的結點數(shù)是基本結點數(shù)。10扇入度量<=7調(diào)用本函數(shù)的上層函數(shù)的個數(shù)。11扇出度量<=7本函數(shù)調(diào)用下層函數(shù)的個數(shù)。2 使用Testbed 進行編碼規(guī)則的定制和檢查LDRA Testbed可通過編輯編碼規(guī)則文件cpen.dat/cppen.dat實現(xiàn)編碼規(guī)則的定制,下面將具體介紹:2.1 確定測試需求在測試需求分析階段確定:1. 確定測試對象:整個MSVC工程還是文件集合;純C文件、純C+還
7、是C/C+混合文件。2. 確定測試內(nèi)容:確定靜態(tài)分析規(guī)則,可參考附錄A所示靜態(tài)分析推薦規(guī)則使用說明。3. 確定測試“類型”:確定是進行擊System分析還是Group分析(選擇Group時,不對代碼進行集成測試,只是采用批處理方式分析單個文件)。2.2 建立測試工程1. 啟動Testbed,根據(jù)分析對象,選擇測試工程類型。如需對整個MSVC工程進行分析,選擇Create Set Based Upon MSVC v6 Project;如分析對象是一個或多個C、C+文件,選擇Select/Create/Delete Set。下面以在Set 菜單下選擇Select/Create/Delete Set
8、選項為例進行說明。 2. 在Select/Create Set輸入框中輸入“Demo”,點擊【Create】按鈕3. 點擊【System】按鈕(選擇Group時,不對代碼進行集成測試,只是采用批處理方式分析單個文件)。4. 點擊右上側【Add】按鈕,選擇好要分析的文件,點擊【Add】按鈕后點【OK】按鈕進行確認。2.3 定制代碼分析規(guī)則1. 點擊菜單欄中的Configure,在下拉菜單中點擊Static Options 選項,將會出現(xiàn)如下窗口,點擊cpen.dat/cpppen.dat后的Edit 按鈕,按照提示編輯cpen.dat/cpppen.dat后。若存在已編輯好的編碼規(guī)則文件,可按旁
9、邊的瀏覽鍵直接指定該dat 文件,則下面第3步可以省略。2. 編輯第2 列,根據(jù)實際需求,將對應編碼規(guī)則置“0”或“1”,置“0”代表該條編碼規(guī)則無效,置“1”代表該條編碼規(guī)則有效。2.4 配置Report選項1. Quality Report配置點擊菜單欄中的Configure,在下拉菜單中點擊Quality Report Options 選項,將會出現(xiàn)如下窗口,在Programming Standard Model 下拉框中選擇“No Model all standards”。如分析的文件為C、C+混合類型,則在下圖右側所示下拉列表中分別選擇一個.C和.CPP文件,選中對應文件后選擇在Pr
10、ogramming Standard Model 下拉框中選擇“No Model all standards”。在Optional Configuration中Violation Summaries選中“All”,根據(jù)需要選擇Report Violations Only(Quality Report只列出有違反的)。2. Metrics Report配置點擊菜單欄中的Configure,在下拉菜單中點擊Metrics Report Options 選項,將會出現(xiàn)如下窗口,根據(jù)測試需求配置metpen,dat及Kiviat.dat文件。2.5 分析執(zhí)行及結果查看1. 點擊菜單欄中的Analysi
11、s,在下拉菜單中點擊Select Analysis,將會出現(xiàn)如下窗口,選擇前3 項,點擊Start Analysis 按鈕,開始進行靜態(tài)分析。2. 靜態(tài)分析結束后,點擊菜單欄中的Individual /System Results,選擇下拉菜單Text Results 中的Quality Report(HTML),查看質量報告。3 結果分析及測試報告編寫3.1 質量度量信息的獲取度量度量信息可通過以下幾種方式獲取:1. 查看規(guī)則審查報告:點擊菜單欄中的Individual Results/System Results,選擇下拉菜單Text Results 中的Quality Report (H
12、TML)。度量元指標查看位置具體說明注釋度量>=20%在Quality Report (HTML)中的 Global Basic Information獲取可執(zhí)行代碼行總數(shù)與注釋行總數(shù)注釋行總數(shù)/(注釋行總數(shù)+可執(zhí)行代碼行總數(shù))函數(shù)代碼行數(shù)<=200System Results菜單下選擇Text Results子菜單中的Quality Report(HTML)函數(shù)代碼行超過200行函數(shù)參數(shù)<=7函數(shù)參數(shù)超過7個Goto語句0使用goto語句圈復雜度<=10圈復雜度超過10LCSAJ密度<=20LCSAJ密度超過202. 查看質量度量報告:點擊菜單欄中的Indivi
13、dual Results/System Results,選擇下拉菜單Text Results 中的Metrics Report (HTML)。度量元指標查看位置具體說明圈復雜度<=10Metric Report中Complexity MetricsCyclomatic Complexity,基本復雜度<=4Essential Cyclomatic Complexity控制流結點數(shù)<=10Knots基本結點數(shù)<=5Essential KnotsLCSAJ密度<=20LCSAJ and UnreachabilityMaximum LCSAJ Density扇入度量&l
14、t;=7Dataflow InformationFan In 扇出度量<=7Fan Out3. 查看圖形化報告:點擊菜單欄中的System Results,選擇下拉菜單Graphical Results 中的Static Bar Charts。度量元指標查看位置具體說明圈復雜度<=10System Results菜單下Graphical Results子菜單 中的Static Bar ChartsCyclomatic Complexity基本復雜度<=4Essential Cyclomatic Complexity控制流結點數(shù)<=10Knots基本結點數(shù)<=5Es
15、sential Knots以圈復雜度為例:選擇Static Bar Charts子菜單下的“Essential Cyclomatic Complexity”,彈出如下所示柱狀圖,在該界面,將Graph菜單下的Show Bar Components選中,可查看函數(shù)基本圈復雜度具體信息。3.2 程序質量度量報告單表 2 程序質量度量報告單度量元指標說明違反個數(shù)所在軟件具體描述函數(shù)代碼行數(shù)<=200函數(shù)包含的語句數(shù)注釋度量>=20%代碼的有效注釋率函數(shù)參數(shù)<=7函數(shù)參數(shù)個數(shù)Goto語句0Goto語句數(shù)圈復雜度<=10控制流圖中邊的數(shù)量與節(jié)點數(shù)量之間的差值加2基本復雜度<
16、=4圈復雜度與流程圖中結構化子圖的數(shù)量之間的差值LCSAJ密度<=20LCSAJ 密度是一個描述軟件可維護性的概念控制流結點數(shù)<=10控制流結點數(shù)表示流程圖中控制流相交的交點數(shù)基本結點數(shù)<=5將流程圖中的結構化部分簡化成一個點,簡化以后流程圖的結點數(shù)是基本結點數(shù)。扇入度量<=7調(diào)用本函數(shù)的上層函數(shù)的個數(shù)扇出度量<=7本函數(shù)調(diào)用下層函數(shù)的個數(shù)3.3 靜態(tài)分析質量報告單報告單中列出的審查內(nèi)容根據(jù)測試需求確定,其中部分度量指標在質量度量報告中會重復出現(xiàn),此表可以不列出。審查結果根據(jù)根據(jù)Quality Report確定。表 3 靜態(tài)分析質量報告單審查項目測試內(nèi)容審查結果控
17、制流分析是否存在不可達代碼是 否 是否存在循環(huán)條件不可達是 否 函數(shù)是否包含無限循環(huán)(無終止條件)是 否 是否存在無限循環(huán)結構是 否 在循環(huán)語句中是否有多個控制變量是 否 是否存在浮點相等比較是 否 使用goto語句是 否 函數(shù)是否存在多個入口是 否 函數(shù)是否存在多個出口是 否 數(shù)據(jù)流分析是否存在標識名重用是 否 是否存在沒使用的函數(shù)參數(shù)是 否 函數(shù)不是所有的路徑上都有返回值是 否 函數(shù)的實參是全局變量是 否 代碼中有多余變量是 否 變量未賦初值就引用是 否 參數(shù)與期望的作用不匹配是 否 給值傳遞參數(shù)賦值是 否 標識符超過31個字符是 否 函數(shù)定義無相應原型是 否 存在潛在的無限循環(huán)是 否 指
18、針在使用之前沒有進行非空檢查是 否 往沒有打開過的文件中寫是 否 文件指針在退出時沒有關閉是 否 表達式分析表達式中使用是 否 存在數(shù)組下標越界是 否 存在被零除是 否 SWITCH語句是否為空是 否 SWITCH語句只含DEFAULT情況是 否 SWITCH語句缺少DEFAULT是 否 CASE語句缺少BREAK是 否 返回類型為VOID 的函數(shù)出現(xiàn)在表達式中是 否 函數(shù)中是否存在Return語句為空是 否 存在混合運算是 否 對指針進行邏輯比較是 否 在邏輯表達式中使用賦值操作符是 否 表達式中使用空函數(shù)是 否 接口分析實參和形參個數(shù)不匹配(C+無)是 否 實參和形參類型不匹配是 否 函數(shù)
19、參數(shù)定義的結構和調(diào)用的結構不一致是 否 其它循環(huán)體缺少括弧是 否 函數(shù)參數(shù)列表為空是 否 函數(shù)參數(shù)列表申明不一致是 否 基本模塊中使用#define定義是 否 SWITCH結構含多個(大于1)DEFAULT是 否 函數(shù)返回類型不一致是 否 函數(shù)和函數(shù)的原型的返回不一致是 否 函數(shù)和函數(shù)的原型的形參不一致是 否 函數(shù)參數(shù)超過7個是 否 圈復雜度超過10是 否 LCSAJ密度超過20是 否 函數(shù)代碼行超過200行是 否 附錄A:靜態(tài)分析推薦規(guī)則使用說明審查項目Line級別測試內(nèi)容對應英文規(guī)則控制流分析362M存在不可達代碼# Unreachable Code found. 184# Constru
20、ct leads to infeasible code.185C存在循環(huán)條件不可達# Infeasible loop condition found.40M函數(shù)包含無限循環(huán)(無終止條件)# Procedure contains infinite loop.27M存在無限循環(huán)結構# Infinite loop used.204M在循環(huán)語句中有多個控制變量# More than one control variable for loop. 78M存在浮點相等比較# Equality comparison of floating point.13M使用goto語句# goto detected.58
21、C函數(shù)存在多個入口# Procedure has more than one entry point59C函數(shù)存在多個出口# Procedure has more than one exit point數(shù)據(jù)流分析2M標識名重用# Label name reused.41M存在沒使用的函數(shù)參數(shù)# Unused procedure parameter.42M函數(shù)不是所有的路徑上都有返回值# Function does not return a value on all paths.43M函數(shù)的實參是全局變量# Actual parameter is also global to procedure
22、.44M代碼中有多余變量# Variables were declared but never used.45M變量未賦初值就引用# UR data flow anomalies found.51M參數(shù)與期望的作用不匹配# Parameters do not match expected actions.54M給值傳遞參數(shù)賦值# Attempt to change parameter passed by value.12M標識符超過31個字符# Identifier exceeds * significant characters.127M函數(shù)定義無相應原型# Procedure defini
23、tion has no associated prototype.137M存在潛在的無限循環(huán)# Potentially infinite loop found.361M指針在使用之前沒有進行非空檢查# Pointer not checked for null before use380M往沒有打開過的文件中寫# Attempt to write to unopened file381M文件指針在退出時沒有關閉# File pointer not closed on exit表達式分析192M表達式中的括號使用正確:表達式中使用# Curly brackets used in expressio
24、n.71M存在數(shù)組下標越界# Array bound exceeded.264M存在被零除# Divide by 0 found.82MSWITCH語句是否為空# Empty switch statement.83MSWITCH語句只含DEFAULT情況# Switch contains default only.72MSWITCH語句缺少DEFAULT# No default case in switch statement. 84MCASE語句缺少BREAK# Switch Case not terminated with break. AV 19386M返回類型為VOID 的函數(shù)出現(xiàn)在表
25、達式中# Void procedure used in expression.88M函數(shù)中是否存在Return語句為空# Function with empty return expression.153M存在混合運算# Use of mixed mode arithmetic. 149M對指針進行邏輯比較# Logical comparison of pointers.176M在邏輯表達式中使用賦值操作符# Assignment operator in boolean expression.88M表達式中使用空函數(shù)# Void procedure used in expression.接口分析22M
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機場航站樓鋼結構施工合同范本
- 金屬加工設備租賃協(xié)議
- 人力資源成本分攤方案
- 教育用地租賃解除通知
- 五常法在供應鏈管理中的應用
- 信息技術溝通規(guī)范
- 港口碼頭場平施工合同
- 船舶專用泵房工程合同
- 造紙機械融資租賃合同
- 危化品倉庫防雷設施建設
- 7.4 等差數(shù)列與等比數(shù)列的應用(課件)-【中職專用】高二數(shù)學(高教版2021·拓展模塊一下冊)
- TDT 1015.2-2024 地籍數(shù)據(jù)庫 第2部分:自然資源(正式版)
- 關于大數(shù)據(jù)的職業(yè)生涯規(guī)劃書課件
- 部編版高中語文必修上冊第二單元測試題及答案
- 電子化文件與信息管理制度
- 2024年高考地理試卷(浙江)(1月)(解析卷)
- 心理健康講座(課件)-小學生心理健康
- 《腸造口并發(fā)癥的分型與分級標準(2023版)》解讀
- 名畫中的瘟疫史智慧樹知到期末考試答案章節(jié)答案2024年上海健康醫(yī)學院
- 頂管工程安全措施和操作規(guī)程
- 《跟上兔子》繪本三年級第1季One-Day教學課件
評論
0/150
提交評論