


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在RT-Thread的scons基础上使用clang-tidy做静态分析测试代码先写个简单的代码main.c#include
#include
#include
intmain(intargc,char*argv[])
{
char*tmp=(char*)malloc(argc);
if(tmp)
{
strncpy(tmp,argv[0],argc);
printf("%s",tmp);
if(argc>2)
{
free(tmp);
}
}
printf("helloworld!n");
return0;
}
使用clang-tidy分析一下aptinstall-yclang-tidyclang-tidymain.cErrorwhiletryingtoloadacompilationdatabase:
Couldnotauto-detectcompilationdatabaseforfile"main.c"
Nocompilationdatabasefoundin/work/analyzeroranyparentdirectory
fixed-compilation-database:Errorwhileopeningfixeddatabase:Nosuchfileordirectory
json-compilation-database:ErrorwhileopeningJSONdatabase:Nosuchfileordirectory
Runningwithoutflags.
2warningsgenerated.
/work/analyzer/main.c:12:3:warning:Calltofunction'strncpy'isinsecureasitdoesnotprovidesecuritychecksintroducedintheC11standard.Replacewithanalogousfunctionsthatsupportlengthargumentsorprovidesboundarycheckssuchas'strncpy_s'incaseofC11[clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
strncpy(tmp,argv[0],argc);
^~~~~~~
/work/analyzer/main.c:12:3:note:Calltofunction'strncpy'isinsecureasitdoesnotprovidesecuritychecksintroducedintheC11standard.Replacewithanalogousfunctionsthatsupportlengthargumentsorprovidesboundarycheckssuchas'strncpy_s'incaseofC11
strncpy(tmp,argv[0],argc);
^~~~~~~
/work/analyzer/main.c:21:2:warning:Potentialleakofmemorypointedtoby'tmp'[clang-analyzer-unix.Malloc]
printf("helloworld!n");
^
/work/analyzer/main.c:8:22:note:Memoryisallocated
char*tmp=(char*)malloc(argc);
^~~~~~~~~~~~
/work/analyzer/main.c:10:5:note:Assuming'tmp'isnon-null
if(tmp)
^~~
/work/analyzer/main.c:10:2:note:Takingtruebranch
if(tmp)
^
/work/analyzer/main.c:15:6:note:Assuming'argc'is<=2
if(argc>2)
^~~~~~~~
/work/analyzer/main.c:15:3:note:Takingfalsebranch
if(argc>2)
^
/work/analyzer/main.c:21:2:note:Potentialleakofmemorypointedtoby'tmp'
printf("helloworld!n");
^
compile_commands.json还是有点用的,但我们RT-Thread项目中代码那么多,一个一个输入太麻烦了。而且我们代码多是arm和gcc的,而开发机多是x86,clang默认参数也分析不了。刚才分析结果第1行就有提示,没有找到compilationdatabase,其实scons就可以生成需要比较新的版本python3-mpipinstallscons
python3-mSCons-v
SConsbyStevenKnightetal.:
SCons:v4.0.1.c289977f8b34786ab6c334311e232886da7e8df1,2020-07-1701:50:03,bybdbaddogonProDog2020
SConspath:['/usr/lib/python3/dist-packages/SCons']
Copyright(c)2001-2020TheSConsFoundation
然后更新下Scons脚本,让生成compile_commands.jsongitdiffSConstruct+env.Tool('compilation_db')
+envpilationDatabase()makeabuildingDoBuilding(TARGET,objs)
run-clang-tidy
然后使用run-clang-tidy就可以自动分析所有的源代码了。输出html生成的结果是文本,查看起来还是比较
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 众筹购买合同范本
- 免招标合同范本
- 买房赠与车库合同范本
- 冷冻物品购销合同范本
- 2025届中国电建集团重庆工程有限公司秋季招聘笔试参考题库附带答案详解
- 交流合同范本
- 义诊合作合同范本
- 兽医雇佣合同范本
- 创建服务合同范本
- 三方企业合资经营合同范本
- 2025年春新人教PEP版英语三年级下册全册教学课件
- 体育老师篮球说课
- 化学-江苏省苏州市2024-2025学年2025届高三第一学期学业期末质量阳光指标调研卷试题和答案
- 浙江省金华市义乌市2024年中考语文二模试卷含答案
- GB/T 45015-2024钛石膏综合利用技术规范
- 2025-2025学年度第二学期仁爱版七年级英语下册教学计划
- 人教版高考生物一轮复习:选择性必修1~3考点复习提纲汇编
- 广东省广州普通高中2025届高三一诊考试数学试卷含解析
- 车站信号自动控制(第二版) 课件 -2-室外设备接口电路
- 国开电大、普通本科、成考毕业论文-《电子商务对传统零售业的影响及其对策》(电子商务专业)
- 未来畜牧养殖业人才需求分析与发展策略-洞察分析
评论
0/150
提交评论