有人問:代碼中類似/*lint !e750... */代表什么意思?
回答這個問題,就要牽涉到本文說的PC-Lint這個工具。
1寫在前面
可能有一定編程經驗的朋友,應該在一些地方都看到過類似/*lint !e750... */這種“注釋”。
但,有多少人去分析過它的含義呢?
比如:在FreeRTOS的tasks.c源碼中有如下一行語句:
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750. */
后面/*lint !e961 !e750. */作用就是:在使用PC-Lint工具進行靜態分析時,隱藏本行宏定義未被調用的“錯誤”。
換種方式理解:編譯時,這條語句不出現警告信息(注意:這里是比喻為編譯,其實是PC-Lint靜態分析)。
2
關于PC-Lint
PC-Lint 是GIMPEL SOFTWARE公司開發的C/C++軟件代碼靜態分析工具,它的全稱是PC-Lint/FlexeLint for C/C++。
你可以把它看作是一種更加嚴格的編譯器。它除了可以檢查出一般的語法錯誤外,還可以檢查出那些雖然符合語法要求,但很可能是潛在的、不易發現的錯誤。
C語言的靈活性帶來了代碼效率的提升,但相應帶來了代碼編寫的隨意性,另外C編譯器不進行強制類型檢查,也帶來了代碼編寫的隱患。
PC-Lint識別并報告C語言中的編程陷阱和格式缺陷的發生。它進行程序的全局分析,能識別沒有被適當檢驗的數組下標,報告未被初始化的變量,警告使用空指針,冗余的代碼等。
軟件除錯是軟件項目開發成本和延誤的主要因素,PC-lint能夠幫你在程序動態測試之前發現編碼錯誤,這樣消除錯誤的成本更低。
錯誤號
PC-Lint 能夠檢查出很多語法錯誤和語法上正確的邏輯錯誤,PC-Lint 為大部分錯誤消息都分配了一個錯誤號:
這些錯誤號在文檔中有詳細說明:
命令格式:
更多相關內容可以參考官網:
www.gimpel.com
3
Keil支持PC-Lint說明
在Keil官網有這樣一段信息:
X PC-lint is a powerful static analysis tool that will check your C/C++ source code and find bugs, glitches, inconsistencies, non-portable constructs, redundant code, and much more. It looks across multiple modules, and so, enjoys a perspective your compiler does not have.
A C compiler cannot always detect each and every potential problem in your source files.
This is where PC-Lint comes in.
Supports K&R C, ANSI C, and ANSI/ISO C++ standards
Explicit support for MISRA C and MISRA C++ (Motor Industry Software Reliability Association) standards
Value tracking of auto and static variables detects subtle initialization and value misuse problems
Inter-function Value Tracking - powerful inter-statement value tracking crosses function boundaries
Optional strong type checking (typedef-based) with a rich option set to detect nominal type differences
User-defined semantic checking for function arguments and return values
Each of the Keil development tools, ARM, C51, C251, and C166, support Gimpel Software's PC-Lint. Configuration files are included in the Keil development tools which enable you to quickly and easily begin using PC-Lint in your application development and testing.
http://www.keil.com/pclint
大概意思就是Keil(ARM, C51, C251, and C166)支持PC-Lint,配置文件包含在Keil開發工具中,使您能夠在應用程序開發和測試中快速輕松地開始使用PC-Lint。
還提供了一個例子:
示例代碼:
C51編譯輸出結果:
執行PC-Lint輸出:
示例程序列表(錯誤以突出顯示),C51編譯器輸出和PC-Lint輸出。當PC-Lint檢測到并報告26個錯誤和警告時,C51編譯器會檢測并報告12個錯誤和警告。
4
MDK中添加PC-Lint
要使用PC-Lint,大概需要以下兩步:
安裝PC-Lint
MDK添加PC-Lint
1.安裝PC-Lint
PC-Lint是一款收費的工具,大家可以網上搜索相關po解版本,相關安裝很簡單,這里不說明。
2.MDK添加PC-Lint
在MDK的幫助文檔中,有相關添加和配置說明,我這里也簡單說下。
A.菜單Tools ->Set-up PC-lint進入配置界面(如上圖)
B.添加lint-nt.exe
前提需要安裝PC-Lint,指向安裝路徑下的lint-nt.exe。點擊“...”即可添加(標記1)。
C.添加co-ARMCC-5.lnt
這個路徑是MDK安裝目錄下面,可參看上圖(標記2)。
D.MISRA規則配置
這里參看幫助文檔,選擇MISRA_C_2012_Config(標記3)。
E.增加PC-Lint命令
例如,要禁止PC-lint輸出的info 714消息,可以在此對話框中輸入-e714 (標記4)。
當然,本文重點在于引導大家了解PC-Lint這個工具,想要運用PC-lint這個工具,還需要掌握更多相關規則、配置。
-
C語言
+關注
關注
180文章
7614瀏覽量
137723 -
代碼
+關注
關注
30文章
4827瀏覽量
69054 -
MDK
+關注
關注
4文章
209瀏覽量
32154
發布評論請先 登錄
相關推薦
![](https://file1.elecfans.com/web3/M00/05/B7/wKgZO2eDYNuAHmirAA0ieYuaMKY879.png)
AI PC的崛起
移遠通信亮相驍龍AI PC生態科技日,以領先的5G及Wi-Fi產品革新PC用戶體驗
![移遠通信亮相驍龍AI <b class='flag-5'>PC</b>生態科技日,以領先的5G及Wi-Fi產品革新<b class='flag-5'>PC</b>用戶體驗](https://file1.elecfans.com/web1/M00/F4/92/wKgaoWcthP2AYnEBAASy5ds6NL0433.jpg)
移遠通信亮相驍龍AI PC生態科技日,以領先的5G及Wi-Fi產品革新PC用戶體驗
![移遠通信亮相驍龍AI <b class='flag-5'>PC</b>生態科技日,以領先的5G及Wi-Fi產品革新<b class='flag-5'>PC</b>用戶體驗](https://file.elecfans.com/web2/M00/7E/74/poYBAGOFf5yATa2-AAAcsfElJTM256.png)
PC示波器:電子測試與測量的革命性工具
2026年AI PC市場將占Windows PC半壁江山
Lint靜態驗證工具如何助力IC設計
![<b class='flag-5'>Lint</b>靜態驗證<b class='flag-5'>工具</b>如何助力IC設計](https://file1.elecfans.com/web2/M00/05/02/wKgZombWcU6AHyg_AABtrNGrCjc769.jpg)
如何在ModelSim中添加Xilinx仿真庫
AI PC:真正的AI PC,敢于下場
![](https://file1.elecfans.com/web2/M00/DF/07/wKgaomYtxB2AfYm_AAItTZ97f1w919.jpg)
英特爾預測2024年出貨4000萬AI PC,覆蓋輕薄PC及游戲掌機設備
PC817B和PCt1pC有什么區別
傳統PC已過時?2024年AI PC領航未來!
![傳統<b class='flag-5'>PC</b>已過時?2024年AI <b class='flag-5'>PC</b>領航未來!](https://file1.elecfans.com/web2/M00/C5/9D/wKgZomYA4LqAch7qAABWamY26OI597.png)
聯想4月18日發布AI PC新品,引領AI PC時代
AI PC產品密集發布,預計2025年AI PC占全球PC出貨量40%
![AI <b class='flag-5'>PC</b>產品密集發布,預計2025年AI <b class='flag-5'>PC</b>占全球<b class='flag-5'>PC</b>出貨量40%](https://file1.elecfans.com/web2/M00/D0/DB/wKgaomYiN-OAWY2KAAWrviyk0vA756.png)
評論