c/c++静态代码检查未使用函数
简介
检查unused的代码没有完美的解决方案,介绍比较多的是代码覆盖率检查工具,不能通过直接分析代码得到,需要代码运行起来。
静态代码检查的方式介绍比较少,这里推荐一种,那就是使用cppcheck工具
代码
test.h
#ifndef __TEST_H__
#define __TEST_H__void Test();
int Func();#endif /*__TEST_H__*/
test.cpp
#include "test.h"void Test()
{
}int Func()
{
}
main.cpp
#include "test.h"void *ThreadFunc(void *arg)
{Test();
}int main(int argc, char **argv)
{return 0;
}
使用
#cppcheck --enable=unusedFunction --force ./
Checking main.cpp …
1/2 files checked 69% done
Checking test.cpp …
2/2 files checked 100% done
[test.cpp:7]: (style) The function ‘Func’ is never used.
[main.cpp:3]: (style) The function ‘ThreadFunc’ is never used.
这里代码比较简单,cppcheck可以精准地查找到未使用的函数,如果是大的工程,会有误报,
如果想进一步筛查,可以写个shell脚本来处理
筛查
find_unused.sh
#!/usr/bin/shif [[ ! $# -eq 2 ]]; thenecho -e "usage $0 [unused.txt src_dir]"echo -e "查找未使用的函数,比如:$0 unusedTxt cutedevice/src"exit -1
fiunusedTxt=$1
srcDir=$2if [[ ! -f $unusedTxt ]]; thenecho -e "$unusedTxt not exists"exhit -1
fiif [[ ! -d $srcDir ]]; thenecho -e "$srcDir not exists"exhit -1
fitotal=0
for thenFunction in `cat $1 | cut -d "'" -f 2`;
docount=`find $srcDir -name "*.cpp" -o -name "*.c" | xargs grep $thenFunction | wc -l`if [[ $count -le 1 ]]; thenecho "$thenFunction"total=$(expr $total + 1)fi
doneecho "unused total:$total"
第一步使用cppcheck粗确地打印未调用的函数
#cppcheck --enable=style,unusedFunction --force ./src
得到类似[src/base/utility.cpp:486]: (style) The function ‘Xor’ is never used.
将其写到unused.txt中
然后调用此脚本进行筛选, ./find_unused.sh ./unused.txt ./src
这一步也不是很精确, 会导致一些未用的函数被忽略掉,可以再进一步人工排查后确定未调用的函数。
作者:帅得不敢出门 转载请注明出处
c/c++静态代码检查未使用函数相关推荐
- CppCheck静态代码检查配置(命令行方式或在VS中使用)
目录 CppCheck静态代码检查 1.1 安装cppcheck 1.2 直接使用Cppcheck 1.2.1 命令行方式 1.2.2 UI方式 1.3 在VS2017中使用 1.3.1 在VS201 ...
- DevOps系列之 —— 持续开发与集成(六)静态代码检查
DevOps系列之 -- DevOps概览(一)软件产业和交付模式发展趋势 DevOps系列之 -- DevOps概览(二)新型软件技术及交付模式 DevOps系列之 -- DevOps概览(三)De ...
- golang静态代码检查配置与常见格式异常
go环境配置 下载go1.13版本,通过命令解压到/usr/local目录下,并设置环境变量: sudo tar -zxvf go1.13.9.linux-amd64.tar.gz -C /usr/l ...
- Python静态代码检查工具Flake8
简介 Flake8 是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强.Flake8是对 ...
- cppcheck java_linux-cppcheck静态代码检查.md
简介 cppcheck是一个C/C++的静态代码检查工具.它不仅可以检查代码中的语法错误,还可以检查出编译器检查不出来的缺陷,从而辅助提升代码质量. cppcheck能够发现很多错误,但不能发现所有的 ...
- linux静态代码检查工具,linux下splint检测C语言代码质量
在linux下并没有pclint,可以使用splint代替.splint使用一.splint介绍splint是一个静态检查C语言程序安全弱点和编写错误的工具.splint会进行多种常规检查,包括未使 ...
- jenkins+findbugs+checkstyle+PMD静态代码检查(二)
可以根据自己的需求选中对应的插件进行配置(不一定非要同时配置三个插件) jenkins:持续集成的工具 fundbugs:检测代码静态错误的插件 例如:定义了没有用到的对象,string类型的比较使 ...
- 静态代码检查工具简介
静态代码检查工具简介 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷.传统的代码复审.同行评审,通过人工方式来检查缺陷仍然是一件耗时耗力的事情.Java 静态代码分 ...
- 静态代码检查工具-PMD
静态代码检查工具-PMD 分类: 网络安全/ 工具使用/ 文章 提高代码的质量,除了要提高逻辑上的控制以及业务流程的理解外,代码本身也存在提高的空间,例如一些潜在的问题可以很早的就避免.类似于编码规范 ...
最新文章
- Python集成网络诊断小工具(含有ping,tracert,tcping等小工具)
- 浅淡HTML5移动Web开发
- 深度学习模型大合集:GitHub趋势榜第一,两天斩获2000星
- 陈皓谈程序员的升级:职业规划就像软件工程
- 在阿里云 ECS 上使用 SAP Spartacus
- hdu java_HDU Java8 集锦
- idea抽取重复方法快捷键_使用 IDEA 几分钟就重构了同事800 行quot;又臭又长quot; 的类!真香!...
- McObject为风河航空电子平台提供实时数据管理能力
- 数据结构期末考试试题及答案
- nmap超快高效扫描端口
- 智慧物业小程序_物业小程序 物业管理小程序 微信物业小程序
- Littlefs移植,FLASH用的是W25Q32
- (转)前端开发面试题搜集大全–刷完能进bat
- android国际化语言编码对照表
- 【转载】走心撩到电音妹:所谓的“迷幻电子”是什么?
- Windows磁盘管理(Raid)
- 根据卫星的方位角和仰角画卫星星空图(QT实现)
- 玩聚SD:感谢ECVIP、盗盗、网贝、和菜头的博客推荐
- hadoop之常见命令
- 关于某些空白字符,(实用篇)