翻譯|行業資訊|編輯:莫成敏|2019-11-07 16:07:49.483|閱讀 686 次
概述:PC-lint Plus是C和C ++的首選靜態分析工具。本文主要介紹PC-lint Plus v1.3版本中修復的錯誤。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
PC-lint Plus是一種靜態分析工具,通過分析C和C ++源代碼來發現軟件中的缺陷。與編譯器一樣,PC-lint Plus會解析源代碼文件,執行語義分析,并構建一個抽象語法樹來表示程序。PC-lint Plus采用各種機制,包括數據流分析,數值跟蹤,讀寫分析,強類型檢查,功能語義驗證和許多其他技術,來提供對單個文件和整個項目強大而全面的分析。本文主要描述PC-lint Plus新版本修復的內容~
修復BUG:
PCLP-2663 誤報9103涉及功能模板
消息9103將不再報告功能模板定義,也不再使用實例化作為對原始模板聲明名稱的重用。
PCLP-2668 消息882發出警告而不是提示信息
以前,消息882(應用于聲明為不完整數組類型的參數的sizeof消息)被錯誤地報告為“警告”,而不是正確的“info”消息類別。此問題已得到糾正。
PCLP-2669 消息682和882的呈現問題
消息682(應用于大小數組參數的sizeof)和882(應用于不完整數組參數的sizeof)之前都是用“function”這個詞在診斷中重復的,并且沒有與涉及參數的函數相對應的正確符號參數。這些問題已得到糾正。
PCLP-2670 返回三元表達式時缺少條件返回推斷
返回對三元表達式求值的結果將不再禁止針對封閉的if語句條件的推斷。例如,在以前的版本中,如果在條件為指針為空的if語句內部直接返回三元表達式的結果,則稍后如果在if語句之后未認識到指針不能為null,則可能導致false positive。
PCLP-2838 某些標頭包含在預編譯的標頭中時,斷言失敗或崩潰
解決了預編譯標頭(包括Visual Studio 2017頭)中時,可能表現為斷言失敗或崩潰的問題。
PCLP-2740 消息2454在-etype中不能正常工作
-etype選項以前無法按預期與消息2454一起工作,此問題已得到糾正。
PCLP-2726 修復了用于沖突檢測的功能參數的處理
當使用-idlen時,PC-lint Plus有時會錯誤地通過621錯誤地報告作用域內的函數參數與另一個標識符之間的名稱沖突。另外,使用-idlen時,包含數千個函數聲明的模塊將遭受明顯的性能損失。這些問題都已得到糾正。
PCLP-2742 使用空指針調用fflush時不發出警告
調用fflush時,PC-lint Plus先前發出418(將空指針傳遞給函數)將為空指針。這樣做的行為是明確定義的,在這種情況下將不再發出此消息。
PCLP-2775 由-header、lint注釋、-indirect和-d的嵌套使用觸發的掛起或內部錯誤
通過將-d選項放置在配置文件中而導致的掛起或內部錯誤已得到糾正,該配置文件通過-header選項包含的標頭中的lint注釋中的-indirect選項包含在模塊中。
PCLP-2778 誤報與精度相關的消息,涉及非恒定偏移
當已知數量偏移了未知數量的位數時,涉及精度和諸如587之類的預定謂詞消息的誤報已得到糾正。
PCLP-2786 不要為跳過主體的功函數發出715
先前為具有定義但跳過其主體的函數發出了消息715(函數的命名參數,以后未引用)。跳過的函數體是PC-lint Plus不處理的函數體,當使用-skip_function選項或flf標志為OFF時在庫區域中定義的函數時,可能會發生。在這種情況下,將不再發出消息715。
PCLP-2793 不要抱怨使用regparm屬性
以前,當在函數聲明中遇到regparm屬性時,PC-lint Plus會發出錯誤4211(“regparm”在此平臺上無效)。 PC-lint Plus將不再發出此消息。
PCLP-2795 正確處理語義規范中的?operator
在-sem選項內部出現的語義表達式中,?運算符未正確處理。此問題已得到糾正。
PCLP-2806 包含匿名聯合的類的誤報1927
現在,出于消息1927的目的,將考慮對匿名聯合的任何成員進行初始化,以初始化匿名聯合本身。如果未初始化任何匿名成員,則消息1927仍然可以報告匿名聯合。
PCLP-2818 錯誤值850,用于右值引用到索引變量
當由for變量創建的臨時變量通過右值引用傳遞給函數時,將不再發出消息850。
PCLP-2844 更正了舊C編譯器的imposter.c
將局部變量聲明移至復合語句的開頭,以支持舊的C編譯器。
PCLP-2869 在Windows上重定向之前未刷新緩沖的輸出流
現在,使用-oe和-os選項進行輸出重定向將確保首先刷新所有緩沖的輸出,以避免任何以前緩沖的輸出寫入Windows的新流中。
PCLP-2894 在Microsoft兼容模式下使用依賴返回值實例化類模板的成員函數時需要掛起,該依賴返回值用于在依賴調用程序中推導自動返回類型
Microsoft兼容模式使用+ fdt標志來啟用延遲的模板解析。解決了一種情況,即立即同時需要模板實例化才能推斷出返回類型,并且這種情況已延遲到模塊結束(因為Microsoft兼容性導致掛起)。
PCLP-2897 pclp_config現在可以正確處理指定小寫宏的選項
如果使用格式為-Dmacro或/ Dmacro的編譯器選項定義了宏,然后通過pclp_config對其進行了轉換以生成配置文件,則如果該宏名包含小寫字母,則由pclp_config執行的轉換將是不正確的。這可能會導致宏未在結果配置文件或格式錯誤的配置中正確定義,從而導致在嘗試使用宏時出錯。此問題已得到解決。
PCLP-2785 誤報734(精度損失),導致轉換結果的精度過高
現在,強制轉換為可表示值范圍較小的無符號類型將永久限制操作數的精度。以前,某些操作(例如“異或”或“揭示”操作數的原始精度)是可能的。
PCLP-2921 對于Windows構建,默認情況下fff標志現在為ON
該文檔聲稱,在Windows內部版本中,默認情況下fff標志處于啟用狀態,但實際上并非如此。此問題已得到糾正,并且Windows版本的fff標志的默認值現在為ON。
PCLP-2925 au-misra3.lnt中的-append選項不正確
規則1.3的au-misra3.lnt中的-append選項引用了錯誤的消息號(2454,而不是64)。這已得到糾正。
PCLP-2959 消息1932包含正確的基類
消息1932(基類不是抽象的)以前將派生類報告為基類,此問題已得到糾正。
PCLP-2986 虛數字后綴的誤報9106
使用后綴I或i時,PC-lint Plus先前報告的消息9106(小寫字母后綴)的字符串參數為j。使用I將不再引發此消息,并且將以正確的字符串參數化引發該消息。
PCLP-2998 改進常量表達式的解析,該常量表達式的評估涉及副作用
確定其評估是否會導致副作用的表達式或依賴于其評估會導致副作用的另一個表達式是否可以作為C ++中的常量表達式的確定,已改進為始終符合所選語言標準。
PCLP-3016 將不兼容的指針類型消息從2450移動到2449
消息2450繼續報告文件中原義的空字符的存在。不兼容類型警告已移至消息2449。
PCLP-3021 Visual Studio 2013和2015的32位和64位版本的基本配置之間的差異
用于支持Visual Studio標準庫的_EMIT_VECTORCALL定義現在包含在Visual Studio 2013和2015的32位配置中。以前僅在64位版本中出現。
相關內容推薦:
C和C ++的靜態分析工具PC-lint Plus v1.3更新內容:新消息摘要
C和C ++的靜態分析工具PC-lint Plus v1.3更新內容:修復錯誤(上)
想要購買該產品正版授權,或了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: