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