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

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

3天内不再提示

第三届大会回顾第7期 | 面向OpenHarmony大规模代码的路径敏感的稀疏值流分析

OpenHarmony TSC 来源:OpenHarmony TSC 作者:OpenHarmony TSC 2025-08-18 11:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

演讲嘉宾 |蔡源稻

回顾整理 | 廖 涛

排版校对 | 宋夕明

wKgZPGie4yaAT9Q_AAZaF6BE9Qo348.png

嘉宾介绍

研究分论坛

蔡源稻,华为2012实验室技术专家。

正文内容

静态分析(Static Analysis)是软件开发中不可或缺的一部分,它可以帮助开发人员提高代码质量、减少缺陷和安全风险。OpenHarmony的编译环境复杂,代码量巨大,且由多种编程语言混合编程,在静态分析上存在不小挑战。如何提升OpenHarmony静态分析的准确性和效率?华为2012实验室技术专家蔡源稻在第三届OpenHarmony技术大会上进行了精彩分享。

wKgZPGie4yaALWGyAAEZX_Hr-BU757.jpg

在软件开发的生命周期中,代码的质量和安全性至关重要。随着软件系统的复杂性不断增加,如何在有限的时间和资源内,确保软件的功能正确性、性能优化以及安全性?这就涉及两种重要的分析技术:静态分析和动态分析。

动态分析指在程序运行时对其行为进行监控和分析,能够捕捉到实际运行中的性能瓶颈、内存泄漏和竞态条件等问题。相对而言,静态分析则在不执行程序的情况下利用软件结构穷举软件所有可能的运行时行为并将这些行为以数据结构形式记录,从而帮助开发者在早期阶段发现潜在的错误、安全漏洞和代码质量问题。

对于OpenHarmony而言,由于其编译环境复杂,代码量巨大,且由多种编程语言混合编程,静态分析存在以下挑战:

覆盖率不高:静态分析理论上可以完整覆盖程序运行行为,但工程代价太高/分析效率太低,导致实际上覆盖率不高;同时,动态分析也无法完整覆盖程序。

wKgZPGie4yaACtUoAAES5GWUUE4981.png

无法适配复杂编译:静态分析工具需要干预编译过程来获得待分析代码(IR),OpenHarmony的编译环境复杂 (涉及多个编译器,一个编译器不同版本),很难满足此要求。

wKgZPGie4yaAO9SvAACgrso46O4440.png

分析代价高:精确的静态分析,如控制流敏感、函数上下文敏感、路径敏感分析需要较高的分析代价(时间、内存)。对于OpenHarmony海量的代码而言,现有静态分析方法无法在物理资源和时间限制下完成代码分析。

wKgZPGie4yaAOpRiAAHC-5KfMmw583.png

库函数建模困难:由于库函数(e.g., STL C++)需要手动建模才能适配静态分析,但已有静态分析遇到未知库函数只能做保守假设或直接丢弃结果。

wKgZPGie4yaARXP8AAA81c80lSc344.png

针对上述问题,作者本人提出了以下解决方案,并介绍了当前在研产品“费马分析器(Fermat Analyzer)”的部分创新技术点:

非侵入编译的IR构建:非侵入编译的IR构建(Non-intrusive Compilation for IR Construction)是一种在编译过程中构建中间表示(Intermediate Representation, IR)的技术,其核心特点是在不修改或侵入源代码的情况下生成IR。在正向编译时,无需修改编译环境,套用工具在编译脚本即可完成IR构建;而反编译时,翻译可以处理第三方库,二进制形式等产品模块。

wKgZPGie4yeAb_GUAAFE4zFPy3w539.png

基于PDG的稀疏值流分析:Program Dependence Graph(PDG)是一种用于表示程序中语句或指令之间依赖关系的图形化数据结构。通过简洁编码数据依赖和控制依赖,能够清晰地表示程序的执行逻辑,并优化分析过程。具体做法有:(1)抛弃全局穷尽式的指针分析,通过高精度局部指针分析,发现并记录因为指针操作产生的函数内的内存读写数据依赖;(2)跨函数在按需分析时在调用函数中将跨函数数据依赖对齐;(3)指针同化为普通数据流,赋能按需计算,可理解为 IFDS 加入路径条件和指针信息。

wKgZPGie4yeABEwfAAGf9gwTOsE167.png

