阳江[切换]
免费发布信息
您当前的位置: 阳江百修网> 阳江工控产品维修>阳江数控系统维修> > 数控机床解锁数控面板解锁数控CNC解锁

数控机床解锁数控面板解锁数控CNC解锁

 数控机床解锁数控面板解锁数控CNC解锁
服务区域
阳江市-阳东县
服务范围
数控机床
发布日期
2023-04-22 14:33:10
标签

温馨提示:此页面服务由第三方为您提供,交易前请仔细核对商家真实资质,勿信夸张宣传和承诺,勿轻易相信预付定金、汇款等交易方式; 此页面所发布文字及图片均由网民自行发布,如有侵权请联系发布者删除。

产品介绍

数控机床解锁数控面板解锁数控CNC解锁C/C++ 开发效率一直被业内开发人员诟病,单元测试开发效率也是如此,以至于开发人员不愿花时间来写单元测试。那么我们是不是可以通过改善编写单元测试的效率来提升项目的测试用例覆盖率?

本文主要介绍如何利用GCC插件来实现提升C/C++开发者的单元效率工具解决方案,希望对大家在提升单元测试效率上有所启发。

一、动机

上图展示了C/C++单元测试的基本流程,在日常开发过程中写单元测试是一项比较大工程量的事情,C/C++ 目前单元测试代码都需要自己手动写,而且对于一些私有方法打桩就更加麻烦。

目前业内无开源的自动化测试框架或者工具,倒是有一些商业的自动测试工具,下图展示了我们自动化测试工具及单元测试库:

即使开源界有gtest等测试库的支持,我们仍然需要编写大量的单元测试用例代码。对于一些private、protected的类方法,编写单元测试用例的效率就更低,需要手动打桩(mock)。同时我们分析测试用例发现,存在很多边界的用例,它们基本上都是很固定或者有一定模式,比如int **小值等。

如何改善编写单元测试的效率,提升C/C++同学开发效率以及*质量?我们可以通过提取源文件中的函数、类等信息,然后生成对应的单元测试用例。自动生成用例时需要依赖函数的声明、类的声明等信息,那么我们应该如何获取这些信息呢?

例如:如下的函数定义:

void test(int arg) {}

我们希望能够从上面的函数定义中得到函数的返回值类型、函数名称、函数参数类型、函数作用域。通常我们可以通过以下几种方式得到:

1.1 方法1:使用正则表达式

无奈C/C++ 格式比较复杂能够虽然能够使用多种组合来获取对应的函数声明等信息:

void test(int arg){}void test1(template<template<string>> arg,...){}void test2(int(*func)(int ,float,...),template<template<string>> arg2){}

那么就需要写一系列的正则表达式:

  • 提取函数名称、参数名:[z-aA-Z_][0-9]+

  • 提取函数返回值:^[a-zA-Z_]

关键词提取出来了,但是他有一个很大的问题:怎么判断文件中书写的代码是符合C/C++语法描述呢?

1.2 方法2:使用flex/bison 分析c/c++源码文件

这当然是一种很好的方式,但是工作量巨大,相当于实现一个具备词法、语法分析器简易版本的编译器,而且要适配不同的语法格式,虽然bison可以解决上述的如何判断语法是否正确问题,但是仍然很复杂。


企业信息
入驻时间:
2022年
主营产品:
数控机床
公司地址:
广东省阳江市阳东县艺鹏装饰
客服热线

意见反馈邮箱:354481597@qq.com

关注我们
百修网公众号

百修网公众号

百修公众号

百修公众号

师傅接单小程序

师傅接单小程序

苏ICP备09042555号-2 | 增值电信业务经营许可证:苏B2-20150120 | 公安部备案号:32020202000170 | Copyright © 无锡市新视点网络科技有限公司 版权所有