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

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.mzph.cn/news/46833.shtml

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

相关文章

子集-回溯方法

class Solution {//题解思路//LinkedList<Integer> path new LinkedList<>(); List<List<Integer>> results new ArrayList<>();public List<List<Integer>> subsets(int[] nums) {//主方法中调用方法同时传入指定的参数初始值bac…

【数据挖掘】使用 Python 分析公共数据【01/10】

一、说明 本文讨论了如何使用 Python 使用 Pandas 库分析官方 COVID-19 病例数据。您将看到如何从实际数据集中收集见解&#xff0c;发现乍一看可能不那么明显的信息。特别是&#xff0c;本文中提供的示例说明了如何获取有关疾病在不同国家/地区传播速度的信息。 二、准备您的…

【计算机视觉|生成对抗】改进的生成对抗网络(GANs)训练技术

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Improved Techniques for Training GANs 链接&#xff1a;[1606.03498v1] Improved Techniques for Training GANs (arxiv.org) 摘要 本文介绍了一系列应用于生成对抗网络&#xff08;G…

ICCV23 | Ada3D:利用动态推理挖掘3D感知任务中数据冗余性

​ 论文地址&#xff1a;https://arxiv.org/abs/2307.08209 项目主页&#xff1a;https://a-suozhang.xyz/ada3d.github.io/ 01. 背景与动因 3D检测(3D Detection)任务是自动驾驶任务中的重要任务。由于自动驾驶任务的安全性至关重要(safety-critic)&#xff0c;对感知算法的延…

HCIP STP总结

网桥的4个选举 根网桥&#xff1a; 有且仅有一台&#xff0c;且由BPDU中的桥ID来决定 桥ID 网桥优先级&#xff08;0-65535公有&#xff09; 默认32768 MAC地址&#xff08;只有存在svi接口…

Pinia基础教程

Pinia wiki Pinia 起始于 2019 年 11 月左右的一次实验&#xff0c;其目的是设计一个拥有组合式 API 的 Vue 状态管理库。从那时起&#xff0c;我们就倾向于同时支持 Vue 2 和 Vue 3&#xff0c;并且不强制要求开发者使用组合式 API&#xff0c;我们的初心至今没有改变。除了安…

数据结构-->栈

&#x1f495;休对故人思故国&#xff0c;且将新火试新茶&#xff0c;诗酒趁年华&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;详解链表OJ题 前言&#xff1a; 前面已经学习过顺序表&#xff0c;链表。他们都是线性表&#xff0c;今天要学习的栈也是一种线…

【C++】C 语言 和 C++ 语言中 const 关键字分析 ② ( const 常量分配内存时机 | const 常量在编译阶段分配内存 )

文章目录 一、const 常量内存分配时机二、使用如下代码验证 const 常量内存分配时机三、分析验证结果 - const 常量在编译阶段分配内存 一、const 常量内存分配时机 在上一篇博客中 , 讲到了获取 const 常量的地址 , 代码如下 : // 定义常量// 该常量定义在了 符号表 中// 符号…

C++--深度理解智能指针

PS:智能指针简单应用看这里 http://t.csdn.cn/qN7IK 1.智能指针的介绍 在C中&#xff0c;智能指针有三个版本&#xff0c;分别为&#xff1a; auto_ptr unique_ptr shared_ptr 这三个版本的智能指针中&#xff0c;shared_ptr最为完善&#xff0c;auto_ptr基本上没有太大用…

leetcode 213. 打家劫舍 II

2023.8.20 本题是 打家劫舍 的进阶版&#xff0c;房屋之间形成一个环了&#xff0c;也就是第一个房屋和最后一个房屋不能一起偷了。那么能偷的情况分为下列三种&#xff1a; 不考虑偷首房间。不考虑偷尾房间。不考虑偷首尾房间。 第三种情况包含于第一和第二种情况了&#xff…

【vue3】对axios进行封装,方便更改路由并且可以改成局域网ip访问(附代码)

对axios封装是在main.js里面进行封装&#xff0c;因为main.js是一个vue项目的入口 步骤&#xff1a; 在1处创建一个axios实例为http&#xff0c;baseURL是基础地址&#xff08;根据自己的需求写&#xff09;&#xff0c;写了这个在vue界面调用后端接口时只用在post请求处写路由…

Docker实战:Docker常用命令

一、镜像相关 1.1、查看镜像 docker images1.2、拉取镜像 docker pull nginx1.3、保存镜像 docker save -o nginx.tar nginx:latest1.4、移除镜像 docker rmi -f nginx:latest1.5、导入镜像 docker load -i nginx.tar二、容器相关 2.1、启动容器 docker run --name red…

每天一道leetcode:934. 最短的桥(图论中等广度优先遍历)

今日份题目&#xff1a; 给你一个大小为 n x n 的二元矩阵 grid &#xff0c;其中 1 表示陆地&#xff0c;0 表示水域。 岛 是由四面相连的 1 形成的一个最大组&#xff0c;即不会与非组内的任何其他 1 相连。grid 中 恰好存在两座岛 。 你可以将任意数量的 0 变为 1 &#…

基于X86六轮差速移动机器人运动控制器设计与实现(二)规划控制算法

带输入约束的 MPC 路径跟踪控制 MPC 算法是一种基于控制对象模型的控制方法&#xff0c;其优势在于在控制中考虑了 系统的多种物理约束&#xff0c;同时基于模型与当前机器人的反馈信息预估出未来机器人 位姿信息的处理方法可以解决控制迟滞的问题。 4.1 MPC 路径跟踪控…

iOS 17 正式版预计 9 月中下旬发布,部分新功能延后推出

苹果公司预计将在 9 月中下旬推出 iOS 17 正式版&#xff0c;iPhone XS 及更新的机型可免费更新。这次更新包含了许多新功能&#xff0c;但是根据苹果公司的网站显示&#xff0c;并不是所有的功能都会立即可用。苹果表示有一些功能“将在今年晚些时候推出”&#xff0c;比如&am…

mysql(3)

分库分表 分库&#xff1a;将数据库中的数据分散到不同数据库上&#xff0c;可以垂直分库和水平分库。 1.垂直分库&#xff1a;把单一的数据按照业务进行划分&#xff0c;不同的业务使用不同的数据库&#xff0c;进而将一个数据库的压力分散到多个数据库。 2.水平分库&#…

接口自动化yaml文件读取与写入

前言 在走进yaml文件之前大家应该都很想知道他是用来干嘛的&#xff1f; 是的是的&#xff0c;他是用来做接口自动化测试的。 我们一起来学习他吧&#xff01;——&#xff08;一定要收藏带走哦❤&#xff09; 1、yaml文件有什么作用呢&#xff1f; ①可作为配置文件使用—…

WMS仓库管理系统选择指南:如何确保您的仓库提高效率?

如何选择WMS仓库管理系统&#xff1f;仓库管理主要包括以下四个方面&#xff1a; 1.商品出入库管理 2.库存调拨 3.库存盘点 4.虚拟库存/实际库存管理 为了更好地管理仓库&#xff0c;我们需要确保基本的硬件设施得以满足&#xff0c;例如划分存储区域、使用货架以及进行员工培训…

使用Mybatis Plus进行DAO层开发

一、特性 Mybatis应该大家现在都知道&#xff0c;而且在项目中都在使用&#xff0c;因为这块ORM框架让大家能专心业务SQL的编写&#xff0c;数据库的连接&#xff0c;连接池的使用都不用关心&#xff0c;极大的提高了生产效率。 今天要给大家介绍的另外一款ORM框架&#xff0…

区间预测 | MATLAB实现QRBiGRU双向门控循环单元分位数回归时间序列区间预测

区间预测 | MATLAB实现QRBiGRU双向门控循环单元分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRBiGRU双向门控循环单元分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现QRBiGRU双向门控循环单元分位数回归时间序列…