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

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

3天内不再提示

汽车异构硬件平台开发如何进行静态代码分析

北汇信息POLELINK 2024-10-09 16:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

随着汽车软件开发的复杂程度不断提升,尤其是智能网联汽车和自动驾驶技术的进步,汽车软件开发的复杂程度不断攀升。为了满足日益增长的功能需求和技术挑战,异构硬件平台被越来越多地采用,不同的工具链也不可避免地被引入到实际的开发流程中。这一趋势不仅增加了开发过程的技术多样性,也使得单个项目的编译过程中会涉及到多种编译器。

本文主要讲解基于静态代码分析工具Helix QAC,我们该如何对多编译器工程进行静态分析。

新版本Helix QAC(2024.1+)的分析方式

为了适应这一趋势,Helix QAC在2024年发布的版本中引入了多CCT的功能。CCT(Compiler Compatibility Template),是HelixQAC软件中存储编译器环境配置的文件。根据CCT文件生成的方式,HelixQAC把CCT分为了两种:

  1. 自动CCT(Auto CCT):在工程同步时,自动生成的CCT;
  2. 静态CCT(Static CCT):基于CCT生产工具提前生成的CCT;

自动CCT

针对自动CCT方式,多编译器的配置也是自动的,无需我们进行额外的设置,目前HelixQAC支持使用自动CCT的编译器如下表:

Compiler Filter Command
ARM Clang qa_armclang armclang
Clang C qa_clang clang,clang-[3-9][.][0-9],clang-[1-9][0-9][.][0-9],clang-[3-9],clang-[1-9][0-9]
Clang C++ qa_clang clang++,clang++-[3-9][.][0-9],clang++-[1-9][0-9][.][0-9],clang++-[3-9],clang++-[1-9][0-9]
Compiler caching toolsccache ccache,distcc,ccache-motorola,ccache_cc,ccache_cxx
Embarcadero BCC qa_bccclang bcc64
GNU C qa_gnu gcc,cc,c++,gcc-[1-9],gcc-[1-9][0-9],gcc-[1-9][.][0-9],gcc-[1-9][0-9][.][0-9]
GNU C Cross compilers qa_gnu *-*-gcc,*-*-*-gcc,*-*-*-gcc-[1-9]*
GNU C++ qa_gnu g++,g++-[1-9],g++-[1-9][0-9],g++-[1-9][.][0-9],g++-[1-9][0-9][.][0-9]
GNU C++ Cross compilersqa_gnu *-*-g++,*-*-*-g++,*-*-*-g++-[1-9]*
GNU cc1/cc1plus qa_gnu_cc1 cc1,cc1plus
Green Hills ARM qa_ghs cxarm,ccarm,cxarm64,ccarm64,cxthumb,ccthumb,cxtxarm,cctxarm
Green Hills Integrity qa_ghs ccint*,cxint*
Green Hills PPC qa_ghs cxppc,ccppc,cxtxppc,cctxppc
Green Hills TriCore qa_ghs cctri,cxtri
Green Hills v850 qa_ghs cx*850,cc*850,cxv850e,ccv850e
Hexagon Clang qa_hexagonclang hexagon-clang,hexagon-clang++
HighTec Tricore qa_hightec tricore-c++,tricore-g++,tricore-gcc
IAR compilers qa_icc icc*
Keil ArmCC qa_armcc armcc
Microchip MPLAB pic24 qa_microchip30 pic30-gcc
Microchip MPLAB xc16 qa_microchip16 xc16-gcc
Microchip MPLAB xc32 qa_microchip32 xc32-gcc,xc32-g++,xc32-c++
Microchip MPLAB xc8 qa_microchip8 xc8
Microchip MPLAB xc8-ccqa_microchip8cc xc8-cc
QNX qa_qnx qcc,QCC,q++
Renesas qa_renesas ccrh,ccrl,ccrx,cx
Renesas ca850 qa_renesas_ca850ca850
Renesas cc78k0 qa_renesas_cc78k0cc78k0,cc78k0r
Synopsys DesignWare ARCqa_metaware ccac
TI CCS qa_ti armcl,cl[0-9]?*,clpru
TI CCS Clang qa_tiarmclang tiarmclang
Tasking qa_tasking ctc,cptc,cmcs
Visual Studio qa_mscompile cl,clarm,clsh
Wind River qa_windriver dplus,dcc

