能夠發現的c/c++缺陷(部分)
c/c++安全性問題(部分)
并發
死鎖
錯誤使用的阻塞調用
性能下降
記憶體洩漏
檔案句柄洩漏
定制的記憶體和網絡資源洩漏
資料庫連接配接洩漏
導緻崩潰的缺陷
空指針引用
釋放後引用
多次釋放
不正确的記憶體配置設定
不比對的數組建立/删除
不正确的程式行為
邏輯錯誤導緻的死代碼
未初始化變量
負數的無效引用
不正确的apis使用
stl使用錯誤
api錯誤處理
安全編碼缺陷
緩沖區溢出
整形溢出
缺失的/不充分的惡意資料和字元串輸入的驗證
格式化字元串的不安全
sql注入攻擊
交叉站點腳本攻擊
隐含的缺陷
整個系統折衷
服務拒絕攻擊
優先權擴張
保密資料洩漏
資料丢失
仲裁代碼執行
coverity公司是由一流的斯坦福大學的科學家于2002年成立的,産品核心技術是1998年至2002年在斯坦福大學計算機系統實驗室開發的,用于解決一個計算機科學領域最困難的問題,在2003年釋出了第一個能夠幫助linux、freebsd等開源項目檢測大量關鍵缺陷的系統,coverity是唯一位列idc前10名軟體品質工具供應商的靜态分析工具廠商,被第三方權威調查機構vdc評為靜态源代碼分析領域的上司者,市場占有率處于絕對領先地位。
美國coverity公司提供最先進的和可配置的用于檢測軟體缺陷和安全隐患的靜态源代碼分析解決方案,coverity将基于布爾可滿足性驗證技術應用于源代碼分析引擎,分析引擎利用其專利的軟體dna圖譜技術和meta-compilation技術,綜合分析源代碼、編譯建構系統和作業系統等可能使軟體産生的缺陷,coverity是第一個能夠快速、準确分析當今的大規模(幾百萬、甚至幾千萬行的代碼)、高複雜度代碼的工具,coverity解決了影響源代碼分析有效性的很多關鍵問題:建構內建、編譯相容性、高誤報率、有效的錯誤根源分析等。
産品功能
coverity static analysis
(也稱prevent)是檢測和解決c、c++、java和c#源代碼中最嚴重的缺陷的領先的自動化方法。通過對您的建構環境、源代碼和開發過程給出一個完整的分析,prevent建立了獲得高品質軟體的标準。
靜态源代碼分析允許我們在軟體開發生命周期的早期階段發現和修複缺陷,節省數以百萬計的相關成本。prevent是業界标準,因為隻有coverity了解和掌握靜态源代碼分析技術所具有的嚴格的要求。
l coverity了解建構系統——prevent通過在作業系統流程這個層次監測您的建構系統來獲得每一個操作的清晰視圖,展現您的軟體。
l coverity了解源代碼——prevent
檢測比當今市場上任何其他工具都更多的源代碼資訊;代碼的結構、含義和意圖都被用來揭示其中的嚴重的錯誤和不安全性。
l coverity了解開發者——prevent
通過一個客戶化的工作流、功能強大的分析器和易于使用的工具,能夠使缺陷在幾分鐘内被定位,解決缺陷。
平台支援:
目标機平台:powerpc,arm,mips,x86,sparc,xscale,sh,codefire,sh,st
20,8051,
ti dsp c3000/c6000/c55x/c54x, motorola 68hc05/68hc11, freescale
68hc08/hcs08/68hc12/hcs12x, renesas m16c/h8/m32c,
c51/c166/c251等;
嵌入式作業系統:vxworks,embedded linux,qnx,rtems,ucos,wince,windows
embedded,palmos,symbian, psos、nucleus、threadx,
integrity、ose,uclinux,國産os等等;
主機平台:apple mac os x 10.4,cygwin,freebsd,hpux,linux,mac os x ,
netbsd(2.0) ,solaris sparc ,solaris x86,windows等;
支援的編譯器:arm ads/rvct,freescale codewarrior ,gnu c/c++ ,green
hills
hp acc,i-tech picc,iar,intel c/c++ ,marvell msa ,microsoft visual
c++,qnx ,renesas ,sun c/c++ ,ti code composer ,wind river,
支援任何其他的ansi c相容的編譯器.
産品特點及優勢
coverity産品專長于準确的查找最嚴重和最難檢測的缺陷,具有以下優勢:
精确性——coverity
prevent的特别之處在于查找精确,具有業界最低的誤報率(小于15%)。當許多其他的源代碼分析産品以很高的誤報率使得其不可用時,coverity的虛假路徑裁剪、統計分析和其它創新減少了誤報的産生。附加的配置和微調能夠進一步減少誤報率。
分析的深度——coverity
prevent提供過程間資料流分析和統計分析,評審整個程式的互動和所有的可能的路徑。coverity
prevent檢查企業特定的apis和标志使用中的不一緻性,精确的檢測qa、安全評審和現場會發生的缺陷。
分析的廣度——coverity
prevent采用查找最嚴重的錯誤的最先進的技術,提高您的産品的品質和安全性。coverity
prevent可以檢測嚴重的問題,例如系統崩潰、記憶體洩漏、記憶體錯誤、不确定行為、并發缺陷和安全性問題。
低擁有成本——coverity
prevent無縫的與您已有的環境內建,能夠快速部署和配置。
可擴充——coverity
prevent使您能夠在我們的強大的分析引擎上建立定制的檢查器,來滿足您的開發組織和代碼的特定需求。您可以設定定制的規則,來強化編碼标準或者檢測代碼中的錯誤。
強大的可配置性——coverity
prevent能夠快速的分析您的代碼,不需要寫測試用例。通常百萬行的代碼僅需要幾個小時,其他的工具需要幾天,甚至幾個星期來分析大規模代碼。
廣泛的平台支援——coverity
prevent支援最廣泛的編譯器和硬體平台,可最大化的滿足使用者多平台的測試要求。
以 c/c++為例
prevent 分析引擎使得缺陷檢測檢查器擁有源代碼最精确的描述。
prevent 針對c/c++的分析引擎
引擎
功能
路徑流程引擎
通過建構一個表示經過每一個函數的所有的路徑的圖表分析您代碼中的每個函數的控制流
資料追蹤引擎
用于分析從程式中每個路徑中的聲明收集的所有的整型和布爾型等資料
統計引擎
用于分析您的代碼作為一個整體的行為特征
過程間調用總結引擎
一個主要的創新,使得prevent
可以執行整個程式的分析,分析檔案間和子產品間的任何層次的複雜的調用鍊
類型流程引擎
用于提高c++分析中依賴于類層次關系的報告的結果的精度
虛假路徑引擎
用于分析每個分支條件,以确定在目前路徑它将是真、假或不确定
加速引擎
儲存橫越每個路徑時的每個缺陷分析所收集的資訊;消除備援路徑,不需要橫越任何不必要的路徑來找到最多的缺陷
資料傳播引擎
把過程間調用總結引擎産生的所有總結和資料追蹤引擎記錄的所有資料彙總起來,是coverity特有的、上下文敏感的過程間分析能力的關鍵
增量分析引擎
通過緩存分析資料來提高性能,以便後續的分析僅需要包含變化的資料
reference:
http://www.broadskytech.com/tabid/90/articleid/117/default.aspx