日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

静态分析工具Cppcheck在Windows上的使用

發(fā)布時(shí)間:2023/12/29 windows 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 静态分析工具Cppcheck在Windows上的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? 之前在https://blog.csdn.net/fengbingchun/article/details/8887843 介紹過Cppcheck,那時(shí)還是1.x版本,現(xiàn)在已到2.x版本,這里再總結(jié)下。

? ? ? Cppcheck是一個(gè)用于C/C++代碼的靜態(tài)分析工具,源碼地址為https://github.com/danmar/cppcheck ,最新發(fā)布版本為2.10,License為GPL-3.0.它支持在Windows、Linux、Mac上安裝

? ? ? Cppcheck提供了獨(dú)特的代碼分析來檢測bugs,并專注于檢測未定義的行為和危險(xiǎn)的編碼結(jié)構(gòu)。它的目標(biāo)是僅檢測代碼中的真正錯(cuò)誤,并生成盡可能少的誤報(bào)。Cppcheck關(guān)注bug而不是代碼風(fēng)格。

? ? ? 靜態(tài)分析是一個(gè)非常大的領(lǐng)域,Cppcheck只涵蓋了其中的一部分。沒有一種工具能覆蓋整個(gè)領(lǐng)域。每個(gè)工具都有獨(dú)特的代碼分析,使用一組工具比使用一種工具要好,是很好的補(bǔ)充。

? ? ? 未定義的行為(undefined behaviour)包括

? ? ? (1).dead pointers;

? ? ? (2).除以0;

? ? ? (3).整數(shù)溢出;

? ? ? (4).無效的位移操作;

? ? ? (5).無效的轉(zhuǎn)換;

? ? ? (6).STL的用法無效;

? ? ? (7).內(nèi)存管理;

? ? ? (8).空指針解引用;

? ? ? (9).越界檢查;

? ? ? (10).未初始化的變量;

? ? ? (11).寫const數(shù)據(jù);

? ? ? 安裝:從https://github.com/danmar/cppcheck/releases/tag/2.10 下載cppcheck-2.10-x64-Setup.msi,雙擊進(jìn)行安裝,并將安裝路徑即cppcheck.exe所在路徑加入到系統(tǒng)環(huán)境變量中。

? ? ? 結(jié)果消息(messages)包括

? ? ? (1).error: 執(zhí)行代碼時(shí)未定義的行為或其它錯(cuò)誤,如內(nèi)存泄漏;

? ? ? (2).warning: 執(zhí)行代碼時(shí)可能存在未定義的行為;

? ? ? (3).style: 風(fēng)格問題,例如未使用的函數(shù)、冗余代碼、constness、運(yùn)算符優(yōu)先級、可能的錯(cuò)誤;

? ? ? (4).performance: 基于常識(common knowledge)的運(yùn)行時(shí)性能建議;

? ? ? (5).portability: 可移植性警告;

? ? ? (6).information: 配置問題,與語法正確性無關(guān).

? ? ? 注意事項(xiàng)

? ? ? (1).通過執(zhí)行cppcheck.exe --help 可查看支持哪些輸入?yún)?shù);

? ? ? (2).語法: cppcheck.exe [options] [files or paths]

? ? ? (3).--file-filter=<str>: 設(shè)置文件過濾器,并且僅檢查與過濾器匹配的文件;如--file-filter=*bar.cpp 只分析以bar.cpp結(jié)尾的文件;

? ? ? (4).--cppcheck-build-dir=<dir>: Cppcheck將分析信息保存在該文件夾中,推薦使用.優(yōu)點(diǎn):加快分析速度,使增量分析成為可能;使用多個(gè)線程時(shí)也可以進(jìn)行全程序(whole program)分析;

? ? ? (5).--enable=<id>: id可為all, warning, style, performance, portability, information, missingInclude; all啟用所有檢查,當(dāng)掃描整個(gè)程序時(shí),建議只使用all,因?yàn)檫@會(huì)啟用unusedFunction;可以指定多個(gè)id,用逗號分開;

? ? ? (6).--file-list=<file>: 在文本文件中指定要check的文件;

? ? ? (7).-I <dir>: 給出搜索include文件的路徑,可有多個(gè)-I;

? ? ? (8).--include=<file>: 在checked文件之前強(qiáng)制include一個(gè)文件;

? ? ? (9).--output-file=<file>: 將結(jié)果寫入文件;

? ? ? (10).-v或--verbose: 輸出更詳細(xì)的錯(cuò)誤信息.

? ? ? 這里使用GitHub Messy_Test/demo/Messy_Test?中的代碼進(jìn)行測試,執(zhí)行命令如下所示:

? ? ? 在當(dāng)前的results目錄生成一些文件,打開其中的result.txt,內(nèi)容如下:對有問題的代碼行給出原因說明

?

? ? ? GitHub:?https://github.com/fengbingchun/Messy_Test

總結(jié)

以上是生活随笔為你收集整理的静态分析工具Cppcheck在Windows上的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。