翻譯|行業(yè)資訊|編輯:莫成敏|2019-11-20 11:55:32.660|閱讀 588 次
概述:本文描述了C和C ++的靜態(tài)分析工具PC-lint Plus v1.3更新內(nèi)容中的總體改進,該部分內(nèi)容一共分為了三個部分,本文是第一部分。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
PC-lint Plus是一種靜態(tài)分析工具,通過分析C和C ++源代碼來發(fā)現(xiàn)軟件中的缺陷。與編譯器一樣,PC-lint Plus會解析源代碼文件,執(zhí)行語義分析,并構建一個抽象語法樹來表示程序。PC-lint Plus采用各種機制,包括數(shù)據(jù)流分析,數(shù)值跟蹤,讀寫分析,強類型檢查,功能語義驗證和許多其他技術,來提供對單個文件和整個項目強大而全面的分析。
本文描述了在PC-lint Plus v1.3版本中的更新內(nèi)容之一,總體改進,感興趣的朋友可以請看下面內(nèi)容~
總體改進:
PCLP-744 打印幫助時顯示當前尺寸選項
現(xiàn)在將在打印幫助時指定大小選項的當前值(通過不帶參數(shù)、帶-help或帶-help = -s運行)。
PCLP-1344 允許return和goto替換MISRA中的中斷開關
新選項+ misra_interpret(任何允許返回以替換開關中的中斷)和+ misra_interpret(任何允許goto替換開關中的中斷)抑制消息9042(偏離MISRA開關語法),9077(缺少來自最終開關情況的無條件中斷) 和9090(切換情況缺少無條件的中斷或拋出)時,切換情況由return或goto語句而不是中斷來終止。
PCLP-1351 消息9106現(xiàn)在包括完整的MS整數(shù)文字后綴
當為Microsoft整數(shù)文字后綴(例如i32)發(fā)出消息9106(小寫字母后綴)時,消息9106現(xiàn)在將在消息中包含完整的整數(shù)文字后綴,而不僅僅是字母部分(例如i32而不是僅i)。
PCLP-1944 消息912的更新和澄清
現(xiàn)在,消息912特別報告與二進制運算符有關的類型轉(zhuǎn)換何時將值轉(zhuǎn)換為不同于僅整數(shù)提升會選擇的類型的值。消息描述已更新,以澄清消息的情況和含義。
例如,添加一個char和long將產(chǎn)生:
note 912: left operand of binary operator ’+’, originally of type ’char’ and promoted to type ’int’, will be further converted to type ’long’ due to usual arithmetic conversions with right operand of promoted type ’long’ c + L; ~ ^
僅當將操作數(shù)轉(zhuǎn)換為整數(shù)提升選擇的類型時(如添加兩個子整數(shù)值時),將不再發(fā)出該消息。
PCLP-2613 改善前移goto的處理
與前向goto的使用有關的誤報率降低了(即在功能中稍后指向標簽的goto),尤其是在消息774、838和948方面。
PCLP-2005 對消息3701的列表初始化的處理的改進
消息3701將不再發(fā)出以進行std :: initializer_list初始化。仍然會為其他形式的括號列表初始化發(fā)布該消息,但是消息文本將明確提到必須將括號刪除才能使用位置。
PCLP-2107 復合文字的值跟蹤
值跟蹤現(xiàn)在將跟蹤由復合文字在C中創(chuàng)建的結構的字段,并可以報告釋放后在使用塊范圍復合文字時的情況。
PCLP-2215 忽略clang搜索中的框架目錄后綴包括macOS上pclp_config的路徑
使用pclp_config生成編譯器配置時,不再將macOS上框架搜索路徑后列出的(框架目錄)后綴解析為路徑的一部分。
PCLP-2250 改進對鏈式清理的支持
如果消息1540和1578調(diào)用了另一個清除功能,則它將不再報告清除功能或析構函數(shù)執(zhí)行清除失敗。
PCLP-2270 消息778不再在靜態(tài)斷言內(nèi)部發(fā)出
消息778(常量表達式在操作中的值為0)不再在表達式必須為常量的靜態(tài)聲明內(nèi)發(fā)出。
PCLP-737 將推論擴展到算術表達式中的變量
推斷變量在算術表達式中的位置,其中涉及加法或減法,例如現(xiàn)在支持+ sizeof(int)<16。請注意,推理中的常量操作數(shù)始終支持任意表達式,例如a <10 * 5。
PCLP-2418 改進了對IAR編譯器的支持
在pclp_config生成的配置中增加了對其他IAR關鍵字的支持。在文檔中添加了有關為C ++生成配置的注釋。
PCLP-2461 減少與循環(huán)迭代期間被調(diào)用函數(shù)中if語句條件的含義有關的Value Tracking中的誤報
報告值明顯與報告的位置的本地信息相矛盾的誤報消息已減少,這些值是由循環(huán)內(nèi)調(diào)用函數(shù)中的if語句所暗示的隱含影響所致。受影響的情況主要表現(xiàn)為消息613的實例,伴隨著兩個補充消息,兩個補充消息的位置相同,這是指一個if語句在循環(huán)中的先前函數(shù)調(diào)用期間測試所報告的指針的情況。
PCLP-2462 考慮通過引用不同類型來使用價值
消息438和838將不再報告僅通過已轉(zhuǎn)換為其他類型的引用使用該值時未使用該值。
PCLP-2470 報告445(索引變量的重用)用于任意級別的嵌套
現(xiàn)在,消息445報告for索引變量的重用,即使它嵌套在一個或多個內(nèi)部for語句內(nèi)。
PCLP-2485 向消息9022添加可選的字符串參數(shù)
消息9022(宏定義中的未括號的宏參數(shù))現(xiàn)在具有一個可選的字符串參數(shù),用于報告以下情況:未括號的參數(shù)與字符串文字相鄰(因此不能被括號)或未括號的部分被包圍用逗號分隔。在這種情況下,字符串參數(shù)將是與字符串文字相鄰或由逗號包圍的參數(shù)之一。這允許消息支持CERT C建議PRE01-C,該建議允許針對這些情況的異常(通過基于字符串參數(shù)的值來禁止顯示此消息),同時仍支持MISRA C 2012規(guī)則19.10(不支持)。
PCLP-2511 改進了對消息1764的結構引用的處理
消息1764現(xiàn)在認識到,如果通過參數(shù)將對非const的引用綁定到結構的字段,則無法將對結構的類型引用的參數(shù)作為對const的引用。
PCLP-2874 改進了工會的價值跟蹤
對聯(lián)合的初始化、賦值和活動成員的支持得到了改進,減少了與類型校正和總體初始化狀態(tài)有關的誤報。
PCLP-2568 pclp_config提取Microsoft C / C ++編譯器宏的值
自動配置工具pclp_config現(xiàn)在提取已記錄的Microsoft C / C ++編譯器預定義宏的值。
PCLP-2586 減少涉及循環(huán)期間讀取和寫入的變量的“未使用”消息的誤報
在已經(jīng)嵌套的if語句已被循環(huán)讀取和寫入變量的情況下,涉及消息438和838的誤報。
PCLP-2587 改進不確定溢出的推斷值的無符號加法的計算
包含至少一個表示為間隔的值的無符號加法,其和在計算中的溢出是不確定的,因此先前可能會產(chǎn)生似乎確實發(fā)生了溢出的結果。這最常表現(xiàn)為假陽性774或845。
PCLP-2597 消息774的新變量/函數(shù)/ maro參數(shù)
現(xiàn)在,消息774將通過相關的變量,函數(shù)或宏(如果可用)進行參數(shù)化。例如:
void f(int x) { x = 5; if (x) { } }
現(xiàn)在將發(fā)出:
info 774: boolean condition for ’if’ always evaluates to ’true’ (involving variable ’x’)
PCLP-2607 對消息2701的模板處理的改進
消息2701將不再報告功能模板實例化或不明確的變量模板的特殊化。
想要購買PC-lint Plus正版授權,或了解更多產(chǎn)品信息請點擊
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: