翻譯|行業(yè)資訊|編輯:莫成敏|2019-12-04 14:02:11.070|閱讀 596 次
概述:本文描述了在PC-lint Plus v1.3版本中的更新內(nèi)容之一,總體改進(jìn),該內(nèi)容較多,分為上中下三個部分,這是第二部分內(nèi)容哦~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
PC-lint Plus是一種靜態(tài)分析工具,通過分析C和C ++源代碼來發(fā)現(xiàn)軟件中的缺陷。與編譯器一樣,PC-lint Plus會解析源代碼文件,執(zhí)行語義分析,并構(gòu)建一個抽象語法樹來表示程序。PC-lint Plus采用各種機(jī)制,包括數(shù)據(jù)流分析,數(shù)值跟蹤,讀寫分析,強(qiáng)類型檢查,功能語義驗證和許多其他技術(shù),來提供對單個文件和整個項目強(qiáng)大而全面的分析。
本文描述了在PC-lint Plus v1.3版本中的更新內(nèi)容之一,總體改進(jìn),該內(nèi)容較多,分為上中下三個部分,這是第二部分內(nèi)容哦~感興趣的朋友可以請看下面內(nèi)容~
總體改進(jìn):
PCLP-2610 消息548和9013不再在功能模板實例中發(fā)出
不再為函數(shù)模板實例化發(fā)出消息548(如果語句沒有主體,否則)和9013(“if ... else if”鏈的末尾沒有“else”)。
PCLP-2622 現(xiàn)在為單個模塊發(fā)出消息759和765
以前,PC-lint Plus在分析多個模塊時僅會發(fā)出消息759(符號的標(biāo)頭聲明可以從標(biāo)頭移動到模塊)和765(外部符號可以變?yōu)殪o態(tài))。盡管這與PC-lint 9的行為相匹配,但是這是僅有的兩條以這種方式表現(xiàn)的分析消息,它們對用戶而言是不直觀且不受歡迎的。現(xiàn)在,將在分析單個模塊時發(fā)出這些消息,并且可以使用常規(guī)抑制選項或執(zhí)行禁用所有全局總結(jié)分析的單元檢出(-u或-unit_check)來抑制這些消息。
PCLP-2627 消息9098軟化以進(jìn)行強(qiáng)制轉(zhuǎn)換
消息9098(指針參數(shù)未指向指針類型或本質(zhì)上有符號、無符號、布爾或枚舉類型的消息)現(xiàn)在將對memcmp的參數(shù)進(jìn)行強(qiáng)制轉(zhuǎn)換。現(xiàn)在可以通過將參數(shù)強(qiáng)制轉(zhuǎn)換為適當(dāng)?shù)念愋蛠硪种拼讼ⅰ?
PCLP-2628 消息907和908的增強(qiáng)
消息907和908的文本已被修改為包括分配上下文并首先引用源類型。先前已在不涉及分配的情況下發(fā)布了消息,該分配也已得到糾正。
PCLP-2631 改進(jìn)了針對pclp_config的未知編譯器名稱的錯誤消息
現(xiàn)在,當(dāng)提供未知的編譯器名稱時,pclp_config.py實用程序?qū)l(fā)出更詳細(xì)的錯誤消息。
PCLP-2632 擴(kuò)展消息449和2434的范圍
現(xiàn)在,當(dāng)訪問已釋放結(jié)構(gòu)的成員或?qū)?shù)組下標(biāo)應(yīng)用于單個已釋放對象的地址時,將發(fā)出消息449和2434。
PCLP-2635 澄清消息9079的文本
消息9079已被重新措詞以闡明參數(shù)化類型是目標(biāo)指針類型,而不是它指向的類型。
PCLP-2638 為消息648的變體協(xié)調(diào)文本
根據(jù)報告消息的上下文,使用不同的文本發(fā)布了消息648(計算常量中的溢出)。消息文本已在所有上下文中進(jìn)行了標(biāo)準(zhǔn)化。
PCLP-2639 修復(fù)了-help和-dump_messages選項的消息描述中缺少的“C ++”文本。
在通過-help和-dump_messages選項發(fā)出的消息描述中,有時會省略對“C ++”的引用。此問題已得到糾正。
PCLP-2658 消息9233的偏移增加了一個已知的負(fù)值
當(dāng)RHS是常量表達(dá)式(作為特殊例外)時,消息9233(按位運(yùn)算符可能不應(yīng)用于帶符號基礎(chǔ)類型的操作數(shù))之前已被移位運(yùn)算符抑制。此取消操作未考慮常量表達(dá)式的值,該值會導(dǎo)致在將消息偏移恒定的負(fù)值時被抑制。此問題已得到糾正,并且當(dāng)以已知的非負(fù)值進(jìn)行移位時,消息9233不只是會為移位運(yùn)算符進(jìn)行抑制。
PCLP-2659 沒有發(fā)出消息981轉(zhuǎn)換為類類型
不打算發(fā)出消息981來轉(zhuǎn)換為類類型。解決了在使用initializer_list構(gòu)造函數(shù)時針對類類型顯示消息的情況。
PCLP-2664 完善消息1762的關(guān)閉成員
消息1762將不再報告可以自動將由lambda表達(dá)式創(chuàng)建的閉包類型的成員函數(shù)設(shè)為const。
PCLP-2672 無法打開文件時發(fā)出消息305
當(dāng)文件存在但PC-lint Plus無法打開它(例如,因為它是目錄或沒有讀取權(quán)限)時,有時會發(fā)出錯誤4083(錯誤讀取文件),而不是標(biāo)準(zhǔn)的致命錯誤305。消息305將代替在這種情況下發(fā)出。
PCLP-2697 改進(jìn)了-dump_messages和-dump_message_list的消息文本
使用-dump_messages和-dump_message_list選項轉(zhuǎn)儲消息列表時,有幾條消息會在參數(shù)化周圍插入空格字符。例如,消息330呈現(xiàn)為static_assert failed__ string__而不是static_assert failed __string__。此問題已得到糾正。
PCLP-2698 對__has_unique_object_representations類型固有的支持
PC-lint Plus現(xiàn)在為GCC和Visual Studio 2017使用的__has_unique_object_representations類型特征固有函數(shù)提供內(nèi)置支持。
PCLP-2729 支持_Float128用于由pclp_config生成的GCC配置。
使用pclp_config生成的GCC配置現(xiàn)在將支持_Float128類型。
PCLP-2773 不再為依賴表達(dá)式發(fā)出消息866
消息866(sizeof的異常參數(shù))先前是針對sizeof的從屬表達(dá)式發(fā)出的,這可能導(dǎo)致誤報。對于依賴表達(dá)式,將不再發(fā)出此消息。
PCLP-2784 允許在不同的選項環(huán)境中重用間接文件
以前,多次引用同一個間接文件將導(dǎo)致致命錯誤314(無法再次使用間接文件)。現(xiàn)在允許重用間接文件,只要在同一選項環(huán)境(或祖先選項環(huán)境)中未多次引用同一文件即可。此更改旨在簡化對選項環(huán)境和間接文件的管理。例如,如果您有一個間接文件包含項目級配置,project.lnt和僅適用于某些模塊的間接文件,例如opts1.lnt,opts2.lnt等,您現(xiàn)在可以說:
project.lnt -env_save(PROJECT) -env_restore(PROJECT) opts1.lnt module1.c -env_restore(PROJECT) opts2.lnt module2.c -env_restore(PROJECT) opts1.lnt opts3.lnt module3.c
允許在最后一行中重用opts1.lnt,因為在重用之前恢復(fù)了PROJECT環(huán)境,并且在保存選項環(huán)境時未引用opts1.lnt。
PCLP-2803 從MISRA作者文件中刪除的對不存在消息的引用
au-misra2.lnt和au-misra3.lnt文件包含對PC-lint Plus中不存在的消息的一些錯誤引用。這些參考已被適當(dāng)刪除/更新。
PCLP-2805 向au-misra3- amd1.lnt添加了對MISRA C 2012 AMD-1指令4.14的引用
版本1.1中添加的au-misra3-amd1.lnt文件缺少M(fèi)ISRA C 2012 AMD-1指令4.14。
PCLP-2809 按來源位置對“可能是常量”消息進(jìn)行排序
早期版本的PC-lint Plus會以不確定的順序發(fā)出“可能是常量”消息(818、843、844、952、953、954、1746、1764)。現(xiàn)在,PC-lint Plus將按照引用的源位置的順序發(fā)出消息。
PCLP-2813 現(xiàn)在,從致命錯誤退出時,將寫入SGML終止標(biāo)簽
使用+ xml或+ html選項時,當(dāng)PC-lint Plus因致命錯誤而終止時,不會發(fā)出關(guān)閉文檔標(biāo)簽。現(xiàn)在,在PC-lint退出致命錯誤之前,將發(fā)出關(guān)閉標(biāo)簽。
PCLP-2821 通過空函數(shù)指針警告調(diào)用
現(xiàn)在,當(dāng)使用空函數(shù)指針進(jìn)行函數(shù)調(diào)用時,將發(fā)出消息413和613。
PCLP-2823 不再為已刪除的構(gòu)造函數(shù)發(fā)出消息1931和9169
先前為無法刪除的構(gòu)造函數(shù)發(fā)出了消息1931(構(gòu)造函數(shù)可用于隱式轉(zhuǎn)換)和9169(構(gòu)造函數(shù)可用于從基本類型進(jìn)行隱式轉(zhuǎn)換)。在這種情況下,將不再發(fā)出這些消息。
PCLP-2833 改進(jìn)的異常處理診斷
PC-lint Plus以前曾假設(shè)可能會拋出外部“C”函數(shù),這可能導(dǎo)致與異常有關(guān)的意外診斷,例如1550(函數(shù)拋出的異常不在拋出列表中)。現(xiàn)在,默認(rèn)行為假定外部“C”函數(shù)未拋出與PC-lint 9行為匹配的函數(shù)。新的fxt標(biāo)志可用于更改此假設(shè)。現(xiàn)在還可以識別GCC nothrow屬性,該屬性允許指定使用+ fxt表示單獨(dú)假定此類函數(shù)拋出時,各個外部“C”函數(shù)不拋出。
PCLP-2835 在消息1705的文本中添加空間
消息1705(可以使用嵌套名稱說明符訪問靜態(tài)成員)現(xiàn)在在單詞operator和字符串參數(shù)之間包含一個空格,其中包含所用運(yùn)算符的拼寫。
PCLP-2839 消息1762是由于調(diào)用了靜態(tài)成員函數(shù)而沒有可見的定義
調(diào)用其定義不可見的成員函數(shù)通常會阻止將調(diào)用函數(shù)視為候選const成員函數(shù),因為尚不清楚被調(diào)用函數(shù)是否修改了實例對象。調(diào)用不能修改非可變成員的const成員函數(shù)是一個例外。現(xiàn)在,該異常擴(kuò)展到了靜態(tài)成員函數(shù)(它們根本無法在實例上運(yùn)行)。結(jié)果是消息1762(成員函數(shù)可以設(shè)為常量)不會僅僅因為調(diào)用了這樣的函數(shù)而被抑制。
相關(guān)內(nèi)容推薦:
C和C ++的靜態(tài)分析工具PC-lint Plus v1.3更新內(nèi)容:總體改進(jìn)(上)
想要購買PC-lint Plus正版授權(quán),或了解更多產(chǎn)品信息請點(diǎn)擊
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: