SPASVO首頁 | 測試工具 | 高校頻道 | 技術(shù)文檔 | 測試專題
  • 問題提出
  • 工具介紹
  • 使用說明
  • 產(chǎn)品構(gòu)成
  • 工具價值
應(yīng)用越來越復(fù)雜,代碼的質(zhì)量越來越重要
外包人員越來越多,難以保證代碼質(zhì)量
人為方式提升代碼質(zhì)量成本居高不下
對代碼的自定義規(guī)范要求更多
對代碼的缺陷需要跟蹤管理
團隊化、自動化的代碼質(zhì)量管理
CA靜態(tài)分析工具
CA靜態(tài)分析工具
代碼審查:
--發(fā)現(xiàn)不符合編碼規(guī)范的代碼
--檢測代碼中的缺陷
--發(fā)現(xiàn)安全漏洞
--用戶自定義規(guī)則
跟蹤發(fā)現(xiàn)的問題
--CA發(fā)現(xiàn)的問題日志直接登記在[測試中心(TestCenter)]
--根據(jù)日志來提交缺陷
--自定義缺陷管理流程來跟蹤缺陷
--缺陷統(tǒng)計分析
CodeAnalyzer能做什么
規(guī)則示例:
--代碼的編寫格式、縮進
--變量命名規(guī)范
--變量初始化
--返回值
--控制流編寫、循環(huán)的編寫
支持的規(guī)則分類:
--詞法規(guī)則(例:變量需要有含義的英文字母)
--語法規(guī)則(例:變量初始化的位置、package編寫規(guī)范)
--語義規(guī)則(例:數(shù)據(jù)庫連接管理)
發(fā)現(xiàn)不符合編碼規(guī)范的代碼
原理:
--對代碼進行編譯檢查,生成語法樹
--生成執(zhí)行分支
--對每個分支進行模擬執(zhí)行,發(fā)現(xiàn)缺陷
缺陷:
--內(nèi)存管理
--文件管理
--變量管理(參數(shù)、類變量、局部變量)
發(fā)現(xiàn)代碼中的缺陷
根據(jù)定義的安全規(guī)則,檢查漏洞:
--代碼安全處理規(guī)則
--掃描代碼,生成路徑分支
--模擬執(zhí)行,發(fā)現(xiàn)安全漏洞
發(fā)現(xiàn)安全漏洞
面向團隊的分析日志
面向團隊的分析日志
登錄到測試中心
登錄到測試中心
設(shè)置靜態(tài)分析計劃
設(shè)置靜態(tài)分析計劃
查看分析日志
查看分析日志
根據(jù)日志來提交缺陷
根據(jù)日志來提交缺陷
缺陷查看與跟蹤
缺陷查看與跟蹤
缺陷報告與缺陷分析
缺陷報告與缺陷分析
掃描分析報告
掃描分析報告
靜態(tài)分析的問題管理流程
靜態(tài)分析的問題管理流程
功能:
--與語法無關(guān)的元素的規(guī)范性檢查
詳細處理:
--縮進
--空行處理
--換行管理
--注釋
代碼預(yù)處理
原理(編譯算法):
--根據(jù)c/java的語法BNF范式,編寫語法分析器,對源代碼進行語法分析
--優(yōu)化BNF范式為LL1文法
--編寫詞法分析器
--根據(jù)文法對編碼進行解析處理
處理的結(jié)果:
--語法樹
--變量登記表
----本地變量
----臨時變量
----類變量
----全局變量(c語言的情況)
----參數(shù)變量
----特殊變量(數(shù)據(jù)庫連接、文件句柄等)
語法分析
語法分析過程:
--定義BNF規(guī)則處理
--定義處理狀態(tài)機
--根據(jù)輸入的關(guān)鍵字、語法符號了決定:
----推演
----應(yīng)用的規(guī)則
語法分析狀態(tài)機
BNF的一個例子
BNF的一個例子
BNF范式定義(JavaBNF范式)
BNF范式定義(JavaBNF范式)
元素:
--終結(jié)符
----關(guān)鍵字
------if/else ……
----字符串
----標識符
--非終結(jié)符
BNF范式的元素
代碼語法樹
代碼語法樹
對代碼樹的處理:語義分析
對代碼樹的處理:語義分析
根據(jù)變量登記表:
--處理變量的規(guī)則:命名規(guī)則、初始化規(guī)則
--處理變量的狀態(tài)變更:
----open-close規(guī)則
--報告錯誤(寫入日志)
語義分析
根據(jù)路徑來檢驗規(guī)則
根據(jù)路徑來檢驗規(guī)則
根據(jù)實際情況來對c/java定義規(guī)則:
--對于數(shù)據(jù)庫聯(lián)接處理的規(guī)則
--對于文件處理的規(guī)則
--對于安全處理的規(guī)則
--對于result處理規(guī)則
--對于返回處理規(guī)則
--對于內(nèi)存管理的規(guī)則
--……
自定義規(guī)則
不需要測試用例
--可以捕獲測試用例集漏掉的問題
--不需要人力投入來設(shè)計用例、執(zhí)行用例
盡早的檢測出代碼的缺陷
--每次checkin時刻,檢查代碼
--可以更容易更便宜的得到修復(fù)
--容易的獲取代碼分析報告
從數(shù)據(jù)和程序來分析, 更容易發(fā)現(xiàn)潛在問題
--分析考慮了程序內(nèi)部的過程交互,是上下文關(guān)聯(lián)、路徑敏感和對象敏感的。
--使用數(shù)據(jù)流分析和控制流分析
與編譯器無關(guān)
--不需要編譯和額外開銷
支持代碼走查
--支持逆向工程
--支持面向類的檢查
--生成逆向工程文件
報告
--生成xml的報告
--生成在TestCenter中的報告
集成
--能夠與其他工具集成,如版本管理工具等
CodeAnalyzer的價值
集成方案:unix C
集成方案:unix C
掃描整個項目
掃描整個項目
增加屬性:
--提交人
--程序文件名
--錯誤類型
--函數(shù)/方法名
--位置(行,列)
缺陷屬性修改
項目集成
項目集成
滬ICP備07036474號 2003-2016 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd