一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享一款不錯的嵌入式靜態(tài)代碼掃描工具

strongerHuang ? 來源:嵌入式大雜燴 ? 2023-10-16 15:39 ? 次閱讀

轉(zhuǎn)自| 嵌入式大雜燴

之前給大家分享過嵌入式開發(fā)常用的代碼靜態(tài)分析工具,比如:PC-lint、LDRA、VectorCAST等。

今天再給大家分享一款不錯的嵌入式靜態(tài)代碼掃描工具。

靜態(tài)代碼掃描?

靜態(tài)代碼掃描是指無需運(yùn)行被測代碼,通過詞法分析、語法分析、控制流、數(shù)據(jù)流分析等技術(shù)對程序代碼進(jìn)行掃描,找出代碼隱藏的錯誤和缺陷,如參數(shù)不匹配,有歧義的嵌套語句,錯誤的遞歸,非法計算,可能出現(xiàn)的空指針引用等等。

同樣的,也有運(yùn)行時診斷的工具,如Valgrind等。

往期博文:Valgrind仿真調(diào)試工具的使用

靜態(tài)代碼掃描工具有很多,主流如:

cppcheck。免費(fèi),開源,更新較慢,可自己拓展開發(fā)。

clang。免費(fèi),開源,更新較慢,可自己拓展開發(fā)。

TscanCode 。免費(fèi),有專人維護(hù),定期根據(jù)用戶需求擴(kuò)展規(guī)則或新增功能特性。

pclint。付費(fèi),商業(yè)軟件,難以進(jìn)行功能擴(kuò)展。

coverity。付費(fèi),商業(yè)軟件,難以進(jìn)行功能擴(kuò)展。

關(guān)于這幾個工具各個指標(biāo)的詳細(xì)對比可參考文章:

本篇博文我們來介紹TscanCode。

TscanCode

TscanCode是騰訊研發(fā)的靜態(tài)代碼掃描工具,最早的版本是基于 cppcheck 二次開發(fā)。之后又重新自研,不僅支持 C/C++,還支持 C#,Lua 語言,在發(fā)掘 C/C++ 空指針、越界、未初始化、C#空引用、Lua變量未初始化等比較有效。

TscanCode 的 Github鏈接:

https://github.com/Tencent/TscanCode

b6d91d4a-6742-11ee-939d-92fbcf53809c.png

TscanCode 可編譯、運(yùn)行于多個平臺:Windows/Linux/Mac。

TscanCode 主要能夠發(fā)現(xiàn)的問題如下:

自動變量檢查:返回自動變量(局部變量)指針;

越界檢查:數(shù)組越界返回自動變量(局部變量)指針;

類檢查:構(gòu)造函數(shù)初始化;

內(nèi)存泄露檢查;

空指針檢查;

廢棄函數(shù)檢查;

下載得到:

b6e290f0-6742-11ee-939d-92fbcf53809c.png

各文件夾的內(nèi)容:

release文件夾:存放編譯后的二進(jìn)制文件,包含有Linux、Mac、Windows平臺。

samples文件夾:存放一些代碼示例,分別有C++、C#、Lua語言。

trunk文件夾:存放TscanCode源代碼。

1、Linux下使用TscanCode

對應(yīng)的Linux二進(jìn)制文件存放在如下路徑:

TscanCode-master/release/linux/TscanCodeV2.14.2395.linux

b6ec4c30-6742-11ee-939d-92fbcf53809c.png

使用前需要加上執(zhí)行權(quán)限:

chmod +x tscancode

例子:使用tscancode檢測samples文件夾下關(guān)于cpp的一些例子。

b6fd0566-6742-11ee-939d-92fbcf53809c.png

在TscanCode-master/release/linux/TscanCodeV2.14.2395.linux路徑下執(zhí)行命令:

./tscancode --xml --enable=all -q ../../../samples/cpp/ >scan_result.xml 2>&1

得到掃描結(jié)果文件:scan_result.xml。該文件復(fù)制到Windows下使用表格工具打開可比較清晰地看到掃描結(jié)果:

b707e36e-6742-11ee-939d-92fbcf53809c.pngb716f782-6742-11ee-939d-92fbcf53809c.png

例子:使用tscancode檢測C語言例子。

在TscanCode-master/release/linux/TscanCodeV2.14.2395.linux路徑下新建一個文件:

test.c:

#include

