软件分析

软件分析Lab介绍

构筑最全软件分析技术底座,孵化最强软件分析商业服务


软件分析Lab,致力于围绕软件分析领域核心技术(如源码分析、二进制程序分析、软件仓库挖掘等)持续聚焦与突破,充分融合图理论、形式化验证、大数据与AI技术等周边技术,面向软件开发场景持续孵化并交付一系列智能化开发服务,包括但不限于代码开源成分分析、代码缺陷检测与修复、代码坏味道识别与重构、代码智能移植、代码提交与同步、代码搜索服务等。

软件分析研究方向

PaaS技术创新Lab秉承开发共赢的理念,愿意与学术界和工业界各位精英就以下研究方向合作,如有意向请联系 SALab@huaweicloud.com

  • 缺陷检查与修复

    软件缺陷严重威胁着软件系统质量和安全性。静态缺陷检查是保障软件质量和安全性的重要技术手段,能够帮助开发人员在编码阶段尽早发现问题。但随着软件规模越来越大,对静态缺陷检查技术也提出了巨大的挑战。如何进行全面、快速、准确的检查,如何帮助开发人员高效地修复发现的问题,以及如何有效地获取大型系统特有的缺陷知识,是三个亟需解决的技术难题。本研究团队致力于打造业界最精准和高效的缺陷检测与修复核心引擎,构筑自主可控的软件分析基础平台。主要研究方向聚焦在:

    (1)构建缺陷检查能力,覆盖华为编码规范、CWE、MISRA规范等,看护代码质量和安全性;

    (2)利用增量分析、分布式分析、冗余分析识别等技术来提高分析效率,减少时间和计算资源开销;

    (3)利用数据挖掘和机器学习技术,从大规模代码中挖掘缺陷模式及修复模式。

  • 坏味道检查与重构

    软件演进过程中不可避免会出现代码与架构的腐化,不断提升软件开发与维护的成本,只有不断重构才能解决此问题,但人为重构成本较高且易引入新的问题。本项目基于开源社区代码数据与特定启发式规则,使用机器学习,代码分析与模式挖掘等技术,构造代码坏味道分析、架构坏味道分析与代码重构方案智能分析,并提供端到端的代码重构解决方案,辅助开发人员持续高效重构代码,旨在打造业界最领先的坏味道检测与智能重构服务。本项目已发表3项技术发明专利,在华为公司内部重构代码10w+行,重构效率提升23%。

  • 开源成分分析

    随着开源理念的普及以及开源社区的日益壮大,开源软件的开发与使用呈井喷式发展,这种开发模式在显著的提升了研发效率同时,也引入了合规和安全的风险,如何识别以及治理这些开源成分是一个十分有挑战的课题。针对这个问题,本项目基于分布式计算,大数据处理,弹性调度等技术,构筑全球最完备的开源数据集(PB级),实现以周为单位对数据的全量处理;基于开源原始数据,使用软件分析、数据挖掘、深度学习等技术,构建全量的开源知识库;在此基础上,使用代码克隆、软件静态分析,信息检索等技术,构建开源成分片段引用分析,二进制文件溯源分析,编译依赖组件分析,许可证合规分析等软件成分分析基础能力,最终提供业界领先的端到端的开源识别及治理解决方案。

  • 代码搜索

    随着开源软件的发展,软件社区存在着大量优质的项目。另外,企业内部也积累了许多优质的代码。代码复用是软件大数据时代的一种普遍现象,可以大大提高研发效率。本项目利用信息检索、代码分析、数据挖掘等技术,帮助研发人员高效获取代码资源,促进研发信息资源的共享与复用,辅助研发人员生产效率提升。

  • 三方库智能移植

    随着开源社区及商业市场的繁荣发展,各类细分领域已为用户提供了多种生态选择,如桌面应用可面向window,linux等os进行开发,移动应用可支持面向GMS/HMS, android/harmony等os进行开发。围绕上述场景,本项目孵化了一系列智能化生态迁移能力,支持各类开源三方库、商业sdk的智能升级或替换,帮助开发者快速修复依赖风险问题,从而支持进行多类跨生态迁移场景,本项目已申请专利3项,发表顶会论文3篇。

  • 代码提交与合并

    随着版本控制的理念以及git工具在研发过程中的日益普及,代码的提交、拣选、合并等行为已经成为日常开发中必不可少的环节,这些行为中有大量的重复劳动以及协同工作,如何利用智能化的手段减少研发过程中的重复劳动,提升协同效率是一个日益热门的领域。本项目将传统的软件分析技术与机器学习结合,提供了智能代码提交、智能代码拣选、智能代码冲突消解等服务,在用户提交代码时自动生成提交记录,拣选特性时提供批量拣选建议,合并代码时智能消解冲突等能力,从而极大提升代码提交及同步环节工作效率。目前已经产出7项专利,2篇top会议论文,其中一篇获评为ESEC/FSE 2021 Disinguished Parper。