在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

通過高級靜態(tài)分析進行特定于域的屬性檢查

星星科技指導員 ? 來源:嵌入式計算設(shè)計 ? 作者:PAUL ANDERSON ? 2022-11-10 15:29 ? 次閱讀

眾所周知,高級靜態(tài)分析工具擅長發(fā)現(xiàn)程序中的一般缺陷。借助自定義的屬性檢查器,最終用戶還可以擴展它們,以查找特定應用程序特有的特定于域的錯誤。

先進的靜態(tài)分析工具使用復雜的全程序、路徑敏感技術(shù)來發(fā)現(xiàn)深層語義問題,包括安全缺陷和安全漏洞。這些工具識別的幾個缺陷可以在CWE/SANS前25個最危險的編程錯誤中找到,其中列出了為了降低安全風險而要避免的最重要的錯誤。

具體來說,開箱即用的高級靜態(tài)分析工具可以找到通用編程缺陷。來自靜態(tài)分析工具的典型通用報告可能會顯示警告,例如未初始化的變量、緩沖區(qū)溢出、無法訪問的條件和無法訪問的調(diào)用等;但是,并非所有安全漏洞或安全錯誤都是由一般問題引起的。許多缺陷是特定應用所獨有的。

這些工具的一個經(jīng)常被低估的方面是它們是可擴展的,因此通常也可以對其進行配置或編程以查找違反特定于域的規(guī)則的情況。因此,如果開發(fā)團隊有自己的內(nèi)部規(guī)則來使用專有API,或者要求程序員使用特定的習慣用語,那么通常可以編寫一個檢查器來表示違反這些規(guī)則。因此,程序員通常只需很少的編程工作,就可以顯著增加他們從工具中獲得的價值。

一個常見的用例是當發(fā)生錯誤并觸發(fā)漫長而痛苦的診斷和調(diào)試期時。找到缺陷后,明智的做法是首先在代碼中查找重復錯誤的其他位置,然后采取措施檢測錯誤是否再次發(fā)生。對現(xiàn)有代碼和新代碼運行自定義檢查可能是實現(xiàn)此目的的有效、低成本方法。這些工具的工作原理以及如何自定義它們的檢查器是使用 CodeSonar 中的代碼片段描述的,盡管這些原則也可以與其他高級靜態(tài)分析工具一起使用。

高級靜態(tài)分析的工作原理

要了解擴展的不同編寫方式,首先要了解什么是靜態(tài)分析,以及靜態(tài)分析工具如何在后臺工作。

靜態(tài)分析工具的工作方式與編譯器非常相似。他們將源代碼作為輸入,然后對其進行解析并轉(zhuǎn)換為中間表示 (IR)。高級靜態(tài)分析工具架構(gòu)的框圖如圖 1 所示。編譯器將使用 IR 生成目標代碼,而靜態(tài)分析工具保留 IR,而檢查器通常通過遍歷或查詢 IR 來實現(xiàn),查找指示缺陷的特定屬性或模式。

圖1:高級靜態(tài)分析工具的架構(gòu)

poYBAGNsqHWASNl7AABJrDpWD9s224.jpg

高級工具從復雜的符號執(zhí)行技術(shù)中獲得強大功能,這些技術(shù)通過控制流圖探索路徑。這些算法跟蹤程序的抽象狀態(tài),并知道如何使用該狀態(tài)來排除對不可行路徑的考慮。

特定于域的屬性的檢查器可以訪問這些表示形式,并以各種方式利用分析算法。

自定義檢查器

最終用戶如何創(chuàng)作自定義屬性檢查器?這在很大程度上取決于屬性的性質(zhì),因此有幾種機制可用:

可以通過向配置文件添加指令來擴展現(xiàn)有檢查器。

用戶可以向其代碼添加注釋,以指示分析查找某些屬性。如果用戶不希望干擾源代碼,則可以以面向方面的方式在側(cè)面完成這些注釋。

API 允許用戶訪問所有中間表示形式。通常,使用訪問者模式,允許擴展利用分析已在執(zhí)行的遍歷。

讓我們仔細看看這些機制。

配置文件

