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

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

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

什么是靜態(tài)代碼分析?靜態(tài)代碼分析概述

北匯信息POLELINK ? 2023-07-19 12:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

靜態(tài)分析可幫助面臨壓力的開發(fā)團(tuán)隊(duì)。高質(zhì)量的版本需要按時交付。需要滿足編碼和合規(guī)性標(biāo)準(zhǔn)。錯誤不是一種選擇。

這就是開發(fā)團(tuán)隊(duì)使用靜態(tài)分析工具/源代碼分析工具的原因。在這里,我們將討論靜態(tài)分析和使用靜態(tài)代碼分析器的好處,以及靜態(tài)分析的局限性。

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

靜態(tài)分析是一種調(diào)試方法,通過自動檢查源代碼來完成,而無需執(zhí)行程序。這使開發(fā)人員能夠了解他們的代碼庫,并有助于確保其合規(guī)性和安全可靠性。

什么是靜態(tài)代碼分析?

靜態(tài)代碼分析是指靜態(tài)分析工具執(zhí)行的操作,即根據(jù)一組(或多組)編碼規(guī)則分析一組代碼。

靜態(tài)代碼分析和靜態(tài)分析通常與源代碼分析一起互換使用。

靜態(tài)代碼分析解決了源代碼中可能導(dǎo)致漏洞的弱點(diǎn)。當(dāng)然,這也可以通過手動源代碼審查來實(shí)現(xiàn)。但是使用自動化工具要有效得多。

靜態(tài)分析通常用于遵守編碼準(zhǔn)則,例如 MISRA。 它通常用于遵守行業(yè)標(biāo)準(zhǔn),例如ISO 26262。

什么時候使用靜態(tài)代碼分析器/源代碼分析工具執(zhí)行靜態(tài)分析?

靜態(tài)代碼分析是在軟件測試開始之前的開發(fā)早期進(jìn)行的。對于實(shí)踐DevOps的組織來說,靜態(tài)代碼分析發(fā)生在“創(chuàng)建”階段。

靜態(tài)代碼分析還通過創(chuàng)建自動反饋循環(huán)來支持 DevOps。開發(fā)人員會很早就知道他們的代碼中是否存在任何問題,解決這些問題會更容易。

靜態(tài)分析與動態(tài)分析

那么, 靜態(tài)分析和動態(tài)分析有什么區(qū)別 呢?
這兩種類型的代碼分析都可以檢測缺陷。最大的區(qū)別在于 他們在開發(fā)生命周期中發(fā)現(xiàn)缺陷的地方。

靜態(tài)分析在運(yùn)行程序之前(例如,在編碼和單元測試之間)識別缺陷。

動態(tài)代碼分析在運(yùn)行程序后(例如,在單元測試期間)識別缺陷。然而,一些編碼錯誤可能不會在單元測試期間出現(xiàn)。因此,動態(tài)測試可能會遺漏一些靜態(tài)代碼分析所能發(fā)現(xiàn)的缺陷。

靜態(tài)代碼分析器/靜態(tài)分析工具的局限性是什么?

靜態(tài)代碼分析用于開發(fā)特定階段的特定目的。但是靜態(tài)代碼分析工具存在一些局限性。

不了解開發(fā)人員的意圖

wKgaomS3Yb6ACBvhAABiM2Fl43M943.png

靜態(tài)分析工具可以在該計算中檢測到可能的溢出。但它不能確定功能根本不起預(yù)期的作用!

不可靜態(tài)執(zhí)行的規(guī)則

一些編碼規(guī)則依賴于外部文檔。或者它們可以接受主觀解釋。

例如:
CERT-C MSC04:以可讀的方式始終如一地使用注釋。
可能的缺陷會導(dǎo)致假陽性和假陰性
在某些情況下,工具只能報告可能存在缺陷。

wKgZomS3Yb6AZ-i0AACE69mcc08649.png

如果我們對 foo() 一無所知,我們就不知道x的值是多少。

結(jié)果是不可判定的。這意味著工具可能會報告實(shí)際上不存在的缺陷(假陽性)。或者他們可能無法報告真正的缺陷(假陰性)。

靜態(tài)代碼分析器有哪些優(yōu)勢?

靜態(tài)分析工具有幾個好處,尤其是當(dāng)您需要遵守行業(yè)標(biāo)準(zhǔn)時。
最好的靜態(tài)代碼分析工具提供了速度、深度和準(zhǔn)確性。

速度

開發(fā)人員進(jìn)行手動代碼審查需要時間。自動化工具要快得多。

靜態(tài)代碼檢查解決了早期的問題,并準(zhǔn)確地指出了代碼中的錯誤所在。因此,您將能夠更快地修復(fù)這些錯誤。此外,早期發(fā)現(xiàn)的編碼錯誤修復(fù)成本更低。

