本文共享自华为云社区《提高软件质量?为什么不试试华为云CodeArts Check》,作者: 华为云头条。

1996年,欧洲最新的无人卫星发射火箭阿丽亚娜5号在首次发射后仅仅36秒,工程师就不得不按下了自毁按钮。

事后经剖析查明,由于它重用了其前身阿丽亚娜4号的系统软件,发动机遭遇了之前没有被发现的缝隙,系统软件企图将一个64位的数字塞入16位的空间,由此产生的整形溢出问题导致了主核算机和备份核算机的崩溃。

一个小小的软件缺点,让研制本钱近80亿美元,并携带着造价5亿美元卫星的阿丽亚娜5号瞬间灰飞烟灭。

惋惜的是,这并不是个例。纵观前史,由于软件质量问题导致的“黑天鹅工作”不胜枚举,云服务宕机、金融交易失利、数据泄露等,给社会和用户形成了无法挽回的丢失。事实上,软件存在的质量缺点无法100%避免。因而,只有经过愈加全面、严厉、高效、安全的代码查看服务,才干最大程度地下降风险,使得软件开发进程在本钱、进度和质量上得到充分保证。

国外先进的代码查看软件和服务虽多,但因种种原因不能在我国全面落地,或在某些方面存在局限性,并不能完全满意我国客户的实践需求。别的,在Gartner使用安全测验魔力象限中,至今尚无我国企业能够跻身领导者象限。那么,谁能打破职业坚冰,谁能更好地在软件开发阶段就将质量与安全隐患消除于无形?

华为云CodeArts Check代码查看服务挺身而出,为用户供给包括代码风格、通用质量与代码安全风险等在内的查看才能,一同供给问题闭环处理、查看陈述等功用,然后一站式完成代码查看作业,将代码质量保证活动从原始的人工检视中解脱出,保证代码的高质量并助力客户的商业成功。

提升软件质量?为什么不试试华为云CodeArts Check

“质量+安全”左移

著名软件工程专家和软件经济数据与衡量专家卡珀斯琼斯在其作品《Applied Software Measurement》中指出,80%的软件缺点产生在编码阶段,而在后端测验修正缺点的本钱是开发阶段的40倍。

广泛的工业界实践也标明,在整个软件生命周期中,缺点发现得越早、修正得越早,影响越小,付出的代价也越小。因而,“质量+安全”左移、DevSecOps等新理念不断涌现。华为十分赞同并在软件开发实践中活跃落地和履行这些理念。

华为很早就开端重视软件质量的改进,而且继续吸收业界的优异经历。“在我仍是华为新员工的时分,就曾学习过半年的质量大事。”据一位华为云PaaS产品专家回想,“1979年出书的《质量免费》中提到把工作做对的理念,与今日‘质量+安全’左移的概念不约而同。最新推出的华为云CodeArts Check正是为了更好地在软件开发的前端补偿软件质量缺点,一同还在代码查看上更进一步,加入了运营等新内容,让开发者受益匪浅。”

第三方商场研究陈述显示,在我国,超越七成的软件厂商在使用DevSecOps的一同,也选用了代码主动查看东西。以华为为例,在其出售掩盖的全球100多个国家中,尤其是欧洲、中东地区的许多国家关于质量与安全问题高度灵敏。

为此,华为内部很早就引进了相关东西,独立履行软件扫描,从技能、事务标准乃至公司文明等不同层面,保证主动化代码查看的有用落地,以保证华为一切产品的成功上线。

在软件质量与安全范畴,技能相对比较老练,早在上个世纪70年代左右就已经有了第一款商业化的代码查看软件。可是由于软件编码本身便是一件十分困难的事,而且开发人员的技能、常识储备良莠不齐,再加上软件言语本身的特色也会天然形成缺点,所以在开发阶段成功阻拦一切代码质量问题始终是一个难点。

从瀑布式开发到今日盛行的灵敏开发、云开发,开发模式的改动关于软件质量和安全的影响也是比较大的。假设软件扫描或剖析的时刻过长,则很难满意快速发布、快速迭代的要求。软件质量与开发功率之间似乎是鱼与熊掌难以兼得。再者,相对动态剖析技能,静态剖析技能本身存在一些局限,比方每一行代码在履行的进程中,每一次调用都会逐层逐路地进行剖析,这对算力来说也是巨大的应战,相同会影响开发功率。

保证软件质量与安全,应战不言而喻,而且不只仅体现在技能层面。在使用安全测验范畴,标准是国外的,领导厂商是国外的,国内无论是从技能仍是产品化、商业化程度来看,都相对较单薄。华为云CodeArts Check的方针是和国内很多厂商一同,共建查看标准和生态,为我国软件职业的展开奉献更多技能与经历,进一步协助广阔我国软件企业提高产品质量。