這些先進的靜態(tài)分析工具實現(xiàn)了數(shù)十個檢查器。通常,用戶需要一個與內(nèi)置檢查器略有不同的檢查器,并且其中許多檢查器都設(shè)計為可擴展的。一類檢查器查找禁止使用的函數(shù)。例如,眾所周知,C 庫函數(shù) get 是不安全的。檢查器由一個階段實現(xiàn),該階段查找對函數(shù)名稱的引用,然后將它們與一組正則表達式進行匹配。通過向配置文件添加行來向此集合添加其他正則表達式是一件簡單的事情。

代碼注釋

編寫檢查器的第二種方法是向代碼添加注釋。

例如,假設(shè)有一個名為 foo 的內(nèi)部函數(shù)采用單個整數(shù)參數(shù),并且當此參數(shù)為 -1 時引入了潛在的安全漏洞。可以通過向foo主體添加一些代碼來實現(xiàn)對這種情況的檢查,如下所示:

void foo(int x)

{

#ifdef __CSURF__

csonar_trigger(x, “==”, -1,

“Dangerous call to foo()”);

#endif __CSURF__

}

#ifdef構(gòu)造可確保常規(guī)編譯器看不到此新代碼。但是,當該工具分析此代碼時,會看到對csonar_trigger的調(diào)用。因此,此調(diào)用從未實際執(zhí)行,而是由工具解釋為對基礎(chǔ)分析引擎的指令。如果分析得出結(jié)論,可能滿足觸發(fā)條件,則它將發(fā)出帶有給定消息的警告。

大多數(shù)程序員不喜歡用這樣的注釋來混淆他們的代碼,所以有一種替代方法來實現(xiàn)這種檢查,允許它寫在單獨的文件中。當 foo 的源代碼不可用時,例如當它位于第三方庫中時,此方法也適用。為此,檢查器的作者將編寫一個替換函數(shù),如下所示:

void csonar_replace_foo(int x)

{

csonar_trigger(x, “==”, -1,

“Dangerous call to foo()”);

foo();

}

當分析看到csonar_replace_foo的定義時,它會將代碼中的所有 foo 調(diào)用(csonar_replace_foo 內(nèi)部的調(diào)用除外)視為對 csonar_replace_foo 的調(diào)用。

此觸發(fā)器習慣用法適用于檢查時態(tài)屬性,尤其是函數(shù)調(diào)用序列。假設(shè)有一條規(guī)則說,在 foo 執(zhí)行時,永遠不應該調(diào)用 bar。可以按如下方式實施檢查:

static int foo_is_executing = 0;

void csonar_replace_foo(int x) {

foo_is_executing = 1;

foo(x);

foo_is_executing = 0;

}

void csonar_replace_bar(void) {

csonar_trigger(foo_is_executing,

“==”, 1,

“Call to bar from foo”);

bar();

}

請注意,全局狀態(tài)變量用于記錄 foo 是否處于活動狀態(tài)。在輸入 foo 之前,它被設(shè)置為 1,然后在 foo 返回后重置為零。然后在 bar 中的觸發(fā)器中檢查此變量,如果設(shè)置為 1,將發(fā)出警告。

前面的示例演示如何檢查全局屬性。相同的機制可用于編寫對單個對象的屬性的檢查。可以將屬性附加到對象以跟蹤其狀態(tài)。

這種方法允許用戶幾乎像編寫動態(tài)檢查一樣編寫靜態(tài)檢查。這種檢查的 API 很小,語言是 C,所以有一個溫和的學習曲線。這種簡單性具有欺騙性:該技術(shù)可用于實現(xiàn)相當復雜的檢查。

用于中間表示的 API

實現(xiàn)自定義檢查的最終方法是使用提供對基礎(chǔ)表示形式 (IR) 的訪問權(quán)限的 API。一家公司使用此 API 查找用于處理硬件錯誤的自定義習慣用法的沖突。

此 API 也可用于其他程序分析任務。例如,一家醫(yī)療設(shè)備公司主要使用一種工具,不僅識別其代碼中的潛在任務問題,而且還發(fā)出允許他們交互式探索堆棧配置屬性的信息。其他應用程序包括收集代碼的自定義指標和生成程序可視化工具的輸入。

可以使用訪問者模式編寫許多檢查 - 該函數(shù)作為給定類型的每個 IR 元素的回調(diào)調(diào)用。可以為控制流圖和語法樹中的文件、標識符、子程序和節(jié)點定義訪問者。訪問者的接口允許與構(gòu)造進行模式匹配。

