版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、目錄1 Testbed功能介紹1.1.1 編程規(guī)則驗證 1.1.2 數(shù)據(jù)流分析1.1.3 控制流分析1.1.4 表達式分析2.1.5 接口分析2.1.6 軟件質(zhì)量度量分析2.2 使用Testbed進行編碼規(guī)則的定制和檢查 32.1 確定測試需求 3.2.2 建立測試工程3.2.3 定制代碼分析規(guī)則6.2.4 配置 Report選項1.2.5 分析執(zhí)行及結(jié)果查看8.3 結(jié)果分析及測試報告編寫93.1 質(zhì)量度量信息的獲取 9.3.2 程序質(zhì)量度量報告單1.13.3 靜態(tài)分析質(zhì)量報告單12附錄A :靜態(tài)分析推薦規(guī)則使用說明1.1 Testbed功能介紹1.1編程規(guī)則驗證編程標準驗證是高可靠性軟件開發(fā)
2、不可缺少的軟件質(zhì)量保證方法,使用LDRA Testbed自動地驗證應(yīng)用軟件是否遵循了所選擇的編程規(guī)則。編程規(guī)則由 軟件項目管理者根據(jù)自身項目的特點并參考現(xiàn)有的成熟的軟件編程標準制定,如DERA (歐洲防務(wù)標準),MISRA (汽車軟件標準),LDRA Testbed依據(jù)此規(guī)則 搜索應(yīng)用程序,并判斷代碼是否違反所制定的編程規(guī)則。LDRA Testbed報告所有違反編程規(guī)則的代碼并以文本方式或圖形反標注的方式顯示。測試人員或編程人員可根據(jù)顯示的信息對違反編程規(guī)則的代碼進行修改。1.2數(shù)據(jù)流分析LDRA Testbed分析軟件中全局變量、局域變量及過程參數(shù)的使用狀況,并 以圖形顯示、HTML或ASC
3、II文本報告方式表示,清晰地識別出變量使用引起 的軟件錯誤,此種方法既可使用于單元級,亦可使用于集成級、系統(tǒng)級。通過Testbed數(shù)據(jù)流分析功能,可方便地分析出軟件中一些可能的程序欠缺,如:1. 沒使用的函數(shù)參數(shù);2. 不匹配的參數(shù);3. 變量未賦初值就引用;4. 代碼中有多余變量;5. 給值傳遞參數(shù)賦值;6. 無返回值的函數(shù)路徑;7. 函數(shù)的實參是全局變量。1.3控制流分析控制流分析檢查以下容:1. 不可達代碼;2. 不合理的循環(huán)結(jié)構(gòu);3. 存在浮點相等比較;4. 函數(shù)存在多個出口;5. 函數(shù)存在多個入口。1.4表達式分析表達式分析檢查以下容:1. 表達式中的括號使用不當;2. 數(shù)組下標越界
4、;3. 存在被零除;4. SWITCH 語句缺少 DEFAULT ;5. CASE語句缺少BREAK ;6. 存在混合運算;7. 對指針進行邏輯比較;8. 在邏輯表達式中使用賦值操作符。1.5接口分析接口分析檢查以下容:1. 實參和形參個數(shù)不匹配;2. 實參和形參類型不匹配;3. 函數(shù)參數(shù)定義的結(jié)構(gòu)和調(diào)用的結(jié)構(gòu)不一致。1.6軟件質(zhì)量度量分析對于軟件開發(fā)工程師、項目負責人及高級管理者來說,軟件質(zhì)量的管理與監(jiān) 控是非常困難的且費時。LDRA Testbed很好地解決了這一問題,使得管理者很 容易地收集正在開發(fā)的軟件系統(tǒng)的相關(guān)信息并判斷軟件是否滿足軟件質(zhì)量標準 要求,從而達到對軟件項目的質(zhì)量跟蹤與控
5、制。Testbed提供數(shù)據(jù)文件接口,用戶可基于現(xiàn)行軟件標準自行定義適合本系統(tǒng)或項目的軟件質(zhì)量模型。靜態(tài)分析的軟件度量元和相應(yīng)的說明見表1:表1軟件質(zhì)量度量元說明序號度量元指標要求說明1函數(shù)代碼行數(shù)=20%代碼的有效注釋率。3函數(shù)參數(shù)=7函數(shù)參數(shù)個數(shù)。4Goto語句0Goto語句數(shù)。5圈復雜度=10控制流圖中邊的數(shù)量與節(jié)點數(shù)量之間 的差值加2。序號度量元指標要求說明6基本復雜度=4圈復雜度與流程圖中結(jié)構(gòu)化子圖的數(shù) 量之間的差值;基本復雜度咼意味著 非結(jié)構(gòu)化程度高,難以模塊化和維護。7LCSAJ密度=20LCSAJ密度是一個描述軟件可維護 性的概念,它是指當改變一行代碼時, 對其它線性代碼順序和跳
6、轉(zhuǎn)的影響程 度,值越大說明影響的測試路徑相對 越多,因此系統(tǒng)可維護性越低。8控制流結(jié)點數(shù)=10控制流結(jié)點數(shù)表示流程圖中控制流相 交的交點數(shù)。9基本結(jié)點數(shù)=5將流程圖中的結(jié)構(gòu)化部分簡化成一個 點,簡化以后流程圖的結(jié)點數(shù)是基本 結(jié)點數(shù)。10扇入度量=7調(diào)用本函數(shù)的上層函數(shù)的個數(shù)。11扇出度量=7本函數(shù)調(diào)用下層函數(shù)的個數(shù)。2 使用Testbed進行編碼規(guī)則的定制和檢查LDRA Testbed可通過編輯編碼規(guī)則文件 cpen.dat/cppen.da實現(xiàn)編碼規(guī)則的 定制,下面將具體介紹:2.1確定測試需求在測試需求分析階段確定:1. 確定測試對象:整個 MSVC工程還是文件集合;純 C文件、純C+還
7、是C/C+混合文件。2. 確定測試容:確定靜態(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
8、Set 選項為例進行說明。2.在Select/Create Se輸入框中輸入“ Demo”,點擊【Create】按鈕3.點擊【System!按鈕(選擇Group時,不對代碼進行集成測試,只是采 用批處理方式分析單個文件)。4. 點擊右上側(cè)【Add】按鈕,選擇好要分析的文件,點擊【Add】按鈕后點 【OK】按鈕進行確認。Add Filo(o) To Sot岡童找范圍二匕匡沓臥-jFqbaseStatiDru epp:sConr.ect icn, epp*msList. epp_UitsJlsg. cjPhoneNumber. epp/|l)fitsServer. epp/ tcpsck. cUm
9、t sCode. c文件名:IbaEeStsti on epp IternzLi st. cpj* FhondTumter epp 汗Add文件趣(T);C/C4+ Fil*s (*. c;*. iac;3* epp;*. cxx3*. cc)Ade with Wildcard:Fl cruise Toldcrs 廠 Vcify Sclcclion2.3定制代碼分析規(guī)則1.點擊菜單欄中的Con figure,在下拉菜單中點擊Static Optio ns選項,將會 出現(xiàn)如下窗口,點擊cpe n.dat/cpppe n.dat后的Edit按鈕,按照提示編輯 cpe n.dat/cpppe n.d
10、at后。若存在已編輯好的編碼規(guī)則文件,可按旁邊的瀏覽鍵直 接指定該dat文件,則下面第3步可以省略。5 M2. 編輯第2列,根據(jù)實際需求,將對應(yīng)編碼規(guī)則置“ 0”或“ T,置“ 0” 代表該條編碼規(guī)則無效,置“ 1”代表該條編碼規(guī)則有效。TBbrowse 一 I c pe n. dat I of怪STKNDAfiUS TiXT MUSI BE 5C CELlbCi Oft 壷汨,S retlitv匕 TlTr S 戶1301sPreeednure nanre reusied.0120El nwr,MTSF4/lM:RiJ1 2口口口=:=Here lJjsxi rt a execucLjL/j
11、EJ;a19丄Q豊Uct used11111sNo brcsckets to Loor body I added by Testbedl .M0FA/tEF1210sNc h.T&ci?t3 tc thcTi/e-J-eby TentlBEEip .MTEWMEA13-13-get 口 czc-t e-匚七=日.MTSKA/UEPA14丄0丄電iFzocedaiSil ptLecer dtuLa f-dD1PA 14$151QIS5Ajjuxjyn-u Leld &o etr ucLux nMI8FA/SE?Ji11q昨呂)1 y 1 t 1 r 1141b# 1017017sCode iTi
12、srrT found.HISFA/lEFi13IS-Kc-r te tha i * * * parasre t er 3 i n pr nc皀已工巴.耳4 = . . _ _a1 ,,- i . .-J .”v-|11For Hol?j PEC0JFlLe地Cal盹SCFL輛 EiL* Edji Exifhuz 翌釧匪lp2.4配置Report選項1. Quality Report 配置點擊菜單欄中的 Con figure,在下拉菜單中點擊 Quality Report Optio ns選項, 將會出現(xiàn)如下窗口,在 Programming Standard Model下拉框中選擇“ No Mo
13、del -all standardS。如分析的文件為 C、C+混合類型,則在下圖右側(cè)所示下拉列 表中分別選擇一個.C和.CPP文件,選中對應(yīng)文件后選擇在 Programming Standard Model 下拉框中選擇“ No Model -all sta ndardS。I11 eno4 D: khide 十 udywvd 匚hkeK am在 Optional Configuration 中 Violation Summaries選中“All”,根據(jù)需要選 擇 Report Violations Only (Quality Report 只列出有違反的)。2. Metrics Report
14、配置點擊菜單欄中的Con figure,在下拉菜單中點擊 Metrics Report Optio ns選項, 將會出現(xiàn)如下窗口,根據(jù)測試需求配置metpen,dat及Kiviat.dat文件。2.5分析執(zhí)行及結(jié)果查看1.點擊菜單欄中的 Analysis,在下拉菜單中點擊 Select Analysis,將會出現(xiàn) 如下窗口,選擇前3項,點擊Start Analysis按鈕,開始進行靜態(tài)分析。2.靜態(tài)分析結(jié)束后,點擊菜單欄中的In dividual /System Results,選擇下拉菜單 Text Results 中的 Quality Report(HTML),查看質(zhì)量報告。System
15、ResultsQanfi?ure Yi stText Result sraphical Results Analysis Scope Report 町ML IndexOverview Report (ASCII) Overvi ev Report (HTML)Quality Report (ASCII)Qualit y Rupert fHIML)AU mts Server cppNsttics Report (ASCII)Med:rics Kepo譏(HTMLSy st &Tii IfLtegrat iiori Reor-tFrocsdure Parajneters and Qlcbwl薛 K
16、epcrt察 TBUtowf:& - (Testri 盡n 1, rpfr htmlTpjxl首 PiJfi Ejt 些比 現(xiàn)do gbp-knh 、 a ?3 * +Tot*|g uf tfio|liu&E far SuIkcIaJ Q-OHiitp LuJu4iddh 亡 1.1 vt. bviil fiwJ Li ijjru h Jbikni t alAJ. Ll al t 口L f-il i.itJiL-vIlfF i r*li rr . r kaiI JiIv i iri 1 -iafii iff :町 hLs可 Fl a 1.r. ihlitfjrjfrtur rnti/z/tin
17、iHtrbtfnriiifTfft rm h t nvn st3 結(jié)果分析及測試報告編寫3.1質(zhì)量度量信息的獲取度量度量信息可通過以下幾種方式獲取:1.查看規(guī)則審查報告:點擊菜單欄中的In dividual Results/System Results,選擇下拉菜單 Text Results 中的 Quality Report (HTML)。度量元指標查看位置具體說明注釋度量=20%在 Quality Report (HTML)中 的 Global Basic Information 獲取可執(zhí)行代碼行總數(shù)與注釋行總數(shù)注釋行總數(shù)/ (注釋行總數(shù)+ 可執(zhí)行代碼行總數(shù))函數(shù)代碼行數(shù)=200Syste
18、m Results菜單下選擇Text Results 子菜單中的Quality Report(HTML)函數(shù)代碼行超過200行函數(shù)參數(shù)=7函數(shù)參數(shù)超過7個Goto語句0使用goto語句圈復雜度=10圈復雜度超過10LCSAJ密度=20LCSAJ密度超過202.查看質(zhì)量度量報告:點擊菜單欄中的In dividual Results/System Results,選擇下拉菜單 Text Results 中的 Metrics Report (HTML)。度量元指標查看位置具體說明圈復雜度=10Metric Report 中Complexity MetricsCyclomatic Complexity
19、,基本復雜度=4Esse ntial Cyclomatic Complexity控制流結(jié)點數(shù)=10Knots基本結(jié)點數(shù)=5Esse ntial KnotsLCSAJ密度=20LCSAJ and Un reachabilityMaximum LCSAJ Den sity扇入度量=7Dataflow In formati onFan In扇出度量=7Fan Out3. 查看圖形化報告:點擊菜單欄中的System Results選擇下拉菜單Graphical Results 中的 Static Bar Charts度量元指標查看位置具體說明圈復雜度=10System Results 菜單下 Grap
20、hical Results 子菜單 中的 Static Bar ChartsCyclomatic Complexity基本復雜度=4Esse ntial Cyclomatic Complexity控制流結(jié)點數(shù)=10Knots基本結(jié)點數(shù)=5Esse ntial Knots以圈復雜度為例:選擇 Static Bar Charts子菜單下的“ Essential CyclomaticComplexity”,彈出如下所示柱狀圖,在該界面,將Graph菜單下的Show BarComp onents選中,可查看函數(shù)基本圈復雜度具體信息。3.2程序質(zhì)量度量報告單表2程序質(zhì)量度量報告單度量元指標說明違反 個數(shù)
21、所在軟件具體描述函數(shù)代碼行 數(shù)=20%代碼的有效注 釋率函數(shù)參數(shù)=7函數(shù)參數(shù)個數(shù)Goto語句0Goto語句數(shù)圈復雜度=10控制流圖中邊 的數(shù)量與節(jié)點 數(shù)量之間的差 值加2基本復雜度=4圈復雜度與流 程圖中結(jié)構(gòu)化 子圖的數(shù)量之 間的差值LCSAJ密度=20LCSAJ密度是一個描述軟 件可維護性的 概念控制流結(jié)點數(shù)=10控制流結(jié)點數(shù) 表示流程圖中 控制流相交的 交點數(shù)基本結(jié)點數(shù)=5將流程圖中的 結(jié)構(gòu)化部分簡 化成一個點, 簡化以后流程 圖的結(jié)點數(shù)是 基本結(jié)點數(shù)。扇入度量=7調(diào)用本函數(shù)的 上層函數(shù)的個 數(shù)扇出度量=7本函數(shù)調(diào)用下 層函數(shù)的個數(shù)3.3靜態(tài)分析質(zhì)量報告單報告單中列出的審查容根據(jù)測試需求確
22、定,其中部分度量指標在質(zhì)量度量報告中會重復出現(xiàn),此表可以不列出。審查結(jié)果根據(jù)根據(jù)Quality Report確定。表3靜態(tài)分析質(zhì)量報告單審查項目測試容審查結(jié)果控制流分析是否存在不可達代碼是否是否存在循環(huán)條件不可達是否函數(shù)是否包含無限循環(huán)(無終止條件)是否是否存在無限循環(huán)結(jié)構(gòu)是否在循環(huán)語句中是否有多個控制變量是否是否存在浮點相等比較是否使用goto語句是否函數(shù)是否存在多個入口是否函數(shù)是否存在多個出口是否數(shù)據(jù)流分析是否存在標識名重用是否是否存在沒使用的函數(shù)參數(shù)是否函數(shù)不是所有的路徑上都有返回值是否函數(shù)的實參是全局變量是否代碼中有多余變量是否變量未賦初值就引用是否參數(shù)與期望的作用不匹配是否給值傳遞參
23、數(shù)賦值是否標識符超過31個字符是否函數(shù)定義無相應(yīng)原型是否存在潛在的無限循環(huán)是否指針在使用之前沒有進行非空檢查是否往沒有打開過的文件中寫是否文件指針在退出時沒有關(guān)閉是否表達式分析表達式中使用訂是否存在數(shù)組下標越界是否存在被零除是否SWITCH語句是否為空是否SWITCH 語句只含 DEFAULT情況是否SWITCH 語句缺少 DEFAULT是否CASE語句缺少BREAK是否返回類型為VOID的函數(shù)出現(xiàn)在表達式中是否函數(shù)中是否存在 Return語句為空是否存在混合運算是否對指針進行邏輯比較是否在邏輯表達式中使用賦值操作符是否表達式中使用空函數(shù)是否接口分析實參和形參個數(shù)不匹配(C+無)是否實參和形參
24、類型不匹配是否函數(shù)參數(shù)定義的結(jié)構(gòu)和調(diào)用的結(jié)構(gòu)不一致是否其它循環(huán)體缺少括弧是否函數(shù)參數(shù)列表為空是否函數(shù)參數(shù)列表申明不一致是否基本模塊中使用#define 定義是否SWITCH 結(jié)構(gòu)含多個(大于 1)DEFAULT是否函數(shù)返回類型不一致是否函數(shù)和函數(shù)的原型的返回不一致是否函數(shù)和函數(shù)的原型的形參不一致是否函數(shù)參數(shù)超過7個是否圈復雜度超過10是否LCSAJ密度超過20是否函數(shù)代碼行超過200行是否附錄A :靜態(tài)分析推薦規(guī)則使用說明審查項目Li ne級別測試容對應(yīng)英文規(guī)則控制流分析362M存在不可達代碼# Un reachable Code found.184# Con struct leads to
25、in feasible code.185C存在循環(huán)條件不可達# In feasible loop con diti on found.40M函數(shù)包含無限循環(huán)(無終止條件)# Procedure contains infin ite loop.27M存在無限循環(huán)結(jié)構(gòu)# Infinite loop used.204M在循環(huán)語句中有多個控制變量# More tha n one con trol variable for loop.78M存在浮點相等比較# Equality comparison of floating point.13M使用goto語句# goto detected.58C函數(shù)存在多
26、個入口# Procedure has more tha n one entry point59C函數(shù)存在多個出口# Procedure has more tha n one exit point數(shù)據(jù)流分析2M標識名重用# Label n ame reused.41M存在沒使用的函數(shù)參數(shù)# Unu sed procedure parameter.42M函數(shù)不是所有的路徑上都有返回值# Function does not retur n a value on all paths.43M函數(shù)的實參是全局變量# Actual parameter is also global to procedure.
27、44M代碼中有多余變量# Variables were declared but n ever used.45M變量未賦初值就引用# UR data flow ano malies found.51M參數(shù)與期望的作用不匹配# Parameters do not match expected acti ons.54M給值傳遞參數(shù)賦值# Attempt to cha nge parameter passed by value.12M標識符超過31個字符# Identifierexceeds *significantcharacters.127M函數(shù)定義無相應(yīng)原型# Procedure defi n
28、iti on has no associated prototype.137M存在潛在的無限循環(huán)# Potentially infinite loop found.361M指針在使用之前沒有進行非空檢查# Poin ter not checked for n ull before use380M往沒有打開過的文件中寫# Attempt to write to unopened file381M文件指針在退出時沒有關(guān)閉# File poin ter not closed on exit表達式分析192M表達式中的括號使用正確:表達式中使用訂# Curly brackets used in exp
29、ressi on.71M存在數(shù)組下標越界# Array bound exceeded.264M存在被零除# Divide by 0 found.82MSWITCH語句是否為空# Empty switch stateme nt.83MSWITCH語句只含DEFAULT情況# Switch contains default only.72MSWITCH 語句缺少 DEFAULT# No default case in switch stateme nt.84MCASE語句缺少BREAK# Switch Case not terminated with break. AV 19386M返回類型為VOID的函數(shù)出現(xiàn)在表達式中# Void procedure used in expressi on.88M函數(shù)中是否存在 Return語句為空# Function with empty retur n expressi on.153M存在混合運算# Use of mixed mode arithmetic.149M對指針進行邏輯比較# Logical
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年金融服務(wù)采購合同創(chuàng)新金融產(chǎn)品合作協(xié)議2篇
- 導演與發(fā)行方2025年度合同3篇
- 二零二五年度餐飲泔水處理與環(huán)保設(shè)施運營管理合同6篇
- 二零二五年度高校畢業(yè)生就業(yè)見習實踐基地建設(shè)合作合同3篇
- 二零二五年度航空航天設(shè)備維修承包合同樣本3篇
- 二零二五年高性能混凝土委托加工合同范本3篇
- 碎石買賣合同(二零二五年度)2篇
- 二零二五年度藥品質(zhì)量第三方檢測合同范本6篇
- 二零二五版國際貿(mào)易中貨物所有權(quán)轉(zhuǎn)移與國際貿(mào)易政策研究合同3篇
- 2025年度電力設(shè)施租賃合同標的轉(zhuǎn)讓協(xié)議3篇
- 課題申報書:大中小學鑄牢中華民族共同體意識教育一體化研究
- 巖土工程勘察課件0巖土工程勘察
- 《腎上腺腫瘤》課件
- 2024-2030年中國典當行業(yè)發(fā)展前景預測及融資策略分析報告
- 《乘用車越野性能主觀評價方法》
- 幼師個人成長發(fā)展規(guī)劃
- 2024-2025學年北師大版高二上學期期末英語試題及解答參考
- 批發(fā)面包采購合同范本
- 乘風化麟 蛇我其誰 2025XX集團年終總結(jié)暨頒獎盛典
- 2024年大數(shù)據(jù)分析公司與中國政府合作協(xié)議
- 一年級數(shù)學(上)計算題專項練習匯編
評論
0/150
提交評論