• <menu id="w2i4a"></menu>
  • logo Parasoft C/C++ test 自動(dòng)化用戶指南

    文檔首頁>>Parasoft C/C++ test 自動(dòng)化用戶指南>>Parasoft C/C++ test 自動(dòng)化用戶指南(十八):配置流分析

    Parasoft C/C++ test 自動(dòng)化用戶指南(十八):配置流分析


    Parasoft C/C++test針對C/C++開發(fā)的專業(yè)白盒自動(dòng)化測試方案,能有效提高軟件開發(fā)效率和代碼質(zhì)量。C++test 可以進(jìn)行靜態(tài)分析,全面代碼審查,運(yùn)行時(shí)錯(cuò)誤檢測,并在單元測試和組件測試中集成覆蓋率分析。

    Parasoft C/C++test申請免費(fèi)試用


    配置流分析深度

    Flow Analysis 通過分析的代碼構(gòu)建路徑以檢測不同類型的問題。由于對跨越整個(gè)應(yīng)用程序的所有可能路徑的分析可能不可行,因此您可以設(shè)置所需的分析深度級別。更深入的分析會(huì)得到更多的發(fā)現(xiàn),但性能會(huì)變慢,內(nèi)存消耗會(huì)略有增加。

    可以使用 DTP 中的測試配置界面指定分析深度。轉(zhuǎn)至 報(bào)告中心> 測試配置> 靜態(tài)分析> 流分析高級設(shè)置> 性能> 分析深度, 然后通過選擇單選按鈕選擇以下選項(xiàng)之一:

    • Shallowest(最快)只查找源代碼中最明顯的問題。它僅限于問題的原因位于靠近出現(xiàn)問題的代碼的情況。此類分析發(fā)現(xiàn)的違規(guī)執(zhí)行路徑通??缭絾蝹€(gè)函數(shù)中的多行代碼。它們很少會(huì)跨越 3 個(gè)以上的函數(shù)調(diào)用。
    • Shallow(快速)和“Shallowest”分析類型一樣,只查找源代碼中最明顯的問題。但是,它會(huì)產(chǎn)生更多的結(jié)果,并允許檢查更長的執(zhí)行路徑。
    • 標(biāo)準(zhǔn):查找包含數(shù)十個(gè)元素的執(zhí)行路徑的許多復(fù)雜問題。標(biāo)準(zhǔn)分析超越了淺層分析,還尋找更復(fù)雜的問題,這些問題可能是由于單個(gè)功能中的流程不暢或由于所分析項(xiàng)目的不同部分中不同功能之間的交互不當(dāng)而導(dǎo)致的。此類分析發(fā)現(xiàn)的違規(guī)行為通常會(huì)揭示所分析源代碼中的重大錯(cuò)誤,并且通??缭綌?shù)十行代碼。
    • 深度(慢)允許檢測更多與“標(biāo)準(zhǔn)”深度定義的問題具有相同復(fù)雜性和性質(zhì)的問題。這種類型的分析比標(biāo)準(zhǔn)分析慢。
    • 徹底(最慢)發(fā)現(xiàn)更復(fù)雜的問題。這種類型的分析將對代碼庫進(jìn)行徹底掃描;這需要更多時(shí)間,但會(huì)發(fā)現(xiàn)許多非常復(fù)雜的問題,這些問題的違規(guī)路徑可能跨越掃描應(yīng)用程序不同部分的一百多行代碼。建議在夜間運(yùn)行時(shí)使用此選項(xiàng)。

    Flow Analysis 的深度 默認(rèn)設(shè)置為 標(biāo)準(zhǔn)。

    設(shè)置超時(shí)策略

    除了分析深度之外,F(xiàn)low Analysis 還使用額外的超時(shí)保護(hù)來確保分析在合理的時(shí)間內(nèi)完成。使用 DTP 中的測試配置界面可以設(shè)置適當(dāng)?shù)牟呗?。轉(zhuǎn)至 報(bào)告中心> 測試配置> 靜態(tài)分析> 流分析高級設(shè)置> 性能> 超時(shí)策略, 然后通過選擇單選按鈕選擇以下選項(xiàng)之一:

    • time在給定的熱點(diǎn)上花費(fèi)定義的時(shí)間后停止分析。注意:在某些情況下,使用此選項(xiàng)可能會(huì)導(dǎo)致報(bào)告的違規(guī)數(shù)量略微不穩(wěn)定。
    • instructions執(zhí)行定義數(shù)量的 Flow Analysis 指令后,將停止對給定熱點(diǎn)的分析。注意:要確定要為您的環(huán)境設(shè)置的正確指令數(shù)量,請?jiān)谏傻膱?bào)告的“設(shè)置問題”部分查看有關(guān)超時(shí)的信息。
    • off:沒有超時(shí)。注意:使用此選項(xiàng)可能需要更多的時(shí)間來完成分析。

    默認(rèn)超時(shí)選項(xiàng)的 時(shí)間 設(shè)置為 60 秒。

    在增量模式下運(yùn)行流量分析

    默認(rèn)情況下,F(xiàn)low Analysis 會(huì)對其運(yùn)行的范圍執(zhí)行完整的分析。在大型代碼庫上運(yùn)行時(shí),這可能需要相當(dāng)長的時(shí)間。

    執(zhí)行 Flow Analysis 分析的最常見方法是在每天都略有變化的單個(gè)代碼庫上運(yùn)行夜間測試。Flow Analysis 的增量分析模式旨在減少在這種典型場景中運(yùn)行分析所需的時(shí)間。在增量分析模式下,Analysis 會(huì)在初始運(yùn)行期間記住重要的分析數(shù)據(jù),然后在后續(xù)運(yùn)行中重新使用它——僅對已修改或與修改代碼緊密相關(guān)的代碼部分重新運(yùn)行分析。

    需要磁盤空間來存儲必要的數(shù)據(jù)。增量分析選項(xiàng)控制增量分析功能??捎眠x項(xiàng)有:

    • 啟用增量分析確定是否使用增量分析。
    • 每隔 [天] 壓縮增量緩存確定運(yùn)行增量緩存壓縮的頻率。增量分析針對速度進(jìn)行了優(yōu)化;盡管 Flow Analysis 力求始終保持較小的緩存大小并刪除不必要的數(shù)據(jù),但源代碼更改可能會(huì)導(dǎo)致這些緩存包含一些不再使用的數(shù)據(jù)。按照此參數(shù)的定義定期運(yùn)行的壓縮會(huì)刪除所有過時(shí)的數(shù)據(jù)。更準(zhǔn)確地說,如果自上次壓縮以來經(jīng)過的時(shí)間大于為此選項(xiàng)指定的天數(shù),則在 Flow Analysis 增量運(yùn)行后立即執(zhí)行壓縮。

    在啟用分析數(shù)據(jù)交換的情況下運(yùn)行流分析

    在這種模式下,分析數(shù)據(jù)被寫入磁盤。分析數(shù)據(jù)的交換使用相同的持久存儲,并在與增量分析類似的過程中完成。如果在大型項(xiàng)目上運(yùn)行分析,則表示所分析源代碼的語義模型的分析數(shù)據(jù)可能會(huì)消耗可用于運(yùn)行 Flow Analysis 的所有內(nèi)存。如果發(fā)生這種情況,F(xiàn)low Analysis 將從內(nèi)存中刪除當(dāng)前不需要的分析數(shù)據(jù)部分,并稍后從磁盤中重新讀取。

    通常,我們建議在配置了 Xmx JVM 選項(xiàng)的大型 JVM 堆中運(yùn)行 C/C++ 測試。這是為了最大限度地減少交換,從而提高性能。如果有足夠的可用內(nèi)存,則可以禁用分析數(shù)據(jù)的交換,這可以加快代碼分析。

    您可以使用 DTP 中的測試配置界面啟用或禁用該模式:

    啟用將分析數(shù)據(jù)交換到磁盤:默認(rèn)情況下啟用。如果禁用此選項(xiàng),則可能會(huì)加快分析速度,如果您正在對不需要大量內(nèi)存的中小型項(xiàng)目運(yùn)行 Flow Analysis 分析,或者有足夠的內(nèi)存可用(例如,對于 64 位系統(tǒng)) )。

    配置流分析的詳細(xì)程度

    您可以使用 DTP 中的測試配置界面來配置以下選項(xiàng):

    • 無法顯示原因時(shí)不報(bào)告違規(guī):確定 Flow Analysis 是否報(bào)告無法顯示原因的違規(guī)。
      某些 Flow Analysis 規(guī)則要求 Flow Analysis 檢查通向某個(gè)點(diǎn)的所有可能路徑,并驗(yàn)證所有這些路徑是否滿足某個(gè)條件。在這種情況下,違規(guī)與一組路徑相關(guān)聯(lián)(而在簡單情況下,違規(guī)僅由一條路徑表示)。這種違例中的所有路徑都以違例中所有路徑共有的違例點(diǎn)結(jié)束。但是,不同的路徑可能從代碼中的不同點(diǎn)開始。每條路徑的開頭是一個(gè)違規(guī)原因(代碼中的一個(gè)點(diǎn),它規(guī)定了在違規(guī)點(diǎn)的代碼中后面的某個(gè)條件的違規(guī))。如果多路徑違規(guī)的不同路徑有不同的原因,F(xiàn)low Analysis 將僅顯示違規(guī)點(diǎn)(而不是違規(guī)原因)。
      僅包含違規(guī)點(diǎn)的違規(guī)可能難以理解(與 Flow Analysis 顯示從違規(guī)原因開始并導(dǎo)致違規(guī)點(diǎn)的完整路徑的常規(guī)情況相比)。這就是為什么我們提供了一個(gè)選項(xiàng)來隱藏?zé)o法顯示原因的違規(guī)行為。
    • 每個(gè)點(diǎn)不顯示多個(gè)違規(guī): 限制每個(gè)違規(guī)點(diǎn)報(bào)告一次違規(guī)(針對單個(gè)規(guī)則)。例如,當(dāng) Flow Analysis 檢測到具有多個(gè)空值來源的潛在空取消引用時(shí),將報(bào)告一次違規(guī)。當(dāng)詳細(xì)程度設(shè)置為該級別時(shí),F(xiàn)low Analysis 性能會(huì)稍快一些。

    指定終止函數(shù)

    您可以定義終止應(yīng)用程序執(zhí)行的函數(shù)。C/C++ 開發(fā)人員有時(shí)會(huì)使用在發(fā)生無法恢復(fù)的致命錯(cuò)誤時(shí)終止應(yīng)用程序執(zhí)行的函數(shù)。這些功能的示例是abort()exit()從標(biāo)準(zhǔn)庫。由于 Flow Analysis 分析應(yīng)用程序的執(zhí)行流程,因此了解通過立即停止應(yīng)用程序而中斷執(zhí)行流程的終止函數(shù)很重要。如果沒有這些知識,F(xiàn)low Analysis 可能會(huì)對應(yīng)用程序流程做出錯(cuò)誤的假設(shè)。

    Flow Analysis 知道標(biāo)準(zhǔn)庫中定義的終止函數(shù)。然而,這通常是不夠的,因?yàn)榉菢?biāo)準(zhǔn)庫定義了它們自己的終止函數(shù)。如果您的應(yīng)用程序使用這些函數(shù)之一,您應(yīng)該通過在 Terminators 選項(xiàng)卡中指定自定義終止函數(shù)將其傳達(dá)給 Flow Analysis。否則,F(xiàn)low Analysis 可能會(huì)在執(zhí)行路徑通過終止函數(shù)時(shí)產(chǎn)生誤報(bào)。

    使用列出支持的 API 的表格來啟用/禁用來自各種 API 的終止符,以及定義您自己的包含終止函數(shù)的 API。要從某個(gè)庫中添加有關(guān)終止函數(shù)的信息:

    1. 單擊表格頂行中的+按鈕。
    2. 單擊箭頭以展開終止應(yīng)用程序執(zhí)行功能選項(xiàng)卡。
    3. 完成打開的表格;該表包含以下列:

      ? 已啟用:指定在分析過程中是否應(yīng)考慮內(nèi)置或自定義終止符。
      ?完全限定的類型名稱或命名空間(通配符):指定特定終止符的實(shí)體。如果此字段留空,則只有在“函數(shù)名稱”列中指定名稱的全局函數(shù)才會(huì)被視為終止符。例如: 如果終止符是在來自 'myNameSpace' 命名空間的 'myClass' 中聲明的,則字段值可能是“myNameSpace::myClass”。或者,如果它未在類型中聲明,而僅屬于“myNameSpace”,則它可能是“myNameSpace”。
      ?函數(shù)名稱(通配符):指定終止函數(shù)的名稱。
      :指示子類中的終止函數(shù)定義是否也應(yīng)視為終止函數(shù)。這適用于實(shí)例函數(shù)和非實(shí)例函數(shù),并且只有在指定了它的完全限定類型名稱時(shí)才有意義。

    指定多線程選項(xiàng)

    多線程標(biāo)簽允許你以及以激活線程之間限定用于同步的功能/停用已知多線程功能。此處定義的信息會(huì)影響來自 BD.TRS(線程和同步)類別的規(guī)則的行為。這些規(guī)則將檢查在此選項(xiàng)卡上定義和激活的所有功能。

    使用列出支持的 API 的表來啟用/禁用來自各種 API 的同步功能,以及定義您自己的包含同步功能的 API。要從某個(gè)庫中添加有關(guān)同步函數(shù)的信息:

    1. 單擊表格頂行中的 + 按鈕。
    2. 在 API 字段中輸入庫的名稱。
    3. 單擊箭頭展開選項(xiàng)卡并完成表格以定義以下類型的功能(下面提供了有關(guān)完成表格的詳細(xì)信息):

      ? 鎖定功能(例如,獲取互斥鎖)
      ? 解鎖功能(例如,釋放互斥鎖)
      ? 睡眠功能
      ? 銷毀鎖定功能

      自動(dòng)化測試工具Parasoft C/C++ test 自動(dòng)化用戶指南(十八):配置流分析

    鎖定功能

    使用以下信息完成表格:

    • 已啟用:指定在分析過程中是否應(yīng)考慮鎖定功能。
    • 完全限定的類型名稱或命名空間(通配符):聲明函數(shù)的類型或命名空間的完全限定名稱。如果要描述在任何類型或命名空間中聲明的函數(shù),或者在任何類型之外聲明的全局函數(shù),請使用“*”。
    • 函數(shù)名稱(通配符):鎖定函數(shù)的名稱。'*' 可用于表示任意數(shù)量的任意符號。
    • + 子類中的定義:一個(gè)復(fù)選框,指示子類中的定義(具有給定名稱的函數(shù))是否也應(yīng)視為鎖定函數(shù)。請注意,這適用于實(shí)例函數(shù)和靜態(tài)函數(shù)。
    • “this”對象是一個(gè)互斥體:一個(gè)復(fù)選框,表示該函數(shù)在調(diào)用該函數(shù)的對象中鎖定了一個(gè)互斥體。
    • 返回一個(gè)互斥體:一個(gè)復(fù)選框,指示該函數(shù)返回一個(gè)互斥體。
    • 錯(cuò)誤時(shí)的返回值約束:如果資源分配器返回整數(shù)值,則指定分配失敗時(shí)的返回值約束。按以下格式輸入條件:<比較運(yùn)算符><整數(shù)值>。例如,如果函數(shù)在失敗時(shí)返回非零值,請?jiān)谧侄沃休斎搿?=0”(不帶引號)。如果錯(cuò)誤返回碼為 -1,請?jiān)诖颂庉斎搿?=-1”。除了“!=”和“==”,您還可以使用以下運(yùn)算符來指定錯(cuò)誤條件:“>”、“>=”、“<”和“<=”。
    • 互斥量參數(shù):指定函數(shù)在其參數(shù)之一中鎖定互斥量。

    解鎖功能

    使用以下信息完成表格:

    • Enabled:指定在分析時(shí)是否應(yīng)考慮解鎖功能。
    • 完全限定的類型名稱或命名空間(通配符):聲明函數(shù)的類型或命名空間的完全限定名稱。如果要描述在任何類型或命名空間中聲明的函數(shù),或者在任何類型之外聲明的全局函數(shù),請使用“*”。
    • 函數(shù)名(通配符):解鎖函數(shù)的名稱。'*' 可用于表示任意數(shù)量的任意符號。
    • + 子類中的定義:一個(gè)復(fù)選框,指示子類中的定義(具有給定名稱的函數(shù))是否也應(yīng)視為解鎖函數(shù)。請注意,這適用于實(shí)例函數(shù)和靜態(tài)函數(shù)。
    • “this”對象是一個(gè)互斥鎖:一個(gè)復(fù)選框,指示調(diào)用該函數(shù)的對象中的互斥鎖已解鎖
    • 互斥量參數(shù):指定參數(shù)之一中的互斥量被解鎖。

    睡眠功能

    使用以下信息完成表格:

    • Enabled : 指定在分析過程中是否應(yīng)考慮睡眠功能。
    • 完全限定的類型名稱或命名空間(通配符):聲明函數(shù)的類型或命名空間的完全限定名稱。如果要描述在任何類型或命名空間中聲明的函數(shù),或者在任何類型之外聲明的全局函數(shù),請使用“*”。
    • 函數(shù)名稱(通配符):睡眠函數(shù)的名稱。'*' 可用于表示任意數(shù)量的任意符號。
    • + 子類中的定義:一個(gè)復(fù)選框,指示子類中的定義(具有給定名稱的函數(shù))是否也應(yīng)視為睡眠函數(shù)。請注意,這適用于實(shí)例函數(shù)和靜態(tài)函數(shù)。

    破壞鎖功能

    使用以下信息完成表格:

    • Enabled:指定在分析過程中是否應(yīng)考慮鎖破壞功能。
    • 完全限定的類型名稱或命名空間(通配符):聲明函數(shù)的類型或命名空間的完全限定名稱。如果要描述在任何類型或命名空間中聲明的函數(shù),或者在任何類型之外聲明的全局函數(shù),請使用“*”。
    • 函數(shù)名稱(通配符):鎖破壞函數(shù)的名稱。'*' 可用于表示任意數(shù)量的任意符號。
    • + 子類中的定義:一個(gè)復(fù)選框,指示子類中的定義(具有給定名稱的函數(shù))是否也應(yīng)視為破壞鎖的函數(shù)。請注意,這適用于實(shí)例函數(shù)和靜態(tài)函數(shù)。
    • “this”對象是一個(gè)互斥鎖:一個(gè)復(fù)選框,指示調(diào)用該函數(shù)的對象中的互斥鎖已被銷毀。
    • 互斥量參數(shù):指定參數(shù)之一中的互斥量被銷毀。

    指定資源

    在 資源 選項(xiàng)卡允許您定義BD.RES類(資源)規(guī)則應(yīng)該檢查哪些資源。這些規(guī)則檢查在此選項(xiàng)卡上定義和啟用的所有資源的正確使用。

    1. 指定資源類型。
    2. 選中啟用復(fù)選框。
    3. 如果合適/需要,禁用終止時(shí)不報(bào)告泄漏選項(xiàng)。
    4. 單擊箭頭展開Resource Allocators、Resource Closers、Resource checkersSafe functions選項(xiàng)卡并完成打開的表格,其中包含有關(guān)分配器、關(guān)閉器、檢查器和安全功能的信息。下面提供了有關(guān)完成這些選項(xiàng)卡的詳細(xì)信息。

      自動(dòng)化測試工具Parasoft C/C++ test 自動(dòng)化用戶指南(十八):配置流分析

    配置資源分配器

    資源分配器表可以用能夠產(chǎn)生資源的功能描述中完成。該表包含以下列:

    • 已啟用:指定在分析期間是否應(yīng)考慮分配器。
    • 完全限定的類型名稱或命名空間(通配符):聲明函數(shù)的類型或命名空間的完全限定名稱。如果要描述在任何類型或命名空間中聲明的函數(shù),或者在任何類型之外聲明的全局函數(shù),請使用“*”。
    • 函數(shù)名稱(通配符):分配函數(shù)的名稱。'*' 可用于表示任意數(shù)量的任意符號。
    • 資源參數(shù):指定函數(shù)在其一個(gè)或多個(gè)參數(shù)中分配資源。在這種情況下,要么指定函數(shù)分配的參數(shù)的從 1 開始的編號,要么使用“*”表示所有參數(shù)都已分配。
    • + 子類中的定義:一個(gè)復(fù)選框,指示子類中的定義(具有給定名稱的函數(shù))是否也應(yīng)視為分配器。請注意,這適用于實(shí)例函數(shù)和靜態(tài)函數(shù)。
    • “this”對象是一個(gè)資源:一個(gè)復(fù)選框,指示該函數(shù)在調(diào)用該函數(shù)的對象中分配資源。
    • 返回資源對象:一個(gè)復(fù)選框,指示該函數(shù)返回已分配的資源。
    • 錯(cuò)誤時(shí)的返回值約束:如果資源分配器返回整數(shù)值,則指定在分配失敗的情況下的返回值約束。按以下格式輸入條件:<比較運(yùn)算符><整數(shù)值>。例如,如果函數(shù)在失敗時(shí)返回非零值,請?jiān)谧侄沃休斎搿?=0”(不帶引號)。如果錯(cuò)誤返回碼為 -1,請?jiān)诖颂庉斎搿?=-1”。除了“!=”和“==”,您還可以使用以下運(yùn)算符來指定錯(cuò)誤條件:“>”、“>=”、“<”和“<=”。

    分配函數(shù)返回錯(cuò)誤代碼以指示分配失敗是很常見的。當(dāng)分配函數(shù)返回指向資源的指針時(shí),NULL 指針通常表示分配失敗。Flow Analysis 在尋找資源泄漏時(shí),需要了解分配是成功還是失??;這有助于它僅報(bào)告在實(shí)際發(fā)生分配的路徑上丟失的對釋放函數(shù)的調(diào)用。在資源分配器函數(shù)返回指向資源的指針的情況下,如果指針不為 NULL,則 Flow Analysis 假定資源已成功分配。

    配置資源關(guān)閉器

    資源成交表可以與功能的描述,可以關(guān)閉資源完成。該表包含以下列:

    • 已啟用:指定在分析期間是否應(yīng)考慮關(guān)閉器。
    • 完全限定的類型名稱或命名空間(通配符):聲明函數(shù)的類型或命名空間的完全限定名稱。如果要描述在任何類型或命名空間中聲明的函數(shù),或者在任何類型之外聲明的全局函數(shù),請使用“*”。
    • 函數(shù)名稱(通配符):關(guān)閉函數(shù)的名稱。'*' 可用于表示任意數(shù)量的任意符號。
    • + 子類中的定義:一個(gè)復(fù)選框,指示子類中的定義(具有給定名稱的函數(shù))是否也應(yīng)被視為更接近。請注意,這適用于實(shí)例函數(shù)和靜態(tài)函數(shù)。
    • “this”對象是一個(gè)資源:一個(gè)復(fù)選框,指示調(diào)用該函數(shù)的對象中的資源已關(guān)閉。
    • 資源參數(shù):指定一個(gè)資源在它的一個(gè)或多個(gè)參數(shù)中是關(guān)閉的。在這種情況下,要么指定由函數(shù)關(guān)閉的參數(shù)的從 1 開始的編號,要么使用“*”表示所有參數(shù)都已分配。

    配置資源檢查器

    資源跳棋表可以與功能的描述,可以檢查資源是開放的完成。該表包含以下列:

    • 已啟用:指定在分析期間是否應(yīng)考慮檢查器。
    • 完全限定的類型名稱或命名空間(通配符):聲明函數(shù)的類型或命名空間的完全限定名稱。如果要描述在任何類型或命名空間中聲明的函數(shù),或者在任何類型之外聲明的全局函數(shù),請使用“*”。
    • 函數(shù)名稱(通配符):檢查函數(shù)的名稱。'*' 可用于表示任意數(shù)量的任意符號。
    • + 子類中的定義:一個(gè)復(fù)選框,指示子類中的定義(具有給定名稱的函數(shù))是否也應(yīng)視為檢查器。請注意,這適用于實(shí)例函數(shù)和靜態(tài)函數(shù)。
    • 'this' 對象是一個(gè)資源:一個(gè)復(fù)選框,指示該函數(shù)檢查調(diào)用該函數(shù)的對象中的資源。
    • 資源參數(shù):指定函數(shù)在其一個(gè)或多個(gè)參數(shù)中檢查資源。在這種情況下,要么指定函數(shù)檢查的參數(shù)的從 1 開始的數(shù)字,要么使用“*”表示檢查所有參數(shù)。
    • 資源打開時(shí)返回值:指定資源打開時(shí)檢查函數(shù)的返回值。可接受的值為truefalse

    配置安全功能

    安全功能表可以用的,可以安全地調(diào)用在一個(gè)封閉的資源功能的描述完成-不觸發(fā)BD-RES-FREE規(guī)則。該表包含以下列:

    • 已啟用:指定在分析過程中是否應(yīng)考慮安全功能。
    • 完全限定的類型名稱或命名空間(通配符):聲明函數(shù)的類型或命名空間的完全限定名稱。如果要描述在任何類型或命名空間中聲明的函數(shù),或者在任何類型之外聲明的全局函數(shù),請使用“*”。
    • 函數(shù)名稱(通配符):安全函數(shù)的名稱。'*' 可用于表示任意數(shù)量的任意符號。
    • + 子類中的定義:一個(gè)復(fù)選框,指示子類中的定義(具有給定名稱的函數(shù))是否也應(yīng)該被認(rèn)為是安全的。請注意,這適用于實(shí)例函數(shù)和靜態(tài)函數(shù)。

    擴(kuò)展分析范圍

    在執(zhí)行代碼分析時(shí),F(xiàn)low Analysis 會(huì)處理在被測源文件和頭文件中定義的函數(shù)定義。在測試范圍之外的頭文件中定義的函數(shù)不會(huì)被分析,并且 Flow Analysis 不知道它們的語義。如果 Flow Analysis 需要有關(guān)在測試范圍之外的頭文件中定義的函數(shù)定義的信息,您可以配置以下選項(xiàng):

    要分析的外部文件:指定要由 Flow Analysis 分析的其他頭文件的絕對路徑。使用通配符指定模式。

    要分析的外部函數(shù):指定要由 Flow Analysis 分析的附加函數(shù)。使用以下信息完成表格:

    • 已啟用:指定在分析期間是否應(yīng)考慮該功能
    • 完全限定的類型名稱或命名空間(通配符):聲明函數(shù)的類型或命名空間的完全限定名稱。如果要描述在任何類型或命名空間中聲明的函數(shù),或者在任何類型之外聲明的全局函數(shù),請使用“*”。
    • 函數(shù)名(通配符)函數(shù)名'*' 可用于表示任意數(shù)量的任意符號。
    • 數(shù)參數(shù):指定的函數(shù)的參數(shù)個(gè)數(shù)。“-1”可用于表示任意數(shù)量的參數(shù)。
    • + 子類中的定義:一個(gè)復(fù)選框,指示是否還應(yīng)包括子類中的定義(具有給定名稱的函數(shù))。請注意,這適用于實(shí)例函數(shù)和靜態(tài)函數(shù)。

    指定始終被分析的函數(shù)

    始終分析功能選項(xiàng)允許您定義的執(zhí)行路徑上遇到的時(shí)候,將永遠(yuǎn)被分析的功能。這有助于您確保規(guī)則將分析檢查給定路徑時(shí)通常不會(huì)輸入的函數(shù)。

    選擇啟用復(fù)選框并提供以下信息:

    • 完全限定的類型名稱或命名空間(通配符):包含函數(shù)的類型或命名空間的完全限定名稱。
    • 函數(shù)名(通配符)函數(shù)名。
    • + 子類中的定義:指示是否也應(yīng)在子類中考慮該函數(shù)。

    特定于編譯器的設(shè)置

     errno ”值的內(nèi)部表示:Standarddefineserno 是 int 類型的可修改左值。未指定 errno 是宏還是使用外部鏈接聲明的標(biāo)識符。實(shí)現(xiàn)可以使用全局變量“errno”或“__errno”,或應(yīng)用具有不同名稱的被調(diào)用函數(shù)的“(*errno_function())”模式。此選項(xiàng)允許您使用正則表達(dá)式指定這些變量和函數(shù)的名稱:

    • 函數(shù)名稱模式:使用“errno”值時(shí)調(diào)用的函數(shù)名稱。必須使用正則表達(dá)式指定名稱。
    • 變量名模式:使用“errno”值時(shí)調(diào)用的變量名。必須使用正則表達(dá)式指定名稱。

    從頭文件 <ctype.h> 調(diào)用函數(shù)的內(nèi)部表示:標(biāo)準(zhǔn)指定了要在頭文件 <ctype.h> 中定義的幾個(gè)函數(shù)。一些實(shí)現(xiàn)(例如 C 模式下的 GNU GCC)將這些函數(shù)定義為宏,這些宏擴(kuò)展到代碼,該代碼根據(jù)某些標(biāo)志測試內(nèi)部數(shù)組的元素。這可以是全局?jǐn)?shù)組或函數(shù)返回的指針。此選項(xiàng)允許您使用正則表達(dá)式指定這些變量和函數(shù)的名稱:

    • 函數(shù)名稱模式:內(nèi)部調(diào)用的函數(shù)的名稱,而不是頭文件 <ctype.h> 中的函數(shù)之一(使用正則表達(dá)式定義)。必須使用正則表達(dá)式指定名稱。
    • 變量名稱模式:在從頭文件 <ctype.h> 調(diào)用其中一個(gè)函數(shù)后在內(nèi)部使用的變量名稱。必須使用正則表達(dá)式指定名稱。

    重用流動(dòng)分析數(shù)據(jù)進(jìn)行桌面分析

    使用 Flow Analysis 提高桌面性能的一種方法是重用桌面上的服務(wù)器分析數(shù)據(jù)。為此,您需要定義一個(gè)映射,以允許 Flow Analysis 將服務(wù)器文件路徑與相應(yīng)的桌面文件路徑相匹配。

    此外,您可以重用數(shù)據(jù)以在小范圍(例如,一個(gè)文件)上運(yùn)行分析,并構(gòu)建包含在定義的分析范圍之外的文件中定義的方法的路徑,前提是這些文件已經(jīng)過分析。


    Parasoft——領(lǐng)先的自動(dòng)化測試工具,滿足絕大多數(shù)行業(yè)標(biāo)準(zhǔn)

    Parasoft是一家專門提供軟件測試解決方案的公司,幫助企業(yè)打造無缺陷的軟件。

    從開發(fā)到質(zhì)量檢查,Parasoft的技術(shù)通過集成靜態(tài)和運(yùn)行時(shí)分析,單元、功能和API測試,以及服務(wù)虛擬化,在不犧牲質(zhì)量和安全性的情況下加快軟件交付,節(jié)約交付成本。

    強(qiáng)大的報(bào)告和分析功能可幫助用戶快速查明有風(fēng)險(xiǎn)的代碼區(qū)域,并了解新代碼更改如何影響其軟件質(zhì)量,而突破性的技術(shù)將人工智能和機(jī)器學(xué)習(xí)添加到軟件測試中,使組織更容易采用和擴(kuò)展跨開發(fā)和測試團(tuán)隊(duì)的有效的軟件測試實(shí)踐。

    Parasoft針對C/C++、Java、.NET和嵌入式的開發(fā)測試都有著30多年的深入研究,很多全國500強(qiáng)企業(yè)使用Parasoft的產(chǎn)品實(shí)現(xiàn)了軟件快速、高質(zhì)量的交付。

        獲取Parasoft資料或申請?jiān)囉每杉観Q:2867205852

    申請Parasoft測試試用

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();