CodeSonar具有一種特殊的訪問者類型,在控制流圖的路徑探索期間調(diào)用該訪問者。這允許檢查器作者編寫復雜的檢查,以利用該工具的內(nèi)置路徑敏感程序分析功能。這種檢查器的一個關(guān)鍵方面是它使用分析部分,消除了對不可行路徑的探索,這會自動降低誤報結(jié)果的概率。

提高軟件質(zhì)量

先進的靜態(tài)分析工具已成為軟件開發(fā)人員必不可少的工具,因為它們能夠發(fā)現(xiàn)嚴重的安全和安全缺陷。創(chuàng)作自定義檢查器是提高這些工具有效性的低成本方法。

審核編輯:郭婷

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

    關(guān)注

    2

    文章

    1566

    瀏覽量

    63667
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1657

    瀏覽量

    49982
收藏 人收藏

    評論

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

    普源示波器高級觸發(fā)功能案例分析

    一、引言 在電子測量領(lǐng)域,示波器的觸發(fā)功能如同“信號捕手”,決定著波形捕獲的精準度與效率。普源示波器(如DHO1204U、MSO5000系列等)不僅具備基礎(chǔ)觸發(fā)模式(邊沿觸發(fā)、脈沖觸發(fā)等),更通過高級
    的頭像 發(fā)表于 05-29 09:36 ?87次閱讀

    如何通過高效工程評審EQ流程,實現(xiàn)PCB零缺陷制造?

    如何通過高效工程評審實現(xiàn)PCB零缺陷制造?關(guān)鍵步驟解析!? 在PCB制造中,?Gerber文件是設(shè)計到生產(chǎn)的核心橋梁,但超過30%的原始文件存在需澄清的風險。如何通過高效的工程評審(EQ)提前解決問題,節(jié)省溝通成本并確保精準制造?
    的頭像 發(fā)表于 03-07 14:51 ?486次閱讀

    VirtualLab Fusion應用:光波導k布局可視化(“神奇的圓環(huán)”)

    特定光波導布局的光導和耦合條件。 概念 方向轉(zhuǎn)換器計算器 可以通過“開始”>“計算器”找到方向轉(zhuǎn)換器計算器,這有助于演示指定角度的不同方式。 k可視化 k可視化:平面
    發(fā)表于 02-21 08:53

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

    Analysis,STA)是集成電路設(shè)計中的一項關(guān)鍵技術(shù),它通過分析電路中的時序關(guān)系來驗證電路是否滿足設(shè)計的時序要求。與動態(tài)仿真不同,STA不需要模擬電路的實際運行過程,而是通過分析電路中的各個時鐘路徑、信號傳播延遲等信息來評估設(shè)計是否符合時序要求。
    的頭像 發(fā)表于 02-19 09:46 ?544次閱讀

    VirtualLab Fusion應用:用于光導耦合的傾斜光柵的分析

    [使用案例] -通過使用界面配置光柵結(jié)構(gòu)[用例] -通過使用接口配置光柵結(jié)構(gòu)[用例] -分析耦合光柵的衍射效率 -用于評估光導耦合光柵的定制檢測器[用例] -通過
    發(fā)表于 02-12 08:58

    WEBENCH電源高級分析

    電子發(fā)燒友網(wǎng)站提供《WEBENCH電源高級分析.pdf》資料免費下載
    發(fā)表于 01-21 14:53 ?0次下載
    WEBENCH電源<b class='flag-5'>高級</b><b class='flag-5'>分析</b>

    VirtualLab Fusion案例:K和X域中的系統(tǒng)建模

    為了準確快速地模擬光在復雜光學系統(tǒng)中的傳播,VirtualLab Fusion使用了一種“連接場解算器”方法,該方法包括在兩個(空間和空間頻率)中實現(xiàn)特定的電磁場解算器。在本周的時事通訊中,我們將
    發(fā)表于 01-15 08:56

    Chart FX-使用API傳輸數(shù)據(jù) 使用Value屬性傳輸數(shù)據(jù)

    有時,向 Chart FX 傳輸數(shù)值數(shù)據(jù)最簡單方便的方法就是使用 Value 屬性通過 Value 屬性,您可以為圖表中特定series中的某一point設(shè)置數(shù)值。 Value
    的頭像 發(fā)表于 01-09 16:30 ?367次閱讀
    Chart FX-使用API傳輸數(shù)據(jù) 使用Value<b class='flag-5'>屬性</b>傳輸數(shù)據(jù)

    混合示波器的原理和應用

    采樣率的A/D轉(zhuǎn)換器進行采集,以確保能夠捕獲到射頻信號的細節(jié)。 存儲與顯示:混合示波器使用內(nèi)部存儲器對采樣的數(shù)據(jù)進行存儲,以便后續(xù)的分析和顯示。用戶可以
    發(fā)表于 12-27 15:54

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

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

    SOLIDWORKS高級BOM及屬性批量導入工具

    SOLIDWORKS BOM插件-SolidKits.BOMs工具可以準確、規(guī)范、便捷的一鍵完成各種結(jié)構(gòu)BOM導出,匯總BOM生成,批量導入屬性,自動建立結(jié)構(gòu),實現(xiàn)規(guī)范化管理,并自定義打包操作,還可根據(jù)企業(yè)需求定制模板.BOM工具試用/報價/購買,歡迎點擊咨詢Solidkits。
    的頭像 發(fā)表于 12-02 16:11 ?851次閱讀

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

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

    變壓器低壓側(cè)電壓過高怎么辦

    當變壓器低壓側(cè)電壓過高時,可以采取以下幾種方法來調(diào)節(jié)和解決: 一、檢查并調(diào)整變壓器檔位 變壓器通常具有多個檔位,通過調(diào)整高壓側(cè)的抽頭來改變變比,從而穩(wěn)定低壓側(cè)的電壓。具體操作時,可以根據(jù)負載情況
    的頭像 發(fā)表于 09-12 14:26 ?4397次閱讀

    三星LPDDR4X車載內(nèi)存通過高通汽車模組驗證

    三星電子近日宣布了一項重要進展,其專為高級車載信息娛樂系統(tǒng)(IVI)及高級駕駛輔助系統(tǒng)(ADAS)設(shè)計的LPDDR4X車載內(nèi)存已成功通過高通最新驍龍數(shù)字底盤平臺的嚴格驗證。這一成就不僅標志著三星在汽車電子領(lǐng)域的技術(shù)實力獲得行業(yè)巨
    的頭像 發(fā)表于 08-27 16:02 ?758次閱讀

    安寶特產(chǎn)品 安寶特3D Analyzer:智能的3D CAD高級分析工具

    安寶特3D Analyzer包含多種實用的3D CAD高級分析工具,包括自動比對模型、碰撞檢測、間隙檢查、壁厚檢查,以及拔模和底切分析,能夠
    的頭像 發(fā)表于 08-07 10:13 ?705次閱讀
    安寶特產(chǎn)品  安寶特3D Analyzer:智能的3D CAD<b class='flag-5'>高級</b><b class='flag-5'>分析</b>工具
    主站蜘蛛池模板: 在线观看黄色x视频 | 欧洲性freefree大白屁股 | 高清视频在线播放 | 天天干夜夜添 | www亚洲欲色成人久久精品 | 国产三级在线播放 | 性天堂网 | www色午夜| 亚洲欧美在线一区二区 | 西西人体大胆午夜gog0 | 高清不卡毛片免费观看 | 日本黄色电影在线 | 欧美xxxxbbbb在线播放 | 一个色在线 | 两性色视频 | 天天视频国产精品 | 最新黄色大片 | 性欧美高清极品猛交 | 亚洲精品久久久久久婷婷 | 老色批午夜免费视频网站 | 伊在线视频 | 种子在线搜索 | 国产资源站 | 色片在线 | 手机在线电影你懂的 | 亚偷熟乱区视频在线观看 | 黄色录像大全 | 网站在线观看视频 | 亚洲a视频| 黄色一级大片视频 | 男人搡女人视频免费看 | 国产高清在线免费 | 黄网免费观看 | 午夜免费一级片 | 成人人免费夜夜视频观看 | 99久热只有精品视频免费观看17 | 碰免费人人人视频 | 国产综合色在线视频区色吧图片 | 三级a黄| 国产特级毛片aaaaaa毛片 | 在线看片地址 |