持久化设计,分析复用:通过复用第三方库分析结果,能够加速分析,减少内存占用;通过程序拆分,可在单机上完成大规模代码分析。

wKgZPGie4yeAMSW1AAFuP_Rg8gY559.png

大模型使能与辅助:当前,AI技术的快速发展,使大模型与代码分析相结合是一个重要趋势。例如,将大模型使能规约推断:函数行为推断(内存创建/释放,中断函数等),API别名信息推断;或通过大模型辅助误报诊断:基于缺陷程序切片以及缺陷信息进行误报诊断。

wKgZPGie4yeAaKeaAAL4RqajL6w992.png

接下来,对于复杂代码的静态分析的实际问题,看看费马分析器是如何解决的:

一、并发内存安全错误检查。现有的关于并发程序分析的精确方法往往效率较低。Canary方法首次将并发错误检测转化为Source-Sink值流 (Value Flow)的检查,通过监视内存对象在数据依赖关系中沿指针之间的流动,观察到Source最终沿Sink流路径到达汇。因此,考虑到只有对线程共享内存位置的内存访问才重要,许多线程执行交错对于检测的并发错误来说是无关紧要的,费马分析器采取了减少指数级爆炸的线程交错分析的方法。

wKgZPGie4yeAHQlUAAFmTNSdP_k347.png

二、准确高效的死锁检查。在执行上下文敏感的死锁检测时,容易出现函数上下文爆炸的问题 (Calling Context Explosion)。考虑到许多函数上下文对死锁检测来说是无关紧要的,因此,费马分析器采取了Peahen方法(第一种用于缓解低效问题的函数上下文缩减技术 (Context Reduction)),通过对两个协同阶段进行昂贵的函数上下文敏感计算的分解,进行上下文无关的锁图构建以发现死锁相关的函数。

wKgZPGie4yeAVnTwAAEX_O-SxsE226.png

三、准确高效的函数调用图:鸡尾酒疗法。对于解析函数指针的值,以及构建C代码的函数调用图,传统单一模式 (e.g., SVF, LLVM)——即用一种精度来分析所有的间接调用,往往要么不精确要么不高效。费马分析器采用多种精度来分析所有的间接调用,以自动准确的方式决定一个间接调用需要哪种准确的分析,并采用合适的精度来回避计算资源浪费。

wKgZPGie4yeAI2XpAABEkHNHMs8169.png

未来,随着AI大模型的迅速发展,代码规模和分布式架构的复杂性都不断提高,静态分析作为系统可信和软件质量的重要保障,也正从传统的模式匹配向智能化、场景化方向演进。随着技术的不断进步,静态分析将在软件开发的各个环节发挥更加关键的作用,为构建高质量、高性能、高安全性的软件系统提供坚实的支持。

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

    关注

    90

    文章

    3707

    浏览量

    96735
  • 代码
    +关注

    关注

    30

    文章

    4940

    浏览量

    73116
  • 混合编程
    +关注

    关注

    0

    文章

    27

    浏览量

    8438
  • 静态分析
    +关注

    关注

    1

    文章

    45

    浏览量

    4181
  • OpenHarmony
    +关注

    关注

    31

    文章

    3924

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    第三届开放原子大赛首批赛项颁奖仪式圆满落幕

    11月21日,在2025开放原子开发者大会开幕式上,第三届开放原子大赛举行首批赛项颁奖仪式。
    的头像 发表于 11-25 17:33 426次阅读

    第三届引望车联网安全大会圆满结束

    2025年10月18日,深圳引望智能技术有限公司(以下简称“引望”)在东莞举办“第三届引望车联网安全大会”。
    的头像 发表于 10-21 09:32 387次阅读

    中兴通讯第三届学习发展大会圆满收官

    近日,以“AI时代组织与人才能力重塑”为主题的中兴通讯第三届学习发展大会在深圳成功举办。大会由中兴通讯全球学习发展中心主办。来自中国移动、中国联通、ATD、小米汽车、北森、AACTP、飞书等多位国内外领导、专家共聚一堂,就组织发
    的头像 发表于 09-26 15:24 627次阅读

    DEKRA德凯亮相第三届动力电池质量安全大会

    2025年9月11至12日,由中国消费品质量安全促进会主办的第三届动力电池质量安全大会在湖北襄阳隆重举行。大会以“智控质量安全 赋能绿色未来”为主题,紧扣国家“双碳”战略与新能源汽车产业发展规划,汇聚行业智慧,破解发展难题,共推
    的头像 发表于 09-15 14:18 549次阅读

    国际星闪联盟亮相第三届电子纸产业创新大会

    近日,第三届电子纸产业创新大会(ePIC 2025)在深圳国际会展中心召开。国际星闪联盟受邀出席,并与电子纸产业联盟共同签署合作协议,宣布成立联合工作组,这标志着两大产业生态的协同发展迈入新阶段。
    的头像 发表于 09-03 09:26 713次阅读

    第三届开放原子大赛正式启动

    近日,在2025开放原子开源生态大会开幕式上,第三届开放原子大赛正式启动,首批12个赛项同步发布。
    的头像 发表于 07-28 17:03 912次阅读

    奇异摩尔出席第三届芯粒开发者大会AI芯片与系统分论坛

    近日,第三届芯粒开发者大会圆满落幕。大会在“集成芯片前沿技术科学基础”重大研究计划指导下,由中国科学院计算技术研究所、中国电子科技集团公司第五十八研究所联合主办,共有50余名嘉宾做报告,吸引了300
    的头像 发表于 07-22 11:34 973次阅读

    行芯科技亮相第三届芯粒开发者大会

    在刚刚于无锡圆满落幕的第三届芯粒开发者大会——这场汇聚全球顶尖芯片企业、科研机构及产业链专家的盛会上,行芯科技作为国内Signoff领域的领军企业,受邀发表了主题演讲《面向3DIC的Signoff挑战与行芯创新性策略》,为行业破
    的头像 发表于 07-18 10:22 717次阅读

    第三届大会回顾6 | HarmonyOS NEXT原生智能,助力应用低成本生而智能

    发者和用户又提供了哪些AI能力?华为终端云服务小艺产品技术专家高光远在第三届OpenHarmony技术大会上进行了精彩分享。
    的头像 发表于 07-14 18:04 871次阅读
    <b class='flag-5'>第三届</b><b class='flag-5'>大会</b><b class='flag-5'>回顾</b><b class='flag-5'>第</b>6<b class='flag-5'>期</b> | HarmonyOS NEXT原生智能,助力应用低成本生而智能

    华为智能光伏第三届全球安装商大会圆满收官

    华为智能光伏第三届全球安装商大会在东莞丫坡盛大召开,来自欧洲、亚太、拉美等全球各地的伙伴和头部安装商齐聚一堂,围绕光储产业市场趋势、安装商战略、优秀案例、营销策略等议题展开深入探讨,共同描绘分布式能源市场蓝图。
    的头像 发表于 06-20 09:51 927次阅读

    格创东智亮相第三届软件创新发展大会

    近日,由武汉市人民政府、湖北省经济和信息化厅主办的第三届软件创新发展大会(以下简称“大会”)在武汉光谷举行。
    的头像 发表于 06-17 16:52 896次阅读

    九同方亮相第三届软件创新发展大会

    近日,第三届软件创新发展大会在武汉光谷圆满落幕。本届大会以“慧聚江城 数智领航”为主题,设置1场主论坛、6场专题论坛和1场软件互动市集,涵盖基础软件、工业软件、开源创新、人工智能、汽车软件、网络安全等热点领域,谋篇布局探讨“十五
    的头像 发表于 06-17 14:12 894次阅读

    四维图新亮相第三届智能驾驶创新大会

    6月4日,第三届智能驾驶创新大会在杭州开幕。大会聚焦“AI定义汽车”核心主题,汇聚全球智能驾驶领域顶尖车企、科技公司及行业专家,共同探讨智能驾驶技术的前沿发展与商业化路径。作为汽车智能
    的头像 发表于 06-05 19:22 1081次阅读

    理工雷科亮相第三届民航科教创新成果展

    近日,第三届民航科教创新成果展在北京国家会议中心盛大启幕。作为民航系统举办的最大规模专业展会,第三届民航科教创新成果展以“创新领航 智连世界”为主题,吸引了100余家优秀企业参展,集中展示我国
    的头像 发表于 05-29 17:55 972次阅读

    第三届百度文心杯创业大赛启动

    近日,第三届“文心杯”创业大赛面向全球正式启动报名。
    的头像 发表于 04-30 10:24 761次阅读