voidtest(void)
{
charbuf[5]={0};

for(size_ti=0;i

掃描:

./tscancode --xml --enable=all -q ./test.c >scan_result.xml 2>&1

結(jié)果:

b71ae7e8-6742-11ee-939d-92fbcf53809c.png

2、Windows下使用TscanCode

最新版本的release下已經(jīng)去掉windows下的可執(zhí)行文件??墒褂肰2.14.24版本的TscanCodeV2.14.24.windows.exe。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5125

    文章

    19438

    瀏覽量

    313071
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3533

    瀏覽量

    43292
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2116

    瀏覽量

    74568
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4880

    瀏覽量

    69998

原文標(biāo)題:一款不錯嵌入式靜態(tài)代碼掃描工具

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    一款適合嵌入式工程師使用的在線工具

    一款適合嵌入式工程師使用的在線工具,工具有如下功能,如下圖所示: 1. 報文校驗(yàn)功能,如下圖所示 2. UDP服務(wù)端測試工具:該UD
    發(fā)表于 04-09 22:20

    一款基于Murphypinyin的嵌入式鍵盤設(shè)計

    本文根據(jù)手持終端的特點(diǎn),設(shè)計出一款矩陣鍵盤,并在Linux平臺下開發(fā)出鍵盤的驅(qū)動程序。采用Qt/Embedded構(gòu)建圖形界面,通過對Qt/Embedded自帶輸入法的分析,結(jié)合Murphpinyin中文輸入法軟件包,構(gòu)建了一款可輸入數(shù)字、中/英文的
    發(fā)表于 04-28 06:50

    怎么設(shè)計一款ARM嵌入式汽車節(jié)能控制系統(tǒng)?

    ARM嵌入式汽車節(jié)能控制系統(tǒng)的工作原理是什么?怎么設(shè)計一款ARM嵌入式汽車節(jié)能控制系統(tǒng)?
    發(fā)表于 05-17 06:40

    分享一款不錯的基于nRF24E1的嵌入式2.4GHz無線接入系統(tǒng)

    分享一款不錯的基于nRF24E1的嵌入式2.4GHz無線接入系統(tǒng)
    發(fā)表于 05-27 06:06

    分享一款不錯的基于嵌入式Web Server的無線數(shù)據(jù)采集系統(tǒng)

    分享一款不錯的基于嵌入式Web Server的無線數(shù)據(jù)采集系統(tǒng)
    發(fā)表于 05-28 06:58

    如何從零開始開發(fā)一款嵌入式產(chǎn)品

    源:如何從零開始開發(fā)一款嵌入式產(chǎn)品原文地址:【轉(zhuǎn)】如何從零開始開發(fā)一款嵌入式產(chǎn)品作者:rainpad(20年的嵌入式經(jīng)驗(yàn)分享學(xué)習(xí),來自STM
    發(fā)表于 08-09 08:09

    介紹一下一款簡單易用的嵌入式AI方案

    公司玩了大半年的嵌入式AI平臺,現(xiàn)在產(chǎn)品進(jìn)入量產(chǎn)模式,也接觸了很多嵌入式方案,有了些心得體會,本人不才,在這里介紹一下一款簡單易用的嵌入式
    發(fā)表于 10-27 06:02

    怎樣挑選一款MCU平臺進(jìn)行嵌入式系統(tǒng)開發(fā)

    如今,嵌入式系統(tǒng)開發(fā)往往基于平臺模式。MCU平臺包括MCU及其相關(guān)器件(外延器件、配套器件等),集成開發(fā)環(huán)境(開發(fā)板、開發(fā)工具、中間件等),以及操作系統(tǒng)等。半導(dǎo)體廠商在推出一款MCU新產(chǎn)品時,
    發(fā)表于 11-03 08:42

    推薦一款比較好的嵌入式開發(fā)板

    學(xué)習(xí)嵌入式,必不可少的工具就是塊開發(fā)板。對新手而言,學(xué)嵌入式用哪個開發(fā)板好,下面為大家推薦一款比較好的
    發(fā)表于 11-08 06:38

    如何快速上手一款新的嵌入式CPU芯片

    如何快速上手一款新的嵌入式CPU芯片(記錄CC2540開發(fā)經(jīng)歷)最新要開發(fā)個藍(lán)牙的氛圍燈,網(wǎng)上找了好久,都沒找到合適的芯片。要么是TI或者nordic的純BLE,不帶播放音樂。要么是帶音頻又帶數(shù)據(jù)
    發(fā)表于 12-23 07:45

    怎樣去設(shè)計一款RK3399Pro嵌入式主機(jī)呢

    怎樣去設(shè)計一款RK3399Pro嵌入式主機(jī)呢?RK3399Pro嵌入式主機(jī)有哪些性能呢?
    發(fā)表于 02-10 07:00

    嵌入式系統(tǒng)開發(fā)中的靜態(tài)分析

      由于嵌入式系統(tǒng)行業(yè)的快速增長,嵌入式設(shè)備的代碼質(zhì)量成為主要關(guān)注點(diǎn)之??紤]到嵌入式系統(tǒng)開發(fā)的特殊性(調(diào)試難度大、出錯成本高等),開發(fā)人員
    的頭像 發(fā)表于 11-21 14:51 ?1558次閱讀

    靜態(tài)分析工具

    Analyzer`:Clang Static Analyzer是一款靜態(tài)代碼掃描工具,專門用于針對C,C++和Objective-C的程序進(jìn)
    的頭像 發(fā)表于 03-02 17:53 ?2951次閱讀
    <b class='flag-5'>靜態(tài)</b>分析<b class='flag-5'>工具</b>

    一款專業(yè)且全面的嵌入式開發(fā)調(diào)試工具

    不知道大家平時做嵌入式開發(fā)時用調(diào)試工具進(jìn)行調(diào)試,今天給大家分享一款專業(yè)且全面的嵌入式調(diào)試工具集:Micro-Lab。
    的頭像 發(fā)表于 04-15 14:10 ?1390次閱讀

    推薦一款專業(yè)且全面的嵌入式開發(fā)調(diào)試工具

    今天給大家分享一款專業(yè)且全面的嵌入式調(diào)試工具集:Micro-Lab在工作中,以什么樣的方式向領(lǐng)導(dǎo)匯報工作最直接高效呢?當(dāng)然是圖形界面!圖形界面更好表達(dá)個程序設(shè)計的邏輯思維,
    的頭像 發(fā)表于 04-20 10:00 ?1155次閱讀
    推薦<b class='flag-5'>一款</b>專業(yè)且全面的<b class='flag-5'>嵌入式</b>開發(fā)調(diào)試<b class='flag-5'>工具</b>