0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是完備靜態(tài)分析?

北匯信息POLELINK ? 2022-11-11 10:16 ? 次閱讀

在開發(fā)安全、可靠和合規(guī)的軟件時,完備靜態(tài)分析是一種有益的實踐。本篇文章中,我們將討論完備分析與靜態(tài)分析的不同之處,為什么它很重要,以及完備靜態(tài)代碼分析的工作原理。

什么是完備靜態(tài)分析?

完備靜態(tài)分析是指分析結(jié)果的完整性或"健全性"。對于提供可靠性分析結(jié)果的靜態(tài)分析工具,這意味著如果軟件中存在特定的錯誤,缺陷或漏洞,那么該工具將出具相關(guān)的報告。

如果出現(xiàn)存在爭議的問題,那么工具將以某種形式提出警告*,這樣一來任何問題都會的得到診斷。

(*備注:這些在Helix QAC中被歸類為可能的問題,如果不需要完備分析,則可以禁用。)

完備靜態(tài)分析不同于其他靜態(tài)分析的地方在于,后者的結(jié)果可能基于在一定時間或資源內(nèi)可能發(fā)生的事情。

鑒于對程序的運行時行為進行建模需要某些近似值(例如,缺乏對程序輸入或操作系統(tǒng)狀態(tài)的知識),完備分析需要過度近似。

過度近似可以保證沒有假陰性(對于給定的漏洞類型),而低近似值通常優(yōu)先考慮沒有誤報。

poYBAGNtlomAdgNyAAGjiPgMAAg485.png

其他形式的靜態(tài)分析沒有表現(xiàn)出這種嚴格性,并且可能包含低近似和過近似的混合。

也許完備和不完備的分析工具所得出的結(jié)果可能都會為程序的特定部分提供一份清晰的運行狀態(tài)證明,但是完備分析引擎提供了額外的保證,即印證這一結(jié)論的所有可能性和所有路徑都已得到驗證。

完備靜態(tài)分析的工作原理

在提到完備分析時,我們通常會考慮更復(fù)雜的程序間和程序內(nèi)控制和數(shù)據(jù)流分析形式,正如當(dāng)今最先進的靜態(tài)分析工具所采用的那樣。

與更簡單的代碼語法和語義分析不同,控制流和數(shù)據(jù)流靜態(tài)分析通常與檢測更復(fù)雜的問題相關(guān)聯(lián),例如:

  • 空指針取消引用
  • 陣列或緩沖區(qū)下溢和溢出
  • 未初始化對象的使用
  • 內(nèi)存分配和取消分配異常
  • 數(shù)字溢出、下溢和環(huán)繞
  • 除以零
  • 死代碼
  • 數(shù)據(jù)爭用、死鎖和其他并發(fā)沖突

控制和數(shù)據(jù)流分析是一項高計算負載的任務(wù),因為必須考慮系統(tǒng)的所有可能輸入以及通過系統(tǒng)所有可能的控制流路徑。事實上,由于控制流和數(shù)據(jù)流分析的暴力窮舉算法會導(dǎo)致分析時間指數(shù)暴漲,因此很少采用該方案。符號執(zhí)行和抽象解釋算法將是一個更優(yōu)雅的選擇。

根據(jù)Roberto Amadini、Graeme Gange、Peter Schachte、Harald S?ndergaard和Peter J.Stuckey的抽象解釋、符號執(zhí)行和約束,“抽象解釋是一個靜態(tài)分析框架,用于完備的過度近似程序的所有可能運行時狀態(tài)?!?。

而“符號執(zhí)行是一個可訪問性分析框架,它試圖探索程序的所有可能的執(zhí)行路徑”。抽象解釋和符號執(zhí)行在執(zhí)行期間以不變性或路徑條件的形式維持約束,該路徑條件確定可以執(zhí)行哪些路徑,并且可以在各種數(shù)據(jù)源中保持哪些值。

然而,需要注意的是,雖然抽象解釋是完備的,但符號執(zhí)行卻不是。

為什么完備靜態(tài)分析很重要?

健全性是安全關(guān)鍵軟件系統(tǒng)中的一個重要因素,特別是因為它保證軟件不包含任何正在檢查的編碼缺陷。也就是說,完備分析可用于顯示軟件中沒有錯誤。

