1996年,歐洲最新的無人衛星發射火箭阿麗亞娜5號在首次發射后僅僅36秒,工程師就不得不按下了自毀按鈕。
事后經分析查明,由于它重用了其前身阿麗亞娜4號的系統軟件,發動機遭遇了之前沒有被發現的漏洞,系統軟件試圖將一個64位的數字塞入16位的空間,由此產生的整形溢出問題導致了主計算機和備份計算機的崩潰。
一個小小的軟件缺陷,讓研發成本近80億美元,并攜帶著造價5億美元衛星的阿麗亞娜5號瞬間灰飛煙滅。
遺憾的是,這并不是個例。縱觀歷史,由于軟件質量問題導致的“黑天鵝事件”不勝枚舉,云服務宕機、金融交易失敗、數據泄露等,給社會和用戶造成了無法挽回的損失。事實上,軟件存在的質量缺陷無法100%避免。因此,只有通過更加全面、嚴格、高效、安全的代碼檢查服務,才能最大程度地降低風險,使得軟件開發過程在成本、進度和質量上得到充分保障。
國外先進的代碼檢查軟件和服務雖多,但因種種原因不能在中國全面落地,或在某些方面存在局限性,并不能完全滿足中國客戶的實際需求。另外,在Gartner應用安全測試魔力象限中,至今尚無中國企業能夠躋身領導者象限。那么,誰能打破行業堅冰,誰能更好地在軟件開發階段就將質量與安全隱患消滅于無形?
華為云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也開始面向全公司開發人員進行推廣普及。
此外,華為內部多種多樣的應用場景,讓開發團隊能夠不斷補強、夯實代碼檢查的基本技術與能力,而不僅限于簡單的詞法、語法分析這樣的檢查。如今,自研工具已經成了華為代碼檢查的核心力量。
歷史上,華為的各個業務部門,比如終端、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代碼檢查插件,并與代碼倉協同支持代碼提交時自動檢查,與流水線協同支持軟件全量代碼檢查,三層防范代碼缺陷引入。
“對于代碼檢查工具來講,我們最關注的一是效率,二是誤報和漏報問題。”華為云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將持續增強自動修復和代碼深度安全檢查能力,并進一步提升平臺和引擎的開放性和擴展性,讓開發者能夠更加聚焦軟件功能的開發,真正做到兼顧質量和效率,更好地助力企業商業成功。
審核編輯黃宇
-
華為云
+關注
關注
3文章
2445瀏覽量
17410
發布評論請先 登錄
相關推薦
評論