简介

检查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++静态代码检查未使用函数相关推荐

  1. CppCheck静态代码检查配置(命令行方式或在VS中使用)

    目录 CppCheck静态代码检查 1.1 安装cppcheck 1.2 直接使用Cppcheck 1.2.1 命令行方式 1.2.2 UI方式 1.3 在VS2017中使用 1.3.1 在VS201 ...

  2. DevOps系列之 —— 持续开发与集成(六)静态代码检查

    DevOps系列之 -- DevOps概览(一)软件产业和交付模式发展趋势 DevOps系列之 -- DevOps概览(二)新型软件技术及交付模式 DevOps系列之 -- DevOps概览(三)De ...

  3. golang静态代码检查配置与常见格式异常

    go环境配置 下载go1.13版本,通过命令解压到/usr/local目录下,并设置环境变量: sudo tar -zxvf go1.13.9.linux-amd64.tar.gz -C /usr/l ...

  4. Python静态代码检查工具Flake8

    简介 Flake8 是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强.Flake8是对 ...

  5. cppcheck java_linux-cppcheck静态代码检查.md

    简介 cppcheck是一个C/C++的静态代码检查工具.它不仅可以检查代码中的语法错误,还可以检查出编译器检查不出来的缺陷,从而辅助提升代码质量. cppcheck能够发现很多错误,但不能发现所有的 ...

  6. linux静态代码检查工具,linux下splint检测C语言代码质量

    在linux下并没有pclint,可以使用splint代替.splint使用一.splint介绍splint是一个静态检查C语言程序安全弱点和编写错误的工具.splint会进行多种常规检查,包括未使 ...

  7. jenkins+findbugs+checkstyle+PMD静态代码检查(二)

    可以根据自己的需求选中对应的插件进行配置(不一定非要同时配置三个插件) jenkins:持续集成的工具 fundbugs:检测代码静态错误的插件  例如:定义了没有用到的对象,string类型的比较使 ...

  8. 静态代码检查工具简介

    静态代码检查工具简介 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷.传统的代码复审.同行评审,通过人工方式来检查缺陷仍然是一件耗时耗力的事情.Java 静态代码分 ...

  9. 静态代码检查工具-PMD

    静态代码检查工具-PMD 分类: 网络安全/ 工具使用/ 文章 提高代码的质量,除了要提高逻辑上的控制以及业务流程的理解外,代码本身也存在提高的空间,例如一些潜在的问题可以很早的就避免.类似于编码规范 ...

最新文章

  1. Python集成网络诊断小工具(含有ping,tracert,tcping等小工具)
  2. 浅淡HTML5移动Web开发
  3. 深度学习模型大合集:GitHub趋势榜第一,两天斩获2000星
  4. 陈皓谈程序员的升级:职业规划就像软件工程
  5. 在阿里云 ECS 上使用 SAP Spartacus
  6. hdu java_HDU Java8 集锦
  7. idea抽取重复方法快捷键_使用 IDEA 几分钟就重构了同事800 行quot;又臭又长quot; 的类!真香!...
  8. McObject为风河航空电子平台提供实时数据管理能力
  9. 数据结构期末考试试题及答案
  10. nmap超快高效扫描端口
  11. 智慧物业小程序_物业小程序 物业管理小程序 微信物业小程序
  12. Littlefs移植,FLASH用的是W25Q32
  13. (转)前端开发面试题搜集大全–刷完能进bat
  14. android国际化语言编码对照表
  15. 【转载】走心撩到电音妹:所谓的“迷幻电子”是什么?
  16. Windows磁盘管理(Raid)
  17. 根据卫星的方位角和仰角画卫星星空图(QT实现)
  18. 玩聚SD:感谢ECVIP、盗盗、网贝、和菜头的博客推荐
  19. hadoop之常见命令
  20. 关于某些空白字符,(实用篇)

热门文章

  1. c#获取计算机全名的方法
  2. 编写函数求字符串的长度
  3. keyshot摄像机渲染打光技巧
  4. 直播 | 初探云原生应用管理之:聊聊 Tekton 项目
  5. 高赞 GitHub 项目盘点:抖音团队力作
  6. 【linux】云服务器的密钥登陆与密码登录相关注意事项
  7. 中国服务机器人产业发展,需要解决哪些痛点?
  8. FZU Problem 2227 邮票
  9. 电磁兼容试验项目之辐射发射(三)
  10. 融创向新乐视提供17.9亿 孙宏斌解局对乐视动作频频