Source Insight配置Cppcheck做静态测试(Windows)

news2024/11/25 22:31:57

1.安装cppcheck

先从cppcheck官方网站下载cppcheck的安装包。

注:
(1)官网地址:https://sourceforge.net/projects/cppcheck
(2)截止2023年8月,官方发布的最新版本是cppcheck-2.11-x64-Setup.msi。

双击安装文件,根据安装向导,一步一步开始安装。

注:本实例中,安装路径是C:\Program Files\Cppcheck

除了安装cppcheck之外,还需要安装python,并且获取到MISRA.txt文本文件。这部分内容不在这里详细说明,假设你已经准备好了这些环境。

请确保Source Insight已经安装。下面开始进入正题。

2.关于配置文件misra.json

从2.88版本开始,Cppcheck支持插件(addon)。

可以通过下面的Cppcheck命令调用插件(addon):
cppcheck --addon=misra.py somefile.c
这将启动所有 Cppcheck 检查,并额外调用所选插件提供的特定检查。

一些插件需要额外的参数。我们可以在misra.json文件中配置插件和参数。

{
    "script": "misra.py",
    "args": [
        "--rule-texts=misra.txt"
    ]
}

然后可以在 Cppcheck 命令行上执行配置:

cppcheck --addon=misra.json somefile.c

默认情况下,Cppcheck将在安装过程中指定的标准路径上搜索插件。你也可以直接设置此路径,例如:
cppcheck --addon=”C:\opt\cppcheck\configurations\my_misra.json” somefile.c
这允许你为不同的项目创建和管理多个配置文件。

第一次使用插件,会遇到很多问题。因为插件的配置文件misra.json很容易出错。
下面是一个可以成功运行的配置文件:

{
   "script": "misra.py",
   "args": [
       "--rule-texts=C:/opt/cppcheck/configurations/misra2012_rules.txt"
   ]
}

注意:"–rule-texts=***"的路径名必须使用左斜线“/”,而且路径名不能有空格!

我们把misra.json和misra2012_rules.txt放在“C:\opt\cppcheck\configurations”目录下。你可根据实际需求决定把它们放在哪里。

实际使用过程中,遇到几个问题。
(1)misra2012_rules.txt文件所在路径中不能有空格。否则cppcheck会找不到它们。例如“C:\Program Files\Cppcheck”存在空格,不满足要求。但是misra.json文件所在的路径可以有空格。
(2)misra.json配置文件中"–rule-texts=***"的路径名必须使用左斜线“/”!如果用右斜线“\”,则会报找不到文件。
(3)cppcheck命令执行时必须使用参数“–enable=all”才能检查到MIRSA违规项,否则检查结果为空白。下面是参数包含“–enable=all”的例子:

cppcheck --enable=all --addon="C:\opt\cppcheck\configurations\my_misra.json" settings.c

3.添加Source Insight的自定义命令

在这里插入图片描述
点击菜单[Tools]->[Custom Commands…],打开“Custom Commands”界面。
在这里插入图片描述
点击右上角的“Add”按钮,弹出“Add New Custom Command”对话框。输入“Cppcheck”后,点击“OK”按钮,返回“Custom Commands”界面。
在这里插入图片描述

“Run:”输入如下命令:
“C:\Program Files\Cppcheck\cppcheck.exe” --platform=win64 --enable=all --addon=“C:\opt\cppcheck\configurations\misra.json” %f
配置Output:选中“Iconic Windows”和“Capture Output”选项。其它不勾选。
配置Control:都不勾选。
配置Source Links in Output:选中“Parse Links in Output”选项。“Patterm Contains:”选中“File, then Line”选项。
其它的保持默认设置。

然后点击右下角的“Keys…”按钮,设置Cppcheck命令快捷键。
在这里插入图片描述
首先,确认“Command:”就是Cppcheck,然后点击“Assign New Key…”按钮,弹出提示对话框中,点击快捷键“alt+2”,之后“Keystokes”列表框中会添加我们按下的快捷键。最后,点击“OK”按钮。

测试:
(1) 打开任何一个文件;
(2) 按下快捷键“alt+2”,等待静态测试完成,即可看到显示的结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/903910.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解锁Spring AOP的神秘面纱

目录 Spring AOP的组成组成部分与常用注解举例理解 Spring AOP的实现添加 Spring AOP 框架⽀持定义切⾯和切点定义通知切点表达式说明 Spring AOP 实现原理JDK动态代理CGLIB动态代理 Spring AOP作为Spring框架的核心模块,为我们提供了一种优雅的方式来处理横切关注点…

Java-抽象类和接口(上)

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类 在打印图形例子中, 我们发现, 父类 Shape 中的 draw 方法好像并没有什么实际工作, 主要的绘制图形都是由 Shape 的各种子类的 draw 方法来完成的. 像这种没有实际工作的方法, 我们可以把它…

OAuth2.0一 Spring Security OAuth2.0

这里主讲OAuth2.0 学习OAuth2前提: 掌握Spring Security Spring Security学习 一 OAuth2.0介绍 OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们…

数据结构<树和二叉树>顺序表存储二叉树实现堆排

✨Blog:🥰不会敲代码的小张:)🥰 🉑推荐专栏:C语言🤪、Cpp😶‍🌫️、数据结构初阶💀 💽座右铭:“記住,每一天都是一個新的開始&#x1…

【音视频原理】图像相关概念 ① ( 像素 | 分辨率 | 位深 )

