IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> cppCheck 结合 git 的检测脚本(测试阶段) -> 正文阅读

[开发工具]cppCheck 结合 git 的检测脚本(测试阶段)

提前声明: 一时的突发奇想,我知道也许我想的事早以有人实现,欢迎大佬来斧正我,接收大家的指点。如果真的有小伙伴用了,请将您的想法和发现的bug反馈给我,我将不胜感激

????????

????????使用cppCheck的原因是因为免费,所以就用这个了,最近感觉自己写的代码总会被提出一些错误,所以想用cppCheck工具来辅助我提升代码质量(最好的还是自己时刻谨记代码规范)。

? ? ? ? 了解到cppCheck可以检测项目也可以只检测一个cpp文件,其实我还是偏向后者,我一次提交的代码最多就涉及到五六个cpp文件,实在是犯不上检测整个工程,况且还有好多祖传代码,有提示我也不敢动啊,所以我觉得把自己改动的文件改改就行了,争取不给组织制造麻烦。其实公司的gitLib上也有代码规范检测设置,不过比较慢,而且慢慢的都如同虚设了。

? ? ? ? 下面就是基于shell写的一个小脚本,在Windows下安装一个git就能用。怎么用呢?你写完代码了,感觉OK了,要提交了(commot),你就打开git bash界面执行一下这个脚本,至于这个脚本放到 .git 目录下就行了。

? ? ? ? 我觉得还是有必要说一下我的思路,我就是让cppCheck检测我改过的cpp文件,其他我先不管,其实手动的也可以,但是我懒啊,能自动化就自动化。脚本中先执行一个 git status,就知道新增加的文件和修改的文件,然后用shell筛选一下,得到我想要的cpp文件,接着命令行调用cppCheck,将检测结果文件输出到一个目录下,一个cpp文件对应一个txt。然后就自己看看那里需要改改。就是这么一个简单的思路,似乎最难的就是文本处理了,哈哈哈哈哈。shell也没用过,现学现卖,起码实现了自己想要的功能。

#!/bin/bash

echo "****Start checking the cpp file to submit****"

rm -rf cppCheckFolder  #删除check结果目录
mkdir cppCheckFolder   #此脚本生成的文件都会存放到此目录中
git status > ./cppCheckFolder/1.txt #git status 的结果重定向到 1.txt 文件中

checkfilename="-check.txt" #cppCheck 分析文件后缀
checkfilefolder="./cppCheckFolder/"  
statusfile="${checkfilefolder}1.txt" # git status 输出文件路径

newfile="*new file"  #  * 是通配符的意思
modfile="*modified"  #  * 是通配符的意思

row=$(wc -l ${statusfile} | cut -d " " -f 1)

for((i=1; i<=row; i++))  #for((i=1; i<=${row}; i++)) 原来使用的for循环在工作机上报错
do
    rowcontent=$( sed -n ${i}p ${statusfile} | cut  -d ":" -f 1)  #获取是不是新增文件或者修改文件
    if [[ ${rowcontent} == ${newfile}  ||  ${rowcontent} == ${modfile} ]]  #这里是模糊比较因为${rowcontent}前面有空格
    #这个if判断 是否是 新增文件或者修改文件,如果是则进入到if中
        then
            filesuffix=$( sed -n ${i}p ${statusfile} | cut  -d "." -f 2)  #获取 新增文件或者修改文件的后缀名
            rowcontent=$( sed -n ${i}p ${statusfile} | cut  -d ":" -f 2)  #获取 新增文件或者修改文件的文件名(带路径)
            if [[ ${filesuffix} == cpp ]]
            #这个if判断的是 新增加或者修改文件是不是.cpp文件,如果是则进入if进行检测
                then
                 resfile=$(echo ${rowcontent} | cut  -d "." -f 1)         #获取 文件名不带后缀名带路径
				 resfile=$(echo ${resfile} | awk -F '/' '{print $NF}')    #去除路径 仅留下文件名
                 resfile=${checkfilefolder}${resfile}${checkfilename}     #拼接字符串 得出保存结果的文件名(对应着check的cpp)
                 cppcheck --enable=all --inconclusive ${rowcontent} --output-file=${resfile}   #调用 cppCheck 检测
                 echo "@@@ find a new or mod file  ${rowcontent}"
            fi
    fi
done

echo "****The file to be submitted has been checked****" 
echo "****Please check the check result of the corresponding file < XX check. TXT > ****"

使用注意事项

1.如果工程下不同的目录中有相同的文件名的文件,检测结果会被覆盖

2.如果你的工程被某些工具加密了,cppCheck检测会报错

3.记得cppCheck设置环境变量

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:21:26  更:2021-09-06 11:22:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/23 0:06:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计