0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

VectorCAST/QA与Bazel集成配置方法

Vector维克多 来源:Vector维克多 2026-03-11 17:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

VectorCAST/QA是VectorCAST产品族中用于统计系统测试过程中代码覆盖度的软件工具。为降低配置难度,传统的VectorCAST/QA系统测试项目通常使用手动操作方式完成以下步骤:

>创建系统测试环境

>添加待插装源码

>设置覆盖度类型并插装

>导入或查看覆盖度数据

对于使用Bazel构建的大型项目,当需要统计覆盖度的源码量大时,手动添加被测源码需要了解项目组织结构。更快捷的方法是在Bazel构建的过程中,由VectorCAST/QA自动完成创建测试环境,根据构建目标自动添加插装的源码列表,并完成插装、测试结果加载,以及生成测试报告的工作。

VectorCAST的JIT(Just In Time)功能可以实现上述目标。VectorCAST JIT功能提供一系列VectorCAST工具的API接口,可用于在项目构建时完成上述步骤。下面将具体介绍在Ubuntu发行版本中,如何实现VectorCAST/QA与Bazel构建工具的集成方法。

01配置集成

下载VectorCAST/QA的Bazel规则集

VectorCAST/QA的Bazel规则集是将VectorCAST/QA的JIT API基于Bazel构建工具进行更高层次的封装,以便在Bazel build或Bazel test构建过程中更便捷的调用JIT API。因此,需要将此规则集下载到测试机中。

导入VectorCAST规则集

打开项目对应的.bazelrc文件,导入VectorCAST/QA的Bazel规则集:

import{absolute_or_local_path/to/rules_vectorcast}/vectorcast.rc

上述语句中,斜体部分应改为插件文件vectorcast.rc的实际路径,可以是相对于当前.bazelrc的相对路径,也可以是绝对路径。示例如下:

7a03e51a-1c37-11f1-90a1-92fbcf53809c.png

图1:bazelrc导入vectorcast.rc规则集

配置Bazel项目

为了使用VectorCAST/QA的JIT功能,需要对项目进行配置。

有两种配置方法:

方法一:配置WORKSPACE文件,添加对VectorCAST/QA JIT的支持;

方法二:当项目开启Bzlmod时,配置MODULE.bazel来添加对VectorCAST/QA JIT的支持。

配置WORKSPACE

打开项目的根目录中的WORKSPACE文件,添加如下配置:

local_repository(

name = "rules_vectorcast",

path ="{absolute_or_local_path/to/rules_ vectorcast}"

)

load("@rules_vectorcast//:deps.bzl", "rules_vectorcast_dependencies")

rules_vectorcast_dependencies()

load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")

bazel_skylib_workspace()

load("@rules_vectorcast//:workspace.bzl", "vectorcast_tools")

vectorcast_tools(

name = "vectorcast_tools",

)

以上配置中,斜体部分应改为插件文件vectorcast.rc的实际路径,可以是相对于当前WORKSPACE的相对路径,也可以是绝对路径。

示例如下:

7a6cd4b2-1c37-11f1-90a1-92fbcf53809c.png

图2:配置WORKSPACE

配置MODULE.bazel

打开项目的根目录中的MODULE.bazel文件,添加如下配置:

bazel_dep(name = "rules_vectorcast")

local_path_override(

module_name = "rules_vectorcast",

path = "{absolute_or_local_path/to/rules_ vectorcast}"

)

vectorcast_tools_extension=use_extension("@rules_vectorcast//:extensions.bzl", "vectorcast_tools_extension")

vectorcast_tools_extension.tools()

use_repo(vectorcast_tools_extension, "vectorcast_tools")

以上配置中,斜体部分应改为插件文件vectorcast.rc的实际路径,可以是相对于当前MODULE.bazel的相对路径,也可以是绝对路径。

示例如下:

7ac99594-1c37-11f1-90a1-92fbcf53809c.png

图3:配置MODULE.bazel

配置构建规则

配置完Bazel项目和Bazel工具本身使用VectorCAST规则集后,还需要在构建目标对应的BUILD.bazel文件中加载该规则集。具体的方法如下:

找到Bazel build构建目标,或者build test目标所在的BUILD.bazel文件

编辑BUILD.bazel文件,首行添加load语句加载指定规则。

配置如下:

load("@rules_vectorcast//:def.bzl", "vectorcast_binary")

在文件末尾添加vectorcast_binary配置,用于生成包含覆盖度插装代码的可执行程序。其中,