深度

測試不能覆蓋所有可能的代碼執(zhí)行路徑。但是靜態(tài) 代碼分析器 可以。

在構(gòu)建過程中,靜態(tài)代碼分析器會檢查代碼。您將根據(jù)所應(yīng)用的規(guī)則深入分析代碼中可能存在的潛在問題。
下面是 Helix QAC中深入代碼分析的示例 。

wKgZomS3Yb6ALO32AAJ4-ycuic8096.png

Helix QAC 中的代碼分析示例

準(zhǔn)確性

手動源代碼審查容易出現(xiàn)人為錯誤。自動化工具不是。

他們掃描每一行代碼以識別潛在問題。這有助于您確保在測試開始之前就有最高質(zhì)量的代碼。畢竟,當(dāng)您遵守編碼標(biāo)準(zhǔn)時,質(zhì)量是至關(guān)重要的。

靜態(tài)分析和靜態(tài)代碼分析器如何幫助開發(fā)人員左移?

靜態(tài)分析是確保軟件應(yīng)用程序可靠性、安全性和可維護(hù)性的重要技術(shù)。它幫助開發(fā)人員及早發(fā)現(xiàn)和解決問題,提高代碼質(zhì)量,增強(qiáng)安全性,確保法規(guī)遵從性,并提高效率。使用靜態(tài)分析工具,開發(fā)人員可以構(gòu)建質(zhì)量更好的軟件,降低安全漏洞的風(fēng)險,并最大限度地減少調(diào)試和修復(fù)問題所花費(fèi)的時間和精力。

術(shù)語“左移”是指在軟件開發(fā)生命周期(SDLC)的早期集成自動化軟件測試和分析工具的做法。傳統(tǒng)上,測試和分析通常是在編寫代碼后進(jìn)行的,這導(dǎo)致了解決問題的被動方法。通過左移,開發(fā)人員可以在問題變成問題之前發(fā)現(xiàn)問題,從而減少調(diào)試和維護(hù)所需的時間和精力。這在敏捷開發(fā)中尤其重要,因?yàn)轭l繁的代碼更改和更新可能會導(dǎo)致許多需要解決的問題。

靜態(tài)分析的一個關(guān)鍵好處是,它可以節(jié)省調(diào)試和測試的時間和精力。通過在開發(fā)過程的早期識別潛在問題,您可以在任何問題變得更加難以修復(fù)(且成本高昂)之前解決它們。隨著時間的推移,您還將獲得更高質(zhì)量的應(yīng)用程序,這些應(yīng)用程序更可靠、更容易維護(hù),并防止問題在整個代碼庫中傳播,從而使以后更難識別和修復(fù)。

使用靜態(tài)分析左移的好處包括:

  1. 及早發(fā)現(xiàn)問題。 通過將靜態(tài)分析集成到開發(fā)過程中,開發(fā)人員可以盡早發(fā)現(xiàn)問題,使其在成為更大的問題之前得到解決。這減少了調(diào)試和維護(hù)所需的時間和精力,并有助于確保代碼的可靠性和安全性。
  2. 降低成本。 在SDLC中較早地解決問題可以降低后期修復(fù)bug和其他問題的成本。這可以節(jié)省時間和資源,并降低可能影響項(xiàng)目時間表的延誤或其他問題的風(fēng)險。
  3. 提高代碼質(zhì)量。 靜態(tài)分析有助于識別編碼標(biāo)準(zhǔn)違規(guī)和其他可能影響代碼質(zhì)量的問題。通過盡早解決這些問題,開發(fā)人員可以確保代碼編寫良好、可維護(hù)且易于調(diào)試。
  4. 增強(qiáng)的安全性。 靜態(tài)分析工具可以識別代碼中的安全漏洞,允許開發(fā)人員在代碼發(fā)布到生產(chǎn)環(huán)境之前解決這些問題。這可以降低安全漏洞和其他可能影響應(yīng)用程序安全性的問題的風(fēng)險。

使用靜態(tài)分析左移如何幫助提高利潤

通過靜態(tài)分析左移還可以提高組織的估計投資回報率 (ROI) 和成本節(jié)約。

靜態(tài)分析的主要優(yōu)點(diǎn)之一是它能夠在SDLC早期發(fā)現(xiàn)缺陷和漏洞。從長遠(yuǎn)來看,早期檢測可以節(jié)省您的公司時間和金錢。根據(jù) 美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST) 的一項(xiàng)研究,修復(fù)缺陷的成本隨著開發(fā)周期的進(jìn)展而顯著增加。在需求階段檢測到的缺陷修復(fù)成本可能約為60美元,而在生產(chǎn)中檢測到的缺陷可能高達(dá)10000美元!通過采用靜態(tài)分析,組織可以減少進(jìn)入生產(chǎn)階段的缺陷數(shù)量,并顯著降低修復(fù)缺陷的總體成本。