因此,在汽車系統(tǒng)的ISO 26262功能安全(FuSa)標準中,抽象解釋分析被明確引用為軟件單元驗證方法(表7,方法1i)。

如何使用Helix QAC 執(zhí)行完備靜態(tài)分析

由于能夠提供深入和高度準確的分析結(jié)果,Helix QAC在30多年來一直是一個值得信賴的靜態(tài)代碼分析工具。Helix QAC能夠進行良好的靜態(tài)分析,是需要滿足嚴格合規(guī)要求的嚴格監(jiān)管和安全關(guān)鍵行業(yè)的首選工具。

但是,為了在Helix QAC項目中啟用完備分析,需要執(zhí)行某些步驟:

poYBAGNtloiATUbtAAKTVrTm6kA962.png

數(shù)據(jù)流深度需要設(shè)置為最大值(5),這將添加多個 -prodoption,如上面的屏幕截圖所示。(請參閱 QAC 或 QAC++ 組件手冊中的"分析超時"部分,了解為什么這些"超時"設(shè)置對于聲音分析是必需的。

此外,“df::inter=5”和“inter-TU Analysis”雖然不是完備分析所必需的,但可以以額外的計算成本啟用,以減少需要報告的可能問題的數(shù)量。這些設(shè)置的效果是啟用程序間和程序內(nèi)分析。

選擇Helix QAC進行完備靜態(tài)分析

親身體驗Helix QAC完備靜態(tài)分析對代碼質(zhì)量和健全性的影響,立即聯(lián)系北匯信息以免費試用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68229
收藏 人收藏

    評論

    相關(guān)推薦

    汽車異構(gòu)硬件平臺開發(fā)如何進行靜態(tài)代碼分析

    先進的靜態(tài)代碼分析工具,其新版本中引入的多CCT功能為開發(fā)人員提供了強大的支持,該功能不僅簡化了多編譯器環(huán)境下的代碼分析過程,還可以極大增強代碼的質(zhì)量和安全性。
    的頭像 發(fā)表于 10-09 16:15 ?424次閱讀
    汽車異構(gòu)硬件平臺開發(fā)如何進行<b class='flag-5'>靜態(tài)</b>代碼<b class='flag-5'>分析</b>

    恒訊科技分析:如何測試海外靜態(tài)IP服務(wù)的穩(wěn)定性和速度?

    測試海外靜態(tài)IP服務(wù)的穩(wěn)定性和速度可以通過以下步驟進行: 1、選擇測試工具:使用網(wǎng)絡(luò)測試工具,如ping命令、traceroute(或 racert)、網(wǎng)絡(luò)速度測試網(wǎng)站(例如
    的頭像 發(fā)表于 08-14 14:58 ?266次閱讀

    RS觸發(fā)器的靜態(tài)特性分析

    RS觸發(fā)器(Reset-Set Trigger)是數(shù)字電路中的一種基本邏輯單元,具有兩個穩(wěn)定狀態(tài),即“置位”(Set)狀態(tài)和“復(fù)位”(Reset)狀態(tài)。其靜態(tài)特性主要指的是在沒有外部觸發(fā)信號變化時,觸發(fā)器保持其當(dāng)前狀態(tài)不變的能力。
    的頭像 發(fā)表于 08-12 09:55 ?378次閱讀

    對放大電路的分析方法介紹

    放大電路是電子技術(shù)中非常重要的組成部分,它廣泛應(yīng)用于信號處理、通信、測量等領(lǐng)域。對于放大電路的分析,通常可以分為直流分析和交流分析兩種情況。下面我們將介紹這兩種分析方法。 直流
    的頭像 發(fā)表于 08-07 10:08 ?443次閱讀

    靜態(tài)工作點的高低對電路有什么影響

    靜態(tài)工作點(Q點)是半導(dǎo)體器件在直流條件下的運行狀態(tài),它對電路的性能和穩(wěn)定性有著重要的影響。在本文中,我們將介紹靜態(tài)工作點的高低對電路的影響,包括其對放大器性能、穩(wěn)定性、功耗、熱效應(yīng)等方面
    的頭像 發(fā)表于 08-06 15:38 ?1055次閱讀

    基于ANSYS的高速磨削電主軸動靜態(tài)性能分析

    以國產(chǎn)120MD60Y6型高速磨削電主軸為研究對象,使用有限元分析方法,基于ANSYS Workbench建立高速電主軸模型,先分析靜態(tài)特性,計算工作條件下電主軸前端所受徑向力和軸承徑向剛度;然后
    的頭像 發(fā)表于 08-05 11:20 ?152次閱讀
    基于ANSYS的高速磨削電主軸動<b class='flag-5'>靜態(tài)</b>性能<b class='flag-5'>分析</b>

    恒訊科技分析:香港站群服務(wù)器為什么要做偽靜態(tài)處理呢?

    提高搜索引擎優(yōu)化(SEO)效果:偽靜態(tài)處理可以使得動態(tài)網(wǎng)頁URL看起來像是靜態(tài)網(wǎng)頁的URL,這有助于搜索引擎更好地索引網(wǎng)站內(nèi)容。搜索引擎通常偏好靜態(tài)網(wǎng)頁,因為它們認為靜態(tài)網(wǎng)頁更穩(wěn)定、內(nèi)
    的頭像 發(fā)表于 07-31 12:49 ?193次閱讀

    IAR通過多架構(gòu)認證的靜態(tài)分析工具加速代碼質(zhì)量自動化

    公司推出經(jīng)TüV SüD認證的C-STAT靜態(tài)分析工具,適用于最新發(fā)布的IAR Embedded Workbench for RISC-V V3.30.2功能安全版。
    的頭像 發(fā)表于 06-19 15:49 ?319次閱讀

    晶閘管的靜態(tài)特性與伏安特性詳解

    晶閘管的靜態(tài)特性主要涉及其在靜態(tài)條件下的電氣特性,包括其導(dǎo)通和關(guān)斷的行為。
    的頭像 發(fā)表于 05-24 18:10 ?2047次閱讀

    靜態(tài)電阻應(yīng)變儀的使用及橋路連接

    靜態(tài)電阻應(yīng)變儀是一種用于測量結(jié)構(gòu)或材料在靜態(tài)負載下產(chǎn)生的微小形變的儀器。
    的頭像 發(fā)表于 05-16 15:48 ?1994次閱讀

    如何設(shè)置靜態(tài)IP代理

    靜態(tài)IP
    jf_60146132
    發(fā)布于 :2024年04月29日 07:46:31

    怎么用Vivado做覆蓋率分析

    在做仿真的時候往往會去做代碼覆蓋率和功能覆蓋率的分析,來保證仿真是做的比較充分完備的。
    的頭像 發(fā)表于 01-03 12:34 ?1482次閱讀
    怎么用Vivado做覆蓋率<b class='flag-5'>分析</b>

    靜態(tài)電流什么意思 靜態(tài)電流和動態(tài)電流的區(qū)別

    靜態(tài)電流什么意思 靜態(tài)電流和動態(tài)電流的區(qū)別? 靜態(tài)電流是指電荷在不發(fā)生移動的情況下所產(chǎn)生的電流。在靜電場中,電荷通過金屬導(dǎo)線或其他連續(xù)的導(dǎo)電體產(chǎn)生靜態(tài)電流的流動。
    的頭像 發(fā)表于 12-19 14:02 ?2275次閱讀

    Cisco配置靜態(tài)路由

    Cisco配置靜態(tài)路由
    的頭像 發(fā)表于 12-03 09:43 ?632次閱讀
    Cisco配置<b class='flag-5'>靜態(tài)</b>路由

    靜態(tài)IP與動態(tài)IP的區(qū)別

    靜態(tài)IP和動態(tài)IP是計算機網(wǎng)絡(luò)中常用的兩種IP地址分配方式,它們在分配方式、使用范圍、安全性和適用場景等方面存在一些區(qū)別。 一、靜態(tài)IP的定義與特點 靜態(tài)IP(Static IP)是指在網(wǎng)絡(luò)上
    的頭像 發(fā)表于 11-27 14:44 ?3381次閱讀