在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

在RT-Thread的scons上使用clang-tidy做靜態(tài)分析

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 2023-04-27 14:09 ? 次閱讀

測試代碼

先寫個簡單的代碼

main.c

 1#include
 2#include
 3#include
 4intmain(intargc,char*argv[])
 5{
 6char*tmp=(char*)malloc(argc);
 7if(tmp)
 8{
 9strncpy(tmp,argv[0],argc);
10printf("%s",tmp);
11if(argc>2)
12{
13free(tmp);
14}
15}
16printf("helloworld!
");
17return0;
18}

使用clang-tidy分析一下

 1#aptinstall-yclang-tidy
 2#clang-tidymain.c
 3Errorwhiletryingtoloadacompilationdatabase:
 4Couldnotauto-detectcompilationdatabaseforfile"main.c"
 5Nocompilationdatabasefoundin/work/analyzeroranyparentdirectory
 6fixed-compilation-database:Errorwhileopeningfixeddatabase:Nosuchfileordirectory
 7json-compilation-database:ErrorwhileopeningJSONdatabase:Nosuchfileordirectory
 8Runningwithoutflags.
 92warningsgenerated.
10/work/analyzer/main.c:12:3:warning:Calltofunction'strncpy'isinsecureasitdoesnotprovidesecuritychecksintroducedintheC11standard.Replacewithanalogousfunctionsthatsupportlengthargumentsorprovidesboundarycheckssuchas'strncpy_s'incaseofC11[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
11strncpy(tmp,argv[0],argc);
12^~~~~~~
13/work/analyzer/main.c:12:3:note:Calltofunction'strncpy'isinsecureasitdoesnotprovidesecuritychecksintroducedintheC11standard.Replacewithanalogousfunctionsthatsupportlengthargumentsorprovidesboundarycheckssuchas'strncpy_s'incaseofC11
14strncpy(tmp,argv[0],argc);
15^~~~~~~
16/work/analyzer/main.c:21:2:warning:Potentialleakofmemorypointedtoby'tmp'[clang-analyzer-unix.Malloc]
17printf("helloworld!
");
18^
19/work/analyzer/main.c:8:22:note:Memoryisallocated
20char*tmp=(char*)malloc(argc);
21^~~~~~~~~~~~
22/work/analyzer/main.c:10:5:note:Assuming'tmp'isnon-null
23if(tmp)
24^~~
25/work/analyzer/main.c2:note:Takingtruebranch
26if(tmp)
27^
28/work/analyzer/main.c6:note:Assuming'argc'is<=?2
29????????????????if(argc?>2)
30^~~~~~~~
31/work/analyzer/main.c:15:3:note:Takingfalsebranch
32if(argc>2)
33^
34/work/analyzer/main.c2:note:Potentialleakofmemorypointedtoby'tmp'
35printf("helloworld!
");
36^

compile_commands.json

還是有點用的,但我們RT-Thread項目中代碼那么多,一個一個輸入太麻煩了。

而且我們代碼多是arm和gcc的,而開發(fā)機多是x86,clang默認參數(shù)也分析不了。

剛才分析結(jié)果第1行就有提示,沒有找到compilation database,其實scons就可以生成

需要比較新的版本

1python3-mpipinstallscons
2python3-mSCons-v
3SConsbyStevenKnightetal.:
4SCons:v4.0.1.c289977f8b34786ab6c334311e232886da7e8df1,2020-07-1701:50:03,bybdbaddogonProDog2020
5SConspath:['/usr/lib/python3/dist-packages/SCons']
6Copyright(c)2001-2020TheSConsFoundation

然后更新下Scons腳本,讓生成compile_commands.json

1#gitdiffSConstruct
2+env.Tool('compilation_db')
3+env.CompilationDatabase()
4#makeabuilding
5DoBuilding(TARGET,objs)

run-clang-tidy

然后使用 run-clang-tidy 就可以自動分析所有的源代碼了。

輸出html

生成的結(jié)果是文本,查看起來還是比較費力的,目前有個簡單的轉(zhuǎn)換為html格式,

雖然也比較簡陋,但比文本還是方便多了。






審核編輯:劉清

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

    關(guān)注

    134

    文章

    9321

    瀏覽量

    375385
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1372

    瀏覽量

    41556
  • gcc編譯器
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    3669

原文標(biāo)題:在RT-Thread的scons基礎(chǔ)上,使用clang-tidy做靜態(tài)分析

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    RT-Thread學(xué)習(xí)筆記】使用scons命令生成靜態(tài)

    RT-Thread學(xué)習(xí)筆記】如何使用scons 命令中buildlib的生成靜態(tài)庫?
    的頭像 發(fā)表于 07-27 09:13 ?6854次閱讀
    【<b class='flag-5'>RT-Thread</b>學(xué)習(xí)筆記】使用<b class='flag-5'>scons</b>命令生成<b class='flag-5'>靜態(tài)</b>庫

    基于RT-Thread的RoboMaster電控框架設(shè)計

    由于 RT-Thread 穩(wěn)定高效的內(nèi)核,豐富的文檔教程,積極活躍的社區(qū)氛圍,以及設(shè)備驅(qū)動框架、Kconfig、Scons、日志系統(tǒng)、海量的軟件包……很難不選擇 RT-Thread 進行項目開發(fā)。
    發(fā)表于 09-06 15:21 ?948次閱讀

    RT-Thread系統(tǒng)中的Scons構(gòu)建工具資料推薦

    RT-ThreadSCons標(biāo)準(zhǔn)接口的基礎(chǔ),提供了一組用于組織源碼工程的擴展接口。開發(fā)者使用時,可以借助
    發(fā)表于 05-07 15:35

    RT-Thread SCons編譯不穩(wěn)定問題debug總結(jié)

    摘要在使用RT-Thread的過程中,發(fā)現(xiàn)RT-Thread SCons存在編譯不穩(wěn)定的問題。源文件相同的情況下連續(xù)編譯,相鄰兩次生成的map文件和bin文件差異巨大、運行效果不同,
    發(fā)表于 09-19 16:44

    RT-Thread怎樣去使用clang-tidy靜態(tài)分析

    );}}printf("hello world!\\n");return 0;}使用clang-tidy分析一下
    發(fā)表于 09-20 15:33

    RT-Thread Smart已正式上線

    rt-smart內(nèi)核即可包含基本功能,同時也可定制裁剪。rt-smart用戶態(tài)應(yīng)用環(huán)境采用musl libc提供POSIX接口調(diào)用及C運行環(huán)境,延續(xù) RT-Thread 原有的生態(tài),使用sco
    的頭像 發(fā)表于 11-29 10:31 ?3047次閱讀

    RT-Thread 4.1.0的CMake構(gòu)建教程

    CMake 支持 RT-Thread 4.1.0 正式發(fā)布版中,添加了對 CMake 的支持。開發(fā)者可以使用 SCons 工具來生成 CMakeLists.txt 文件。 為何要支持 CMake
    的頭像 發(fā)表于 05-25 11:06 ?3752次閱讀

    RT-Thread全球技術(shù)大會:KconfigRT-Thread中的工作機制

    RT-Thread全球技術(shù)大會:KconfigRT-Thread中的工作機制 ? ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 14:49 ?1771次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會:Kconfig<b class='flag-5'>在</b><b class='flag-5'>RT-Thread</b>中的工作機制

    RT-Thread全球技術(shù)大會:關(guān)于SCons構(gòu)建引擎的主要部分介紹

    RT-Thread全球技術(shù)大會:關(guān)于SCons構(gòu)建引擎的主要部分介紹 ? ? ? ? 審核編輯:彭靜 ?
    的頭像 發(fā)表于 05-27 14:55 ?1250次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會:關(guān)于<b class='flag-5'>SCons</b>構(gòu)建引擎的主要部分介紹

    RT-Thread全球技術(shù)大會:RT-Thread編寫測試用例

    RT-Thread全球技術(shù)大會:RT-Thread編寫測試用例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:28 ?1695次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會:<b class='flag-5'>在</b><b class='flag-5'>RT-Thread</b><b class='flag-5'>上</b>編寫測試用例

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發(fā)表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    RT-Threadscons基礎(chǔ)使用clang-tidy靜態(tài)分析

    剛才分析結(jié)果第1行就有提示,沒有找到compilation database,其實scons就可以生成
    發(fā)表于 07-22 14:18 ?922次閱讀

    基于 RT-Thread 的 RoboMaster 電控框架(一)

    由于 RT-Thread 穩(wěn)定高效的內(nèi)核,豐富的文檔教程,積極活躍的社區(qū)氛圍,以及設(shè)備驅(qū)動框架、Kconfig、Scons、日志系統(tǒng)、海量的軟件包……很難不選擇 RT-Thread 進行項目開發(fā)
    的頭像 發(fā)表于 09-19 19:55 ?1114次閱讀

    基于RT-Thread的RoboMaster電控框架(二)

    由于 RT-Thread 穩(wěn)定高效的內(nèi)核,豐富的文檔教程,積極活躍的社區(qū)氛圍,以及設(shè)備驅(qū)動框架、Kconfig、Scons、日志系統(tǒng)、海量的軟件包
    的頭像 發(fā)表于 09-20 15:16 ?1071次閱讀
    主站蜘蛛池模板: 欧美黄色片免费看 | 天天看爽片 | 天天爱添天天爱添天天爱添 | 99一级毛片| 亚洲日本在线观看 | 性猛交╳xxx乱大交 性免费视频 | 国产一级片免费 | 69国产| 国产3p在线播放 | 四虎国产永久免费久久 | 天天爽天天干 | 久久久久女人精品毛片九一 | 国产美女精品久久久久中文 | 欧美一级黄视频 | 视频免费黄色 | 狠狠干激情 | 草伊人| 婷婷在线观看网站 | 免费国产99久久久香蕉 | www.av在线免费观看 | 欧美亚洲一区二区三区在线 | 国内精品久久久久久影院老狼 | wwwxx在线 | 免费人成在线观看网站品爱网日本 | 调教双性学霸美人 | 天天躁日日躁成人字幕aⅴ 天天躁夜夜躁 | 婷婷亚洲综合五月天小说在线 | 视频一区亚洲 | 欧美成人精品一区二区 | 国产综合色精品一区二区三区 | 97久久草草超级碰碰碰 | 中文字幕第7页 | 成人最新午夜免费视频 | 日日夜夜天天久久 | 午夜久久久久久亚洲国产精品 | 男女免费观看视频 | 午夜影院欧美 | 一级特黄aaa大片大全 | 午夜婷婷网 | 午夜性福| 中国一级特黄真人毛片免费看 |