除了降低修復(fù)缺陷的成本外,靜態(tài)分析還可以提高代碼質(zhì)量,從而進(jìn)一步節(jié)省成本。改進(jìn)的代碼質(zhì)量可以減少測試、調(diào)試和維護(hù)所需的時間和精力。 IBM 的一項(xiàng)研究發(fā)現(xiàn) ,通過提高代碼質(zhì)量,修復(fù)缺陷的成本最多可降低75%。

安全性是靜態(tài)分析可以幫助降低成本的另一個領(lǐng)域,尤其是與安全漏洞和負(fù)面品牌狀態(tài)相關(guān)的成本。 IBM的一項(xiàng)研究發(fā)現(xiàn),數(shù)據(jù)泄露的成本可能在125萬至819萬美元之間。靜態(tài)分析可以在SDLC的早期發(fā)現(xiàn)安全漏洞,使組織能夠在部署軟件之前修復(fù)這些漏洞。通過這樣做,組織可以顯著降低安全漏洞的風(fēng)險和成本,并保護(hù)其聲譽(yù)。

除了節(jié)省成本外,靜態(tài)分析還可以提高生產(chǎn)力。通過在開發(fā)周期的早期發(fā)現(xiàn)缺陷,開發(fā)人員可以減少日后調(diào)試和修復(fù)缺陷所需的時間和精力。這可以為其他開發(fā)活動(如功能開發(fā)或測試)騰出時間。通過提高生產(chǎn)力,組織可以減少軟件開發(fā)的時間和成本,并提高更快地交付軟件的能力。

在軟件開發(fā)中采用左移方法可以為組織帶來顯著的成本節(jié)約和投資回報率。通過及早發(fā)現(xiàn)缺陷和漏洞,公司可以顯著降低修復(fù)缺陷的成本,提高代碼質(zhì)量和安全性,并提高生產(chǎn)力。這些好處可以提高客戶滿意度、提高軟件質(zhì)量并降低開發(fā)成本。

如何選擇靜態(tài)代碼分析器?

在決定哪種工具適合您時,需要考慮以下幾點(diǎn)。
程序設(shè)計語言
分析器是為許多不同的編程語言設(shè)計的。因此,選擇一個支持你的語言的工具是很重要的。

標(biāo)準(zhǔn)
靜態(tài)分析器的主要用途之一是符合標(biāo)準(zhǔn)。因此,如果你所在的行業(yè)需要編碼標(biāo)準(zhǔn),你需要確保你的工具支持該標(biāo)準(zhǔn)。

為什么選擇 Perforce 靜態(tài)代碼分析器工具進(jìn)行靜態(tài)分析?