文章目录 一、图像相关概念1、像素2、分辨率3、位深 一、图像相关概念 图像相关概念 : 像素 : 图片基本单位 ;分辨率 : 图像的像素尺寸 ;位深 : 记录每个像素点颜色时使用的位数 ;帧率 : 一秒钟传输图片的帧数 , 单位 fps , Frame Per Second ;码率 : 单位时间内视频的数据流量…

博弈论 | 斐波那契博弈

斐波那契博弈 博弈论是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论。博弈论是研究互动决策的理论。博弈可以分析自己与对手的利弊关系,从而确立自己在博弈中的优势,因此有不少博弈理论,可以帮助对弈者分析局势,从而采取相应策略,最终达…

系统架构设计专业技能 · 信息安全技术

系列文章目录 系统架构设计专业技能 网络技术(三) 系统架构设计专业技能 系统安全分析与设计(四)【系统架构设计师】 系统架构设计高级技能 软件架构设计(一)【系统架构设计师】 系统架构设计高级技能 …

Maven介绍与配置+IDEA集成Maven+使用Maven命令

目录 一、Maven简介 二、配置环境变量 三、IDEA集成Maven 1.配置本地仓库地址 2.集成Maven 3. pom.xml文件介绍 四、Maven命令 jar包太多、jar包相互依赖、不方便管理、项目编译还需要jar包,Maven工具来帮你! 一、Maven简介 Maven 是 Apache 软…

Python打包可执行文件-cx_Freeze

目录 简介 安装 问题处理 使用 打包 简介 之前有篇文章有使用pyinstaller打包.exe文件,但是没有详细介绍过,这次整理下 python入门-从安装环境配置(Anaconda)到做一个下班打卡提醒.exe小工具_瑶山的博客-CSDN博客 Python程序发布时,通常…

uniapp编写微信小程序和H5遇到的坑总结

uniapp编写微信小程序和H5遇到的坑总结 1、阻止事件冒泡2、二维码生成3、H5跨域配置4、H5时,地址栏上添加版本号5、H5时,tabBar遮挡部分内容6、uniapp使用webview通信6.1、uniapp编写的小程序嵌入h5之间的通信6.1.1、小程序向h5发送消息6.1.2、h5向小程序…

实验二 tftp 服务器环境搭建

tftp 服务器环境搭建 tftp(Trivial File Transfer Protocol)即简单文件传输协议是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69 【实验目的】 掌握 tftp 环境搭…

【2023新教程】树莓派定时自动拍照并上传腾讯云对象存储COS

1 换源 仅适用于Release date: May 3rd 2023、Debian version: 11 (bullseye)这个树莓派OS版本,其他版本不保证有效。 首先使用如下命令,查看自己树莓派的架构。 uname -a结果如下: 如果红圈处显示为aarch64,使用命令sudo na…

Unity C# 引用池 ReferencePool

Unity C# 引用池 ReferencePool 1.目的 对于多次创建的数据使用new 关键字是十分消耗性能的,使用完成后由GC去自动释放,当一个类型的数据频繁创建可以使用引用池进行管理。 2.实现 项目目录 IReference 接口 要放入引用池的数据只需要继承这个接口…

2023.08.20 学习周报

文章目录 摘要文献阅读1.题目2.现有问题3.解决方案4.本文贡献5.方法5.1 利用长短期记忆网络学习时空演化特征5.2 构建用于气象辅助信息编码的堆叠自编码器5.3 使用多任务学习发现全市通用模式5.4 模型 6. 实验6.1 数据集6.2 实验设置6.3 实验结果 7.结论8.展望 大气污染物传输总…

04 - Vue3语法系统进阶 - 全面掌握Vue3特性

目录 01-ref属性在元素和组件上的分别使用02-利用nextTick监听DOM更新后的情况03-自定义指令与自定义全局属性及应用场景04-复用组件功能之Mixin混入05-插件的概念及插件的实现06-transition动画与过渡的实现07-动态组件与keep-alive组件缓存08-异步组件与Suspense一起使用09-跨…

在线SHA256计算哈希(不可逆的加密又称摘要)工具

具体请前往: 在线计算Sha256摘要工具

7.10 SpringBoot实战 全局异常处理

文章目录 前言RestControllerAdvice项目实战最后 前言 在一个项目中,异常处理 是你无法绕过去的话题! 不论你多牛逼,你写的代码都可能会出现异常,有的异常非常容易测试出来,但有的异常却需要在非常极端情况下才会出现…

线性代数的学习和整理7:各种特殊矩阵(草稿-----未完成)

目录 1 单位矩阵 为什么单位矩阵I是 [1,0;0,1]T 而不是[1,1;1,1]T 2 旋转矩阵 3 伸缩矩阵 放大缩小倍数矩阵 4 镜像矩阵 5 剪切矩阵 矩阵 行向量 列向量 方阵 1 单位矩阵 [ 1 0 0 1] 为什么单位矩阵I是 [1,0;0,1]T 而不是[1,1;1,1]T 因为 矩阵 [1,0;0,1] 代表…

netty(一):NIO——处理消息边界

处理消息边界 为什么要处理边界 因为会存在半包和粘包的问题 1.客户端和服务端约定一个固定长度 优点:简单 缺点:可能造成浪费 2.客户端与服务端约定一个固定分割符 *缺点 效率低 3.先发送长度,再发送数据 TLV格式: type…

LeetCode 1162. As Far from Land as Possible【多源BFS】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…