target_to_instrument指原始构建目标的名称;

name为新生成的包含插装代码的新可执行程序的名称:

vectorcast_binary(

name = "manager_driver_instrumented",

target_to_instrument = ":manager_driver"

)

在下图示例中:

构建目标是可执行程序:manager_driver

首行使用load加载bazel规则

末尾配置插装生成新可执行程序的名称

7b243b8e-1c37-11f1-90a1-92fbcf53809c.png

图4 配置目标的构建规则

配置构建指令

使用VectorCAST/QA JIT功能还需要在最终的Bazel构建指令中开启VectorCAST JIT功能。

只需要在最终的Bazel build或者Bazel test指令中添加以下选项:

--config=vectorcast:开启VectorCAST JIT

--vectorcast_compiler_tag=:编译链模板Tag,VectorCAST会根据这个tag自动加载相应的编译选项来插装被测代码。

目前可支持Bazel集成的编译链Tag列表如下:

GNU_CPP_X

GNU_CPP98_X

GNU_CPP03_X

GNU_CPP11_X

GNU_CPP14_X

GNU_CPP17_X

GNU_CPP20_X

CLANG_CPP_X

CLANG_CPP98_X

CLANG_CPP03_X

CLANG_CPP11_X

CLANG_CPP14_X

CLANG_CPP17_X

CLANG_CPP20_X

--vectorcast_coverage_type=

STATEMENT+BRANCH:覆盖度类型,可选类型有:

STATEMENT+MC/DC

STATEMENT+BRANCH

STATEMENT

FUNCTION

MC/DC

BRANCH

FUNCTION+FUNCTION_CALL

下图为示例项目中生成可执行程序的脚本。在Bazel build指令中添加了如下配置,以开启VectorCAST JIT插装,使用编译链为GNU C++编译链;插装覆盖度类型为语句和分支:

--config=vectorcast--vectorcast_compiler_tag=GNU_CPP_X--vectorcast_coverage_type=STATEMENT+BRANCH

7b7a6338-1c37-11f1-90a1-92fbcf53809c.png

图5:配置Bazel构建指令

注意:对于Bazel 7.1.2及更低版本,需要额外添加配置:--spawn_strategy=local

02构建项目

完成前述配置后,即可开始构建项目。以下是示例项目的完整构建脚本,包含构建目标可执行程序、模拟手动执行用例、以及加载测试数据等所有操作。

7bd219c0-1c37-11f1-90a1-92fbcf53809c.png

图6:完整构建脚本

进入项目目录,直接执行project_build.sh,等待构建完成。

7c28d990-1c37-11f1-90a1-92fbcf53809c.png

图7:构建示例项目

构建完成后,会打印最终生成的HTML报告完整路径信息,如下图所示。

7c865110-1c37-11f1-90a1-92fbcf53809c.png

图8:测试报告路径

使用浏览器打开management_report.htm测试报告,内容如下:

7cdc854e-1c37-11f1-90a1-92fbcf53809c.png

图9:测试报告示例

互动专区

欢迎在留言区提出您的意见和建议,参与即有机会获得精美礼品。

包括但不限于:

>期望未来VectorCAST产品支持哪些新特性。

>期望以何种方式(图文或视频)更深入了解VectorCAST产品的哪些特性。

我们将从参与互动的用户中随机抽取 5 位,送出一份精美定制礼品,期待您的建议!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    9648

    浏览量

    157849
  • 代码
    +关注

    关注

    30

    文章

    4985

    浏览量

    74587
  • Vector
    +关注

    关注

    3

    文章

    109

    浏览量

    10126

原文标题:VectorCAST/QA与Bazel集成配置方法

文章出处:【微信号:VectorChina,微信公众号:Vector维克多】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问在NXP板的BSP QA过程中采用了哪些具体的测试方法

    QA 过程中采用了哪些特定的测试方法? 什么是 QA 流程,以及 yocto/linux BSP 在整个 QA 生命周期中如何跟踪和管理缺陷? RSB 3720 板的
    发表于 03-17 08:04

    NPA1003QA射频晶体管

    NPA1003QA射频晶体管产品介绍NPA1003QA报价NPA1003QA代理NPA1003QA咨询热线NPA1003QA现货,王先生**
    发表于 09-03 12:04

    tflite mcu怎么使用

    首先要能编译、能打印log编译的方法有两种,1) bazel 2) make可以在本地编译调试使用bazel testbazel test //tensorflow/lite
    发表于 11-03 08:31

    onnxruntime-1.8.2-r0 do_package_qaQA 运行发现致命错误怎么解决?

    我正在“按原样”使用 BSP 构建并收到错误... 错误:onnxruntime-1.8.2-r0 do_package_qaQA 问题:/usr/lib/python3.9
    发表于 04-28 08:03

    电位器整定的定时器专用电路QA640896 QA640892

    QA640896和QA640892B是台湾宏太科技研制的定时器专用IC.利用它可以组成精确的定时控制电路,而且设计简单,调试方便.文中介绍了该器件的主要特点、参数、功能和控制方法,给出了这两
    发表于 04-28 15:53 28次下载

    电位器整定的定时器专用电路QA640896/QA640892

    电位器整定的定时器专用电路QA640896/QA640892B 摘要:QA640896和QA640892B是台湾宏太科技研制的定时器专用ic。利用它可以组成精确的定时控制电路,而且设
    发表于 06-03 15:36 29次下载

    基于知识图谱的QA系统研究

    QA系统用于回答人们以自然语言形式提出的问题,其在互联网、通信及医疗等领域获得显著的成功。其中,IBM研发的Watson系统就在与人类的答题比赛中获胜并首次获得100万美金奖励;苹果的Siri系统
    发表于 10-10 14:59 0次下载
    基于知识图谱的<b class='flag-5'>QA</b>系统研究

    LV5762QA 降压型开关稳压器

    电子发烧友网为你提供ON Semiconductor(ti)LV5762QA相关产品参数、数据手册,更有LV5762QA的引脚图、接线图、封装手册、中文资料、英文资料,LV5762QA真值表,LV5762
    发表于 07-29 21:02

    QA3000加速计的数据手册免费下载

    和长期性能特征。主要应用包括航天器导航和控制系统。与整个Q-Flex系列加速计一样,QA3000具有专利Q-Flex蚀刻石英挠性地震系统。无定形石英校样结构提供了优良的偏压,比例因子和轴对准稳定性。集成电子开发了加速度比例输出电流提供静态和动态加速度测量。通过使用客户提
    发表于 08-31 08:00 12次下载
    <b class='flag-5'>QA</b>3000加速计的数据手册免费下载

    VectorCAST/QA如何在LiteOS-A内核上实现系统白盒测试

    ,调试目标板是i.MX6ULL开发板(鸿蒙OS官方认可适配)。 VectorCAST/QA介绍 1.1 VectorCAST/QA功能与优势 Vec
    的头像 发表于 06-26 16:21 1.1w次阅读
    <b class='flag-5'>VectorCAST</b>/<b class='flag-5'>QA</b>如何在LiteOS-A内核上实现系统白盒测试

    45V,500mA NPN 通用晶体管-BC817-25QA_40QA

    45 V、500 mA NPN 通用晶体管-BC817-25QA_40QA
    发表于 02-21 19:07 0次下载
    45V,500mA NPN 通用晶体管-BC817-25<b class='flag-5'>QA_40QA</b>

    45V,500mA PNP 通用晶体管-BC807-25QA_40QA

    45 V、500 mA PNP 通用晶体管-BC807-25QA_40QA
    发表于 02-21 19:07 0次下载
    45V,500mA PNP 通用晶体管-BC807-25<b class='flag-5'>QA_40QA</b>

    直播预告 | VectorCAST-嵌入式软件代码自动化测试方案

    原文标题:直播预告|VectorCAST-嵌入式软件代码自动化测试方案文章出处:【微信公众号:北汇信息】欢迎添加关注!文章转载请注明出处。
    的头像 发表于 08-19 10:39 1454次阅读
    直播预告 | <b class='flag-5'>VectorCAST</b>-嵌入式软件代码自动化测试方案

    VectorCAST 对基于***的软件代码开发支持

    的技术挑战,其中之一就是确保国产芯片开发和应用的质量和可靠性。VectorCAST工具的应用为解决这一挑战提供了强大的支持,它具有丰富的测试功能,有助于确保基于国产芯
    的头像 发表于 12-14 08:25 1392次阅读
    <b class='flag-5'>VectorCAST</b> 对基于***的软件代码开发支持

    使用VectorCAST/C++的AI辅助测试功能

    从2026版本开始,VectorCAST/C++推出首批AI辅助测试功能,旨在帮助开发团队解决单元测试过程中的两个核心难点:
    的头像 发表于 04-27 14:37 427次阅读