静态CCT

如果我们采用传统的静态CCT的方式,那么需要我们提前为不同的编译器生成对应的CCT文件,并在HeliXQAC中将这些CCT导入到软件中。

HelixQAC现在支持为一种语言选择多个CCT配置,如下:

wKgZoWcGO1qAS3bSAADaMoClsiY434.png

在我们完成源码加载后,如果不进行单独配置,那么HelixQAC会使用Default CCT对源码进行解析。如果文件夹内的源码使用的编译器与默认CCT不一样,可以在对应的文件属性中重新选择合适的CCT配置。

wKgaoWcGO1qAWwXQAAB-IMDu3eY073.png

需要注意的是,我们只能针对文件夹进行CCT的选择,不能针对单个源码进行CCT的配置。而且,对于多CCT的工程,由于这是Helix QAC最新版本才有的功能,因此无法兼容Dashboard,只能将多CCT工程的分析结果上传到Validate中。

老版本Helix QAC的分析方式

由于老版本HelixQAC中无法为文件夹选择不同的CCT,如果要实现多编译器的工程分析,需要借助HelixQAC的CMA工程。

CMA(Cross-Module Analysis),是HeliXQAC提供的一种跨模块分析功能,它允许我们将多个HeliXQAC工程添加到CMA工程中,以进行跨模块的分析,并检查重复定义、不兼容的声明和未使用的变量等问题。

具体到多编译器的工程场景,我们需要为每个编译器建立一个HelixQAC工程,并将使用该编译器的源码及头文件加载到该工程中,然后将这些不同编译器的QAC工程添加到CMA工程中。

显然,Helix QAC的新功能提供了极大便利,来高效支持多编译器。

结语:

通过上述讨论可以看出,随着汽车软件开发复杂度的提升,异构硬件平台的应用已成为必然趋势。多编译器环境的引入不仅是技术发展的自然产物,更是解决日益增长的功能需求和技术挑战的有效途径。在此背景下,Helix QAC 作为一款先进的静态代码分析工具,其新版本中引入的多CCT功能为开发人员提供了强大的支持,该功能不仅简化了多编译器环境下的代码分析过程,还可以极大增强代码的质量和安全性。