30多年來,Perforce靜態(tài)分析解決方案一直備受信賴,能夠?yàn)楦餍懈鳂I(yè)的關(guān)鍵任務(wù)項(xiàng)目團(tuán)隊(duì)提供最準(zhǔn)確的結(jié)果。Helix QAC和Klocwork經(jīng)過認(rèn)證,符合編碼標(biāo)準(zhǔn)和合規(guī)要求。而且它們提供的假陽性和假陰性更少。

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

    關(guān)注

    69

    文章

    5147

    瀏覽量

    89160
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4897

    瀏覽量

    70577
  • 軟件測試
    +關(guān)注

    關(guān)注

    2

    文章

    238

    瀏覽量

    19171
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

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

    的 IP,只要遠(yuǎn)端發(fā)起 BGP 握手,且來自 AS 65002,即自動建立對等關(guān)系。四、實(shí)戰(zhàn)應(yīng)用場景分析場景一:傳統(tǒng)運(yùn)營商邊界路由器 使用靜態(tài) BGP BGP 對等關(guān)系固定,變化極少 需要手動管理
    發(fā)表于 06-24 06:57

    【JVM開發(fā)者必看】IntelliJ IDEA代碼分析實(shí)踐指南:實(shí)時糾錯、冗余檢測、自動修復(fù)等

    【IntelliJ IDEA中的代碼分析技巧】靜態(tài)代碼分析是指在不實(shí)際運(yùn)行代碼的情況下掃描
    的頭像 發(fā)表于 03-13 10:34 ?436次閱讀
    【JVM開發(fā)者必看】IntelliJ IDEA<b class='flag-5'>代碼</b><b class='flag-5'>分析</b>實(shí)踐指南:實(shí)時糾錯、冗余檢測、自動修復(fù)等

    集成電路設(shè)計中靜態(tài)時序分析介紹

    本文介紹了集成電路設(shè)計中靜態(tài)時序分析(Static Timing Analysis,STA)的基本原理、概念和作用,并分析了其優(yōu)勢和局限性。 ? 靜態(tài)時序
    的頭像 發(fā)表于 02-19 09:46 ?603次閱讀

    分析C語言代碼結(jié)構(gòu)的設(shè)計問題

    分析一個C語言代碼結(jié)構(gòu)的設(shè)計問題。 這段代碼,使用了兩次malloc,分別給 p1 和 p2 申請了內(nèi)存。用完后,內(nèi)存釋放,防止內(nèi)存泄漏。 大家覺得,這樣的代碼設(shè)計有沒有問題。
    的頭像 發(fā)表于 02-11 09:31 ?359次閱讀

    ADC的靜態(tài)指標(biāo)有專用的分析工具嗎?

    請問:ADC的靜態(tài)指標(biāo)有專用的分析工具嗎?該指標(biāo)很少在評估ADC指標(biāo)時使用,是否該指標(biāo)不重要,應(yīng)用中什么情況下需要評估該指標(biāo)? 另外ADC的SNR = 6.02*N + 1.76 +10*log10(fs/2BW) 當(dāng)被采樣信號為單音時 該BW為多少?
    發(fā)表于 02-08 08:13

    英諾達(dá)發(fā)布全新靜態(tài)驗(yàn)證產(chǎn)品,提升芯片設(shè)計效率

    了重要一步,將為中國芯片產(chǎn)業(yè)的發(fā)展注入新的活力。 靜態(tài)驗(yàn)證作為一種業(yè)界普遍使用的驗(yàn)證方法,通過對設(shè)計的源代碼進(jìn)行深入分析,能夠發(fā)現(xiàn)設(shè)計中的潛在問題。與動態(tài)仿真驗(yàn)證和形式化驗(yàn)證相結(jié)合,靜態(tài)
    的頭像 發(fā)表于 12-24 16:53 ?763次閱讀

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

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

    Perforce靜態(tài)分析工具2024.2新增功能:Helix QAC全新CI/CD集成支持、Klocwork分析引擎改進(jìn)和安全增強(qiáng)

    ?和Klocwork的最新版本對靜態(tài)分析工具進(jìn)行了重大改進(jìn),通過盡早修復(fù)錯誤、降低開發(fā)成本和加快發(fā)布速度,使開發(fā)團(tuán)隊(duì)實(shí)現(xiàn)左移。本文中,我們將概述2024.2版本的新特性和新功能。CI/CD和左移以
    的頭像 發(fā)表于 10-08 16:22 ?638次閱讀
    Perforce<b class='flag-5'>靜態(tài)</b><b class='flag-5'>分析</b>工具2024.2新增功能:Helix QAC全新CI/CD集成支持、Klocwork<b class='flag-5'>分析</b>引擎改進(jìn)和安全增強(qiáng)

    靜態(tài)鏈接和動態(tài)鏈接

    一、靜態(tài)鏈接靜態(tài)鏈接通過靜態(tài)庫進(jìn)行鏈接,生成的目標(biāo)程序中包含運(yùn)行需要的所有庫,可以直接運(yùn)行,不過就是文件比較大。靜態(tài)庫是匯編產(chǎn)生的.o文件的集合,一般以.a文件形式出現(xiàn)。gcc在使用
    發(fā)表于 08-27 10:20

    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 ?1046次閱讀

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

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

    代碼靜態(tài)測試工具Helix QAC 2024.2新發(fā)

    Helix QAC 2024.2 帶來了新的特性和功能,為開發(fā)過程增加了靈活的選項(xiàng)。用戶使用新的 CI 分析通過 Validate 獲得完整的 CI 集成支持,從而輕松管理 CI/CD 更改分析結(jié)果并加快測試反饋速度,并使用新的服務(wù)器
    的頭像 發(fā)表于 08-05 17:40 ?683次閱讀
    <b class='flag-5'>代碼</b><b class='flag-5'>靜態(tài)</b>測試工具Helix QAC 2024.2新發(fā)

    基于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)頁,因?yàn)樗鼈冋J(rèn)為靜態(tài)網(wǎng)頁更穩(wěn)定、內(nèi)
    的頭像 發(fā)表于 07-31 12:49 ?508次閱讀

    DevOps中的質(zhì)量門工作原理,以及靜態(tài)代碼分析Klocwork和Perforce Helix QAC在質(zhì)量門中的實(shí)踐應(yīng)用

    如何使用靜態(tài)代碼分析工具(如Klocwork 和 Helix QAC)實(shí)現(xiàn)質(zhì)量門。 什么是質(zhì)量門? 質(zhì)量門是在IT或開發(fā)項(xiàng)目中實(shí)施的檢查點(diǎn),這些檢查點(diǎn)要求在進(jìn)入下一個開發(fā)階段之前達(dá)到最低標(biāo)準(zhǔn)。質(zhì)量門可以阻止不合格
    的頭像 發(fā)表于 07-29 15:12 ?860次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品