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