如果想试用最新版的Helix QAC,欢迎垂询北汇信息。

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

    关注

    1

    文章

    1669

    浏览量

    51069
  • 静态测试
    +关注

    关注

    0

    文章

    33

    浏览量

    6829
  • 汽车
    +关注

    关注

    15

    文章

    4043

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    主流低代码开发平台有哪些:加速数字化转型的核心力量

    在数字化转型浪潮席卷各行各业的当下,企业对快速开发、灵活迭代应用程序的需求日益迫切。低代码开发平台凭借其可视化编程、模块化组件和简化开发流程
    的头像 发表于 11-03 16:53 419次阅读

    2025支持AI 驱动数字化转型的低代码开发平台有哪些

    ”,其技术深度、行业适配性与生态完整性直接决定企业转型成效。本文基于行业趋势与用户需求,梳理2025年国内低代码开发平台,并对比分析其与得帆低代码
    的头像 发表于 10-31 13:18 138次阅读

    代码开发平台推荐:2025国内低代码开发平台排名TOP10

    代码开发平台排行榜 在企业数字化转型的浪潮中,低代码开发平台正逐渐成为企业实现高效
    的头像 发表于 10-28 10:22 301次阅读

    2025主流低代码平台有哪些:低代码开发平台选型指南指南

    在企业数字化转型进入深水区的当下,低代码开发平台已从早期的“效率工具”升级为“核心基建”。其工程化能力、流程适配深度、技术延展性与行业积淀,直接决定了企业转型的成效。据Gartner预测,到2026
    的头像 发表于 10-22 11:49 178次阅读

    如何在Zephyr中进行静态代码分析

    在嵌入式软件开发中,“能编译通过”并不等于“可以放心交付”。安全性、可靠性和合规性是产品能否顺利量产的关键。进入量产的Bug会浪费宝贵的工程时间,也会削弱用户信任;安全漏洞可能暴露设备,带来严重后果;在受监管市场中,若未满足MISRA或CERT检查要求,甚至会直接导致产品发布延迟。
    的头像 发表于 10-17 10:28 527次阅读

    工业物联网平台有哪些低代码应用

    在工业物联网领域,低代码平台通过可视化开发、模块化组件和预置模板,显著降低了开发门槛和周期,同时支持灵活扩展与集成。以下是工业物联网平台中低
    的头像 发表于 09-24 14:49 407次阅读

    知识分享 | 使用MXAM进行AUTOSAR模型的静态分析:Embedded Coder与TargetLink模型

    知识分享在知识分享栏目中,我们会定期与读者分享来自MES模赛思的基于模型的软件开发相关Know-How干货,关注公众号,随时掌握基于模型的软件设计的技术知识。使用MXAM进行AUTOSAR模型的静态
    的头像 发表于 08-27 10:04 482次阅读
    知识分享 | 使用MXAM<b class='flag-5'>进行</b>AUTOSAR模型的<b class='flag-5'>静态</b><b class='flag-5'>分析</b>:Embedded Coder与TargetLink模型

    汽车软件团队必看:基于静态代码分析工具Perforce QAC的ISO 26262合规实践

    ISO 26262合规指南,从ASIL分级到工具落地,手把手教你用静态代码分析(Perforce QAC)实现高效合规。
    的头像 发表于 08-07 17:33 863次阅读
    <b class='flag-5'>汽车</b>软件团队必看:基于<b class='flag-5'>静态</b><b class='flag-5'>代码</b><b class='flag-5'>分析</b>工具Perforce QAC的ISO 26262合规实践

    代码开发平台是什么?零编程零成本搭建

    代码物联网云平台是种融合了低代码开发能力与物联网(IoT)技术的云端服务平台,其核心目标是大幅降低物联网应用的
    的头像 发表于 07-31 15:25 575次阅读

    什么是零代码平台

    代码平台是一种无需编写传统代码,通过可视化拖拽、参数配置、逻辑连线即可快速搭建业务流程与应用系统的工具平台。它将复杂的软件开发过程转化为
    发表于 07-12 20:28

    TurMass™ TK8620 开发平台使用体验报告

    ,支持终端设备与网关的多模式通信。本文基于TKB-620终端开发板及TKB-200网关开发板的实际测试与开发体验,从硬件设计、软件配套、功能测试、
    发表于 04-24 02:18

    【JVM开发者必看】IntelliJ IDEA代码分析实践指南:实时纠错、冗余检测、自动修复等

    【IntelliJ IDEA中的代码分析技巧】静态代码分析是指在不实际运行代码的情况下扫描
    的头像 发表于 03-13 10:34 855次阅读
    【JVM<b class='flag-5'>开发</b>者必看】IntelliJ IDEA<b class='flag-5'>代码</b><b class='flag-5'>分析</b>实践指南:实时纠错、冗余检测、自动修复等

    涂鸦Wukong AI硬件开发框架超强兼容DeepSeek等大模型,助你打造爆款AI硬件

    设计、低代码开发、组件化结构,以及卓越的互联互通和安全合规性。同时,该框架在文字、音频、图像处理等功能上都进行了显著增强。"Wukong"AI硬件
    的头像 发表于 02-13 20:58 1807次阅读
    涂鸦Wukong AI<b class='flag-5'>硬件</b><b class='flag-5'>开发</b>框架超强兼容DeepSeek等大模型,助你打造爆款AI<b class='flag-5'>硬件</b>

    代码与传统开发的区别 低代码与无代码开发的区别

    的工具和图形界面来缩短开发时间和降低技术门槛。以下是对低代码开发与传统开发的详细对比: 适用人群 传统开发 :主要适用于有经验、有基础的程序
    的头像 发表于 01-31 10:48 1047次阅读

    代码在敏捷开发中的应用

    代码平台的定义 低代码平台提供了一个可视化的、拖放式的用户界面,允许开发者通过图形化的方式快速构建应用程序,而无需编写大量的
    的头像 发表于 01-07 09:58 744次阅读