华为云CodeArts Check的前世今生

从1998年到2007年,在华为内部,开发言语以C/C++为主,各事务团队按需引进Pclint等第三方东西展开代码质量查看。2007年至2012年期间,华为还发布了《华为通用编程标准》,标准以人工检视为主。

“从咱们对源代码的质量有要求开端,就将其时业界顶尖的代码查看东西用了个遍。但在保证软件质量与安全方面,咱们的确面对相当大的应战。”华为云PaaS产品司理归纳说,“首先,作为全球化的公司,咱们的产品有必要满意全球不同客户商场差异化且极端严厉的要求;其次,在代码查看方面,咱们不只要完成对编码风格、简单质量问题等的查看,还期望经过查看发现更多潜在的质量问题,甚至是影响到网络安全的软件质量问题;最后,代码查看东西有必要满意华为大体量的研制需求,具有杰出的工程化才能,包括高吞吐量、安稳和易用。”

并非原生商用的代码查看东西不行优异,而是这些东西的确不能掩盖华为一切的使用场景。所以,华为走上了自研代码查看东西之路。在这里能够讲一个小插曲。

某次,华为的一个客户提出,要快速承认产品代码中是否使用了不安全的内存操作函数。华为最初选用商用东西进行了常规排查,但在排查之后发现,仍有遗失的场景。一同客户又提出,除了要排查出是否使用了不安全的函数,还要承认使用了不安全函数的安全版别是否使用正确。

这一要求已经超出了其时商用东西的才能范围。华为活跃出资快速响应客户的个性化要求,在极短的时刻内经过自研补偿代码查看东西才能的不足。

■ 2007年,结合ISO 9126系统/产品质量模型,华为发布了《软件代码质量要求及样例》,清晰了代码质量有必要到达的6项要求——简练、牢靠、可维、可测、高效、可移植,并在此基础上打造出Program SMaRT1.0模型。

■ 2012年,华为对Program SMaRT模型进行了完善,着重扩展了安全性。

■ 2018年,华为根据对好代码的解读和追求,结合业界先进实践、专家学术研究和ISO标准,提出了华为的CleanCode建议,旨在满意功用正确的前提下,打造具有“可读、可维护、安全、牢靠、可测验、高效、可移植”七大特征的高质量代码,树立人人编写CleanCode代码的软件文明。一同华为开端自研与各主流编程标准对应的主动化代码查看才能,相对应的编程标准查看东西CodeCheck也开端面向全公司开发人员进行推行普及。

此外,华为内部多种多样的使用场景,让开发团队能够不断补强、夯实代码查看的基本技能与才能,而不只限于简单的词法、语法剖析这样的查看。现在,自研东西已经成了华为代码查看的中心力量。

提升软件质量?为什么不试试华为云CodeArts Check

前史上,华为的各个事务部门,比方终端、ICT、运营商等,都会遵照公司对软件质量的一致要求,一同结合本身的事务特色,挑选开源的或商用的主动化东西进行代码查看。跟着业界对网络安全的重视,运营商对通讯设备商的软件代码安全性提出了极高要求,并提出了内部标准是否一致落地的疑问:“咱们用了华为那么多产品,华为如何保证每个产品线产品都能到达平等的质量要求与标准?华为内部是否有一致的质量保证标准?每个开发人员是否实在履行了相关的标准和标准?”

其时华为的状况是,尽管每一个产品都有针对性的查看标准,也装备了相应的查看东西,完全能够保证产品本身的质量与安全。所以,华为从公司标准下手,对照业界标准,重新梳理、刷新一切相关的安全标准、编程标准。

在此基础之上,每条产品线根据本身的事务特色,以及对安全性的细致要求,拟定愈加详细的要求和规矩。这样一来,华为从整个公司层面,就能经过一个一致的渠道,要求各产品线使用一致的必选规矩集去履行软件扫描;而这个一致的渠道还能有用会聚、处理各事务线的数据,并将相关数据供给给外部客户,以满意第三方查看、认证等方面的需求。经此改动,华为的整体产品质量又跃上了一个新台阶。

■ 2018年,跟着整个软件东西链的逐步完善,华为开端将用于内部的代码查看东西“外溢”,向外以服务的模式进行输出。

■ 2020年4月,CodeCheck2.0正式发布,多款代码查看东西(ReviewBot、SecBrella、CodeCheck等)归一至新版的代码查看服务CodeCheck,并构建起“IDE-代码仓门禁-版别发布”三级查看系统。

■ 2021年,CodeCheck经历多次技能攻关,完成了代码查看引擎对国外东西的中心安全及质量检测才能进行替换,不只有用支撑了华为研制事务的连续,而且为深度安全及代码质量查看才能的商用交给夯实了基础。

■ 2022年4月,CodeCheck HCS版别交给,这也是CodeCheck首个正式对外商用的版别。经过近半年的精心预备,CodeCheck于2022年8月23日经过了业界标准CWE认证,具有了国际认可的专业资质;同年9月,CodeCheck完成了在墨西哥、巴西、新加坡等多个海外局点的开局,迈出全球化布置的要害一步。

经过继续的演进、完善,CodeCheck成了今日广阔开发者在华为云上能够信手拈来的CodeArts Check服务,它既是华为多年来软件开发的成功实践、工程办法、办理要求以及优异企业文明的结晶,一同又将经实践验证的好用的通用才能与功用,与广阔客户和协作同伴进行共享,进一步提高软件的质量。

华为云CodeArts Check服务能够在开发阶段全面深挖代码的安全问题,并从“可读性、可维护性、安全性、牢靠性、可测验性、高效性、可移植性”这七个纬度全面评价安全代码的质量,为开发者供给大规模、高可用,且易用、快捷的云服务,然后更好地守护企业软件的质量与安全,助力企业商业成功。

“六大利器”助力企业商业成功

你是不是猎奇,华为云CodeArts Check到底有哪些过人之处?归纳来说,华为云CodeArts Check锻造出“六大利器”。

利器一:自研代码查看引擎,代码质量评价无死角。

华为云CodeArts Check选用的自研引擎交融了华为30多年对代码质量及可信度提高方面的继续思考与探究实践,能够协助用户在一次扫描中针对代码的”可读性、可维护性、安全性、牢靠性、可测验性、高效性、可移植性”七大质量特征进行全面剖析。

利器二:五大业界主流标准、华为编程标准,一个也不能少。

华为云CodeArts Check不只支撑ISO 5055、CERT、CWE、OWASP TOP10、SANS TOP 25五大业界主流编程标准,而且内置了华为终端、网络、云核算、芯片等产品多年研制经历总结的编程标准,提高了产品代码标准度。

利器三:开发言语、查看规矩一应俱全,用户开箱即用。

华为云CodeArts Check不只支撑C、C++、Java、Python、GO等十余种常见开发言语,而且供给了超越7000条查看规矩,能够满意各类查看场景需求,开箱即用。

利器四:日均百亿级扫描才能,超大规模代码查看一挥而就。

华为云CodeArts Check具有强壮的高并发处理才能,还可经过AZ容灾、跨Region级容灾多活,支撑过载保护、服务依赖和阻隔等一系列高可用技能,完成服务故障自勘探、自阻隔、自恢复。

利器五:一站式问题闭环修正。

由于内置了编程标准说明、正确示例、过错示例和修正建议,华为云CodeArts Check能够让问题精准定位到行并供给修正指导。得益于修正指导、主动修正、成果主动继承这三大才能,华为云CodeArts Check能够将查看问题处理和修正的功率提高100%。

利器六:三层缺点防护,功率与质量兼得。

华为云CodeArts Check供给了丰厚的API接口以及IDE代码查看插件,并与代码仓协同支撑代码提交时主动查看,与流水线协同支撑软件全量代码查看,三层防范代码缺点引进。

提升软件质量?为什么不试试华为云CodeArts Check

“关于代码查看东西来讲,咱们最重视的一是功率,二是误报和漏报问题。”华为云PaaS产品司理介绍说,“咱们凭仗在云化方面的堆集和才能,完成了大规模分布式处理才能和功率的提高。针对漏报,在很多借鉴商业化东西和开源东西,以及自研东西的成功经历的基础上,咱们不断开拓立异,有用提高查看才能;关于误报问题,结合华为技能专家、高校的科研成果,使用精准的智能剖析,提高剖析引擎的精准率。举例来说,华为内部每天扫描500亿-1000亿行代码,沉积为一个巨大的前史信息数据库,结合AI技能,能够大幅提了自研引擎的准确度。上述这些都是华为云CodeArts Check差异化才能的详细体现。”

华为事务线很多,具有海量的代码查看需求,而且对产品质量始终保持着极高的灵敏度和重视程度。从这个视点说,华为本身便是催熟代码查看东西的一个宝库

例如,华为云CodeArts Check中选用的中心自研引擎,便是华为在吃自己的“狗粮”。这种“狗粮”吃得越多,CodeArts Check本身的才能和水平就越高。

别的,工程化才能也是华为云CodeArts Check的中心特点之一,交融了华为30堆集的产品开发经历、产品开发进程、质量保证进程,能够更好地协助客户在全东西链上复用华为的开发经历,事半功倍。

比较商场上现有的其他代码查看东西,华为云CodeArts Check除了在技能和功用上有自己共同的立异之外,在企业文明、标准、流程等方面相同见识深厚,而且匠心独运。

在业界中,CleanCode是一个老练的概念,本质是追求代码的简练化。根据对软件质量的严苛要求,一同参阅业界的相关标准和很多成功实践,华为对CleanCode做出了进一步解读和扩展,即“可读性、可维护性、安全性、牢靠性、可测验性、高效性、可移植性”七大质量特征。

据介绍,华为公司自上而下,从多个维度对七大质量特征进行解读和剖析,经过对应的代码事例和用例完成落地,而且供给主动衡量的办法和东西,保证每条产品线都有对应的组织依此对各个层级进行赋能。每条产品线还会结合本身的实践需求,拟定详细的计划,保证CleanCode实在有用地落地。

特别值得一提的是,除了不断增强代码查看东西本身的才能以外,华为云CodeArts Check还形成了独有的3级查看系统和3层运营系统。3+3的运营能够立体化、最大极限地保证查看东西使用到位。三层运营意味着不只要把东西做到好用,还要让用户将东西用好。

因而,从公司层到各个产品线,再到详细的产品版别层面,华为都供给了分层的东西才能。把握不同才能模型的专家经过分工协作,在各个层面拟定出匹配不同产品形态的东西使用策略,做到量才录用,物尽其用,最终目的仍是服务好开发人员。

“表里”兼备 质量与功率兼得

华为云CodeArts Check服务已于2023年1月12日正式上线。据了解,华为云CodeArts Check现在不只支撑着华为15万研制人员、日均扫描逾500亿行的代码查看工作,而且也广泛使用于能源、物流等企业,服务新闻媒体及广阔开发者,为企业生产高质量且安全的软件保驾护航。

已经在华为使用并得到成功验证的CodeArts Check不只适用于大型企业的超大规模开发环境,而且由于其具有分层的才能和易用性,能够很好地适配不同开发环境,即使是一般开发者也能一键式开箱即用。凭仗杰出的工程化才能,CodeArts Check既能够无缝连接华为自研的东西,还能灵敏地与业界通用的东西无缝集成,每天履行几百亿行代码查看轻而易举。

“自己做的降落伞自己先跳”,这是华为一惯的作风和传统,在代码查看方面当然也不例外。举例来说,华为参阅业界实践、ISO标准拟定了华为各类开发言语的编程标准,清晰开发阶段落地遵照编程标准的活动要求,以CodeArts Check服务华为的开发人员,支撑30+言语,掩盖各类标准40+;而且经过“3+3”运营,让产品在保证遵照编程标准的一同选取最适合自己的查看规矩进行扫描,并经过数据驱动运营,协助公司、产品线、产品分层运营,使得代码查看活动落地可视、可办理。

今日,高质量的产品已成为客户愿买、敢买和政府承受、信赖华为的基本条件。华为的产品和解决方案已在全球170多个国家安全安稳运转,堆集和赢得了全球数万客户的信赖。2019年3月,华为欧洲安全通明中心在比利时建立,其自研安全查看引擎与业界优异东西一同,支撑了三家欧美独立评价组织对华为产品代码的安全评价,效果十分好。编写好代码能有用减少缝隙,下降系统脆弱性,是达成高质量产品的中心环节,也是华为始终坚守的信念。

华为云CodeArts Check服务商业用户的一个典型事例便是我国经济信息社(以下简称“中经社”)。

中经社是新华社旗下专业承当经济信息服务事务的直属组织,其综合信息服务系统遍布全国,并掩盖全球180个国家和地区。中经社与许多不同的软件开发商协作,由于研制标准不一致,软件开发商独立研制,使得各开发商的研制质量很难一致保证,协同功率低下。

中经社依托华为云CodeArts Check,经过研制运维一体化,标准研制进程,提高研制功率,完成质量活动从布置测验延伸到代码标准、安全查看。其中,代码查看主动触发,完成了代码问题解决前移,研制交给质量提高50%

别的,华为云CodeArts Check还支撑许多大型开源社区展开代码查看工作,包括鸿蒙社区、码云等。以鸿蒙社区为例,每周支撑运转近2万个使命查看,代码扫描量超越300亿行。

渠道+生态,更好地服务广阔开发者,这是华为云CodeArts Check的初衷。华为云期望凭借CodeArts Check渠道,供给敞开、集成的才能,与生态同伴协作协同,为企业和开发者供给组合的优质服务。华为云CodeArts Check还推出了免费套餐,五人以下的团队能够免费使用。别的,华为云还将连续推出丰厚的训练课程,对开发者进行赋能,并在各技能社区中加强CodeArts Check的推行,共建代码查看的良好生态。

未来,华为云CodeArts Check将继续增强主动修正和代码深度安全查看才能,并进一步提高渠道和引擎的敞开性和扩展性,让开发者能够愈加聚集软件功用的开发,真实做到统筹质量和功率,更好地助力企业商业成功。

点击重视,第一时刻了解华为云新鲜技能~