amobbs.com 阿莫电子论坛

 找回密码
 注册
密码必须由大写、小写、数字组成,三者缺一不可
搜索
bottom↓
回复: 29

大家用那个C语言检查工具?求推荐

[复制链接]
(1464976)

出25入0汤圆

发表于 2020-6-29 22:41:20 | 显示全部楼层 |阅读模式
看到这个贴里,大家讨论警告问题,确实应该重视,大家在用哪个C语言检查工具呀,推荐下呗

if(n=3){   }能引起死循环?
https://www.amobbs.com/thread-5735579-1-1.html
(出处: amobbs.com 阿莫电子论坛)
(1464799)

出25入0汤圆

 楼主| 发表于 2020-6-29 22:44:17 | 显示全部楼层
搬运一个:

业界通用代码检查工具,介绍如下。

Valgrind :功能很多,常用于检查内存泄漏,包含几个常见工具如下。
memcheck --> 这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。
callgrind --> 它主要用来检查程序中函数调用过程中出现的问题。
cachegrind --> 它主要用来检查程序中缓存使用出现的问题。
helgrind --> 它主要用来检查多线程程序中出现的竞争问题。
massif --> 它主要用来检查程序中堆栈使用中出现的问题。
extension --> 可以利用core提供的功能,自己编写特定的内存调试工具

PCLint :是GIMPEL SOFTWARE公司开发的C/C++软件代码静态分析工具,它的全称是PC-Lint/FlexeLint for C/C++ 。PC-Lint不仅能够对程序进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针以及冗余的代码,还能够有效地帮你提出许多程序在空间利用、运行效率上的改进点。

Coverity: Coverity公司提供用于检测软件缺陷和安全隐患的静态源代码分析解决方案,在内存操作、无效代码等方面有突出表现。

Klocwork: 软件是Klocwork公司基于专利技术分析引擎开发的,它通过静态分析的方法,自动检测代码内存泄漏、空指针引用、缓冲区溢出、数组越界等运行错误。

Fortify: Fortify Source Code Analyzer ,Fortify SCA 是一组软件安全分析器,能够在多种编程语言范围中搜索那些违背安全方面的代码规则和指导标准的问题,Fortify更偏重于代码安全性检查。

Fossid : 开源代码扫描,可以帮助全面、准确、高效的发现和避免开源风险,安全、合规的使用开源软件。

Simian : (Similarity Analyser) 是一种用来分析文件内容重复率的工具(计算重复代码行),它可以支持 Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy等语言,甚至纯文本中的重复率也可以分析。

Sourcemonitor ;一个用来静态分析代码的开源小工具,它能够返回代码的复杂性度量值,例如圈复杂度,函数深度。
————————————————
版权声明:本文为CSDN博主「kinbo88」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kinbo88/article/details/88577284
(1464743)

出25入0汤圆

 楼主| 发表于 2020-6-29 22:45:13 | 显示全部楼层
再搬运:
valgrind:https://www.cnblogs.com/AndyStudy/p/6409287.html
C/C++静态代码检查工具对比分析:http://qa.blog.163.com/blog/static/190147002201611147530522/
C++代码质量扫描主流工具深度比较:https://blog.csdn.net/wetest_tencent/article/details/51516347
PC-Lint是一款C/C++软件代码静态分析工具,不仅可以检查一般的语法错误,还可以检查潜在的错误,比如数组访问越界、内存泄漏、使用未初始化变量、使用空指针等。在单元测试前使用PC-Lint来检查代码,可以提前发现程序中的潜在的错误,提高代码的质量。

Link:https://blog.csdn.net/scucj/article/details/4409735

Valgrind is an instrumentation framework for building dynamic analysis tools.

Valgrind官网: http://valgrind.org/docs/manual/manual-intro.html
Valgrind交叉编译:https://blog.csdn.net/longbei9029/article/details/78626004
Valgrind理解:https://www.ibm.com/developerwor ... valgrind/index.html
————————————————
版权声明:本文为CSDN博主「伶优」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ilufam1314/article/details/81029900


不懂也没用过,请大家指教!
(1430261)

出0入0汤圆

发表于 2020-6-30 08:19:55 | 显示全部楼层
Valgrind 听说过自己没有用过
(1428521)

出0入0汤圆

发表于 2020-6-30 08:48:55 | 显示全部楼层
clang-tidy
(1427463)

出0入0汤圆

发表于 2020-6-30 09:06:33 | 显示全部楼层
tscancode,腾讯出的
(1426443)

出0入4汤圆

发表于 2020-6-30 09:23:33 | 显示全部楼层
使用LLVM编译工具链的可以考虑:

scan-build is a static analyzer included as part of the LLVM toolchain. It works by intercepting calls to gcc or clang and making a static analysis pass.
scan-build works by overriding the CC and CXX used by CMake and Make.
(1423831)

出0入0汤圆

发表于 2020-6-30 10:07:05 | 显示全部楼层
没有用过这些工具,不知道哪些工具能分析linux内核代码,能的就有兴趣用:)
(1422965)

出0入0汤圆

发表于 2020-6-30 10:21:31 | 显示全部楼层
以前做日本项目的时候,代码都需要做静态代码分析,客户拿到我们release的代码后就会用他们的工具跑一遍,跑完了后再把结果反馈给我们,然后我们再一行一行去对应。有时候确实可以找到一些潜藏很深的Bug。
(1421099)

出25入0汤圆

 楼主| 发表于 2020-6-30 10:52:37 | 显示全部楼层
shiva_shiva 发表于 2020-6-30 09:06
tscancode,腾讯出的

感谢提高信息,刚才下载后,扫码,确实发现了空指针和没有初始化的变量。

github下载很慢,我上传下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(1419548)

出70入10汤圆

发表于 2020-6-30 11:18:28 | 显示全部楼层
用过 PCLint  很好用。
(1407078)

出0入0汤圆

发表于 2020-6-30 14:46:18 | 显示全部楼层
用过pclint,一堆的警告。
(1399754)

出0入0汤圆

发表于 2020-6-30 16:48:22 | 显示全部楼层
lhj200304 发表于 2020-6-30 11:18
用过 PCLint  很好用。

这个好像还是需要破解吧
(1399316)

出70入10汤圆

发表于 2020-6-30 16:55:40 | 显示全部楼层
我想传到论坛上来,可是文件是存在的,但是附件上传的时候一直找不到,很奇怪的
(1398750)

出20入28汤圆

发表于 2020-6-30 17:05:06 | 显示全部楼层
蛋定 发表于 2020-6-30 10:52
感谢提高信息,刚才下载后,扫码,确实发现了空指针和没有初始化的变量。

github下载很慢,我上传下:

我下载安装后,这不能检查C语言的吧
(1398463)

出0入0汤圆

发表于 2020-6-30 17:09:53 来自手机 | 显示全部楼层
人工走读算不算?
(1397330)

出25入0汤圆

 楼主| 发表于 2020-6-30 17:28:46 | 显示全部楼层
68336016 发表于 2020-6-30 17:05
我下载安装后,这不能检查C语言的吧

能检查,很好用的,你再研究下!
(1396218)

出0入0汤圆

发表于 2020-6-30 17:47:18 来自手机 | 显示全部楼层
我想问下,编译的时候不是会检查错误吗?为啥还有这种工具出现
(1396182)

出0入0汤圆

发表于 2020-6-30 17:47:54 | 显示全部楼层
蛋定 发表于 2020-6-30 17:28
能检查,很好用的,你再研究下!

规则少了些,但是入门很好用
(1392771)

出0入0汤圆

发表于 2020-6-30 18:44:45 来自手机 | 显示全部楼层
12tangyang12 发表于 2020-6-30 17:47
我想问下,编译的时候不是会检查错误吗?为啥还有这种工具出现

错误是错误,这里说的是隐藏问题。
(1392128)

出25入0汤圆

 楼主| 发表于 2020-6-30 18:55:28 | 显示全部楼层
gsq19920418 发表于 2020-6-30 17:47
规则少了些,但是入门很好用

为何不是中文错误提示呢,怎么看到有人截图的是中文呀,有点郁闷
(1383012)

出0入0汤圆

发表于 2020-6-30 21:27:24 | 显示全部楼层
IAR 自带代码检查功能
(1340490)

出0入0汤圆

发表于 2020-7-1 09:16:06 | 显示全部楼层
蛋定 发表于 2020-6-30 18:55
为何不是中文错误提示呢,怎么看到有人截图的是中文呀,有点郁闷

查看规则时是中文
(1335786)

出0入0汤圆

发表于 2020-7-1 10:34:30 | 显示全部楼层
CPP check 还是比较好用的
(1332808)

出0入0汤圆

发表于 2020-7-1 11:24:08 | 显示全部楼层

扫描完总是出现这个,看不到检查结果。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(1322956)

出0入0汤圆

发表于 2020-7-1 14:08:20 | 显示全部楼层
本帖最后由 yunqing_abc 于 2020-7-1 14:10 编辑
wochai 发表于 2020-7-1 11:24
扫描完总是出现这个,看不到检查结果。


我的也是这个情况,不知道是不是哪里设置的不对。

又仔细看了下设置,只支持C++  C# 和Lua,没说支持C。不知道是不是这个原因
(1321582)

出25入0汤圆

 楼主| 发表于 2020-7-1 14:31:14 | 显示全部楼层
wochai 发表于 2020-7-1 11:24
扫描完总是出现这个,看不到检查结果。

这表示你的代码没有警告。

不过默认没有开有太多的提示,你全部打开,再扫描就多了,很多是误告警。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(1318655)

出0入0汤圆

发表于 2020-7-1 15:20:01 | 显示全部楼层
蛋定 发表于 2020-7-1 14:31
这表示你的代码没有警告。

不过默认没有开有太多的提示,你全部打开,再扫描就多了,很多是误告警。

软件不知道是不是对C支持的不好,在单片机程序中制造了一些明显的错误,没有检查出来。

我的C#程序检查出几个问题,其中一个严重级,还是有作用的。
(1309642)

出0入0汤圆

发表于 2020-7-1 17:50:14 | 显示全部楼层
shiva_shiva 发表于 2020-6-30 09:06
tscancode,腾讯出的

谢谢,试用了一下,扫出一个问题,是真的错的,没有警告,功能测试没测出来
改了再跑功能测试看下
(1298280)

出0入0汤圆

发表于 2020-7-1 20:59:36 | 显示全部楼层
wochai 发表于 2020-7-1 15:20
软件不知道是不是对C支持的不好,在单片机程序中制造了一些明显的错误,没有检查出来。

我的C#程序检查 ...

看介绍不支持C
回帖提示: 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-7-16 21:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表