精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探究Harmony底座OpenHarmony的代碼質(zhì)量改進(jìn)

北匯信息POLELINK ? 2023-04-03 15:23 ? 次閱讀

作者 |給你小魚(yú)干小編 | 吃不飽 提到Harmony OS,想必大家并不陌生。其底座OpenHarmony是由華為捐出的OpenHarmony系統(tǒng),并且由開(kāi)放原子開(kāi)源基金會(huì)孵化及運(yùn)營(yíng), 目標(biāo)是面向全場(chǎng)景、全連接、全智能時(shí)代, 搭建一個(gè)智能終端設(shè)備操作系統(tǒng)的框架和平臺(tái), 促進(jìn)萬(wàn)物互聯(lián)產(chǎn)業(yè)的繁榮發(fā)展[ 出自《OpenHarmony - 應(yīng)用開(kāi)發(fā)入門(mén)指南》。]。數(shù)月前,華為再度突破新的領(lǐng)域——與國(guó)航簽約,華為將助力國(guó)航在以O(shè)penHarmony為底座的HarmonyOS框架上構(gòu)建應(yīng)用/服務(wù)。作為汽車行業(yè)的新勢(shì)力,華為在汽車領(lǐng)域擁有卓越的表現(xiàn),市面上很多汽車已將Harmony OS作為其車機(jī)系統(tǒng)。

然而,OpenHarmony并不是專為汽車行業(yè)而研發(fā)。由于汽車行業(yè)的特殊性,車載軟件對(duì)代碼安全性的要求非常嚴(yán)格,在之前的文章中,我們使用了汽車行業(yè)主流的靜態(tài)測(cè)試工具QAC驗(yàn)證OpenHarmony的安全性,過(guò)了這么久,OpenHarmony代碼對(duì)汽車行業(yè)編碼規(guī)范的合規(guī)性是否有所提升呢?接下來(lái)本文將使用汽車行業(yè)的另一款權(quán)威靜態(tài)測(cè)試工具Klocwork,基于汽車行業(yè)內(nèi)的常用編碼規(guī)范MISRA C 2012(符合汽車功能安全要求,了解更多請(qǐng)見(jiàn)《帶你走近MISRA C 2012》)和CERT(符合網(wǎng)絡(luò)信息安全要求),對(duì)Harmony代碼的合規(guī)情況進(jìn)行測(cè)試。


本文對(duì)OpenHarmony主干源碼1348版本的wifiiot_hispark_pegasus工程進(jìn)行靜態(tài)測(cè)試
01編譯OpenHarmony
當(dāng)前階段,大部分的開(kāi)發(fā)板源碼還不支持在Windows環(huán)境下進(jìn)行編譯,如Hi3861、Hi3516系列開(kāi)發(fā)板,因此需使用Ubuntu的編譯環(huán)境對(duì)源碼進(jìn)行編譯。
而在虛擬機(jī)中搭建Hi3861開(kāi)發(fā)板環(huán)境步驟極為復(fù)雜,所以本文選擇在OpenHarmony為開(kāi)發(fā)者提供的Docker環(huán)境下進(jìn)行編譯,該方案在很大程度上簡(jiǎn)化了編譯前的環(huán)境配置。伴隨著越來(lái)越多的開(kāi)發(fā)者使用Docker作為其開(kāi)發(fā)環(huán)境,Klocwork也提供了Docker環(huán)境下靜態(tài)分析方案支持。

搭建Docker環(huán)境

在使用Docker環(huán)境前需要先完成以下操作:1、安裝Docker。2、獲取OpenHarmony源碼。具體操作請(qǐng)見(jiàn)官方文檔(閱讀原文查看)

編譯源碼

完成Docker環(huán)境搭建并獲取源碼后,我們就可以對(duì)源碼的wifiiot_hispark_pegasus工程進(jìn)行編譯了。具體步驟如下:

進(jìn)入源碼根目錄,執(zhí)行hb set,根據(jù)提示選擇wifiiot_hispark_pegasus工程。

83faa20e-cd4b-11ed-ad0d-dac502259ad0.png

執(zhí)行hb build -f編譯wifiiot_hispark_pegasus工程。顯示build success說(shuō)明編譯成功。

840a6b9e-cd4b-11ed-ad0d-dac502259ad0.png編譯的成功證明環(huán)境搭建成功,進(jìn)而可以順利進(jìn)行Klocwork靜態(tài)分析。02Klocwork靜態(tài)分析
Klocwork是一款針對(duì)開(kāi)發(fā)人員生產(chǎn)力、SAST和DevOps/DevSecOps的最佳靜態(tài)代碼分析工具,支持C、C++C#Java、JavaScript、Python和Kotlin,可以與CI/CD工具、容器、云服務(wù)和機(jī)器配置集成,使自動(dòng)化安全測(cè)試變得容易。下面是Klocwork測(cè)試OpenHarmony代碼的步驟。

執(zhí)行如下命令創(chuàng)建Klocwork工程openharmony_test:

kwadmin --url http://192.168.9.116:8089/ create-project openharmony_test

Klocwork Validate平臺(tái)是一個(gè)集中存儲(chǔ)分析數(shù)據(jù)、趨勢(shì)、度量和整個(gè)組織代碼庫(kù)配置的平臺(tái),可通過(guò)web瀏覽器訪問(wèn)。我們來(lái)到web端Validate中就可以看到剛才所創(chuàng)建的工程openharmony_test。
842422d2-cd4b-11ed-ad0d-dac502259ad0.png

執(zhí)行下面同步命令,將wifiiot_hispark_pegasus工程源碼同步到Klocwork的openharmony_test工程中來(lái)。

kwinject hb build -f

分析工程

執(zhí)行分析前可在Validate中進(jìn)行分析配置,勾選分析過(guò)程所需的規(guī)則。
84339ef6-cd4b-11ed-ad0d-dac502259ad0.png配置完成后執(zhí)行下面命令開(kāi)始分析:

kwbuildproject --url http://192.168.9.116:8089/openharmony_test ./kwinject.out --tables-directory ./Openharmony/my_tables

顯示下面結(jié)果表示分析成功。
84578708-cd4b-11ed-ad0d-dac502259ad0.png

將分析結(jié)果上傳到Validate

kwadmin --url http://192.168.110.110:8089/ load openharmony_test my_tables/

下面結(jié)果表示上傳成功:84783804-cd4b-11ed-ad0d-dac502259ad0.png03分析結(jié)果
來(lái)到Validate查看Klocwork分析結(jié)果。工程配置的詳細(xì)信息如下:84b8287e-cd4b-11ed-ad0d-dac502259ad0.png
wifiiot_hispark_pegasus工程工1652個(gè)文件,共分析了1557個(gè).c文件、95個(gè)系統(tǒng)頭文件,源碼共180720行,注釋共138844行。分析模塊類別為:C和C++分析、CERT分析以及MISRA分析。

MISRA規(guī)則分析結(jié)果

Category Details列舉了wifiiot_hispark_pegasus工程對(duì)MISRA規(guī)則違規(guī)情況的匯總:84d1886e-cd4b-11ed-ad0d-dac502259ad0.png違反Mandatory Rules規(guī)則數(shù)量排名前十的文件匯總:84e3daaa-cd4b-11ed-ad0d-dac502259ad0.png

CERT規(guī)則分析結(jié)果

列舉了wifiiot_hispark_pegasus工程對(duì)每條CERT規(guī)則違規(guī)情況的匯總:84f7a116-cd4b-11ed-ad0d-dac502259ad0.png違反每條CERT規(guī)則數(shù)量排名前十的文件匯總:85195e78-cd4b-11ed-ad0d-dac502259ad0.png

Validate合規(guī)報(bào)告

Validate可生成定制化合規(guī)報(bào)告。這里我選擇生成pdf形式的Generic合規(guī)報(bào)告,列舉出了違規(guī)情況詳情、規(guī)則的分類與其對(duì)應(yīng)的檢查器、違反規(guī)則源碼所在文件及行數(shù)。
852e3bf4-cd4b-11ed-ad0d-dac502259ad0.png8544aab0-cd4b-11ed-ad0d-dac502259ad0.png

下面我們選出部分違反的MISRA C 2012 with Amendment 2 (C11) certified與CERT規(guī)則進(jìn)行簡(jiǎn)單介紹:

MISRA C 2012規(guī)則分為三種不同類別:Mandatory(強(qiáng)制)、Required(要求)和Advisory(建議)

Mandatory Rules

FUNCRET.GEN: Non-void function does not return value.

規(guī)則說(shuō)明:

FUNCRET.GEN檢查器用于查找沒(méi)有return語(yǔ)句的非void函數(shù)。

違規(guī)源碼:

856207fe-cd4b-11ed-ad0d-dac502259ad0.png

int32_t OH_HashMapCreate函數(shù)是非空函數(shù),但返回空值,所以此處違規(guī)。

UNINIT.STACK.MUST: Uninitialized Variable.

規(guī)則說(shuō)明:

UNINIT.STACK.MUST檢查器查找變量未初始化的行為。

違規(guī)源碼:

8585ec00-cd4b-11ed-ad0d-dac502259ad0.png

第28行的變量vargs未初始化,所以此處違規(guī)。

Required Rules

MISRA.LOGIC.SIDEEFF: Right operand in a logical 'and' or 'or' expression contains side effects.

規(guī)則說(shuō)明:&&和||運(yùn)算符的右側(cè)操作數(shù)的求值取決于左側(cè)操作數(shù)的值。如果右邊的操作數(shù)包含副作用,那么這些副作用可能會(huì)發(fā)生,也可能不會(huì)發(fā)生,這可能與程序員的預(yù)期相反。如果程序員依賴于發(fā)生的副作用,則對(duì)其中一個(gè)邏輯運(yùn)算符的右手操作數(shù)的條件求值很容易導(dǎo)致問(wèn)題。
違規(guī)源碼859d28f2-cd4b-11ed-ad0d-dac502259ad0.png在162行中,將第118行的FOR_EACH_HC_VECTOR函數(shù)定義為一個(gè)for循環(huán),而在表達(dá)式index < (vec).size(&(vec)) && \ (iter = (vec).getp(&(vec), index))中,&&操作符的右操作數(shù)中發(fā)生了賦值運(yùn)算,導(dǎo)致該表達(dá)式具有副作用,所以此處違規(guī)。Advisory Rules

MISRA.GOTO: Goto statement is used

規(guī)則說(shuō)明:

不得使用goto語(yǔ)句,因?yàn)闊o(wú)限制地使用goto語(yǔ)句會(huì)導(dǎo)致程序的非結(jié)構(gòu)化和極難理解。

違規(guī)源碼:

85ad4098-cd4b-11ed-ad0d-dac502259ad0.png

第669行使用了goto語(yǔ)句,所以此處違規(guī)。


CERT C Recommendations: CERT MSC13-C: Detect and remove unused values

VA_UNUSED.GEN: Value is Never Used after Assignment.

規(guī)則說(shuō)明:

VA_UNUSED.GEN檢查器查找分配給局部變量的值,這些值在下一次賦值或函數(shù)結(jié)束之前從未使用過(guò)。

違規(guī)源碼:

85be5da6-cd4b-11ed-ad0d-dac502259ad0.png

第141行對(duì)變量sessionKey賦值,但后面未使用該變量,所以此處違規(guī)。

CERT C Recommendations: CERT EXP00-C: Use parentheses for precedence of operation

CERT.EXPR.PARENS: The precedence of operators within expressions should be made explicit.

規(guī)則說(shuō)明:運(yùn)算符在表達(dá)式中的優(yōu)先級(jí)應(yīng)該是顯式的。違規(guī)代碼:85ecfe4a-cd4b-11ed-ad0d-dac502259ad0.png第395行的表達(dá)式if (altGroup != NULL && AddStringToJson(reqParam, FIELD_ALTERNATIVE, altGroup) != HC_SUCCESS)優(yōu)先級(jí)不明確,所以此處違規(guī)。04總結(jié)
本文使用Klocwork對(duì)OpenHarmony部分代碼進(jìn)行靜態(tài)測(cè)試,我們了解了OpenHarmony對(duì)于汽車行業(yè)常用編碼規(guī)范的合規(guī)情況,同時(shí)也對(duì)MISRA與CERT編碼規(guī)范有了初步的認(rèn)識(shí)。通過(guò)此次分析我們不難看出,與過(guò)去的版本相比,OpenHarmony的代碼質(zhì)量在不斷提升。但對(duì)于想將OpenHarmony應(yīng)用于汽車行業(yè)的開(kāi)發(fā)者來(lái)說(shuō),還需要根據(jù)汽車行業(yè)的要求,對(duì)OpenHarmony代碼進(jìn)行調(diào)整,以符合汽車功能安全與信息安全編碼規(guī)范。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3660

    瀏覽量

    16154
  • Harmony
    +關(guān)注

    關(guān)注

    0

    文章

    52

    瀏覽量

    2589
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【「OpenHarmony開(kāi)發(fā)與實(shí)踐 | 基于紅莓RK2206開(kāi)發(fā)板」閱讀體驗(yàn)】+初體驗(yàn)2連發(fā)發(fā)

    啥也不說(shuō)先上圖 對(duì)于《OpenHarmony開(kāi)發(fā)與實(shí)踐 | 基于紅莓RK2206開(kāi)發(fā)板》這本書(shū)的熱愛(ài),簡(jiǎn)直就像夏日里的一股清泉,讓人忍不住想要一探究竟! 這本書(shū)的排布,簡(jiǎn)直就是一場(chǎng)視覺(jué)盛宴,章節(jié)
    發(fā)表于 09-18 18:01

    【龍芯2K0300蜂鳥(niǎo)板試用】OpenHarmony代碼

    收到龍芯2K0300蜂鳥(niǎo)開(kāi)發(fā)板后,對(duì)開(kāi)發(fā)板做了一些了解和研究,現(xiàn)將OpenHarmony代碼提供給大家測(cè)試,也希望大家能更多的認(rèn)識(shí)龍芯2K0300蜂鳥(niǎo)開(kāi)發(fā)板,下面先簡(jiǎn)單介紹一下這塊開(kāi)發(fā)板。 廣東
    發(fā)表于 09-18 11:42

    基于ArkTS語(yǔ)言的OpenHarmony APP應(yīng)用開(kāi)發(fā):HelloOpenharmony

    開(kāi)發(fā)板驗(yàn)證通過(guò),具體代碼可參考:https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk3568-openharmony/tree/master
    發(fā)表于 09-14 12:47

    400萬(wàn)!深開(kāi)鴻OpenHarmony主倉(cāng)代碼貢獻(xiàn)量再創(chuàng)里程碑!

    2024年7月8日,據(jù)OpenAtomOpenHarmony(以下簡(jiǎn)稱“OpenHarmony”)官網(wǎng)顯示,深開(kāi)鴻在OpenHarmony社區(qū)主倉(cāng)代碼貢獻(xiàn)總量超過(guò)400萬(wàn)行,在華為以外
    的頭像 發(fā)表于 07-09 08:33 ?324次閱讀
    400萬(wàn)!深開(kāi)鴻<b class='flag-5'>OpenHarmony</b>主倉(cāng)<b class='flag-5'>代碼</b>貢獻(xiàn)量再創(chuàng)里程碑!

    報(bào)名開(kāi)啟!第二屆OpenHarmony開(kāi)發(fā)者大會(huì)2024重磅來(lái)襲!

    操作系統(tǒng)根社區(qū)”,截至2024年4月25日,OpenHarmony版本迭代到 4.1 Release 版本,已有超過(guò)7500名貢獻(xiàn)者、70家共建單位,累計(jì)產(chǎn)出1億多行代碼;社區(qū)已有293家伙伴,構(gòu)建
    發(fā)表于 05-14 15:23

    【開(kāi)源鴻蒙】下載OpenHarmony 4.1 Release源代碼

    本文介紹了如何下載開(kāi)源鴻蒙(OpenHarmony)操作系統(tǒng) 4.1 Release版本的源代碼,該方法同樣可以用于下載OpenHarmony最新開(kāi)發(fā)版本(master分支)或者4.0 Release、3.2 Release等發(fā)
    的頭像 發(fā)表于 04-27 23:16 ?829次閱讀
    【開(kāi)源鴻蒙】下載<b class='flag-5'>OpenHarmony</b> 4.1 Release源<b class='flag-5'>代碼</b>

    OpenHarmony南向能力征集令

    、DRM等; 3、芯片接入OpenHarmony的時(shí)候有什么困難,是否有改進(jìn)建議? 大家的意見(jiàn),會(huì)反饋給OpenHarmony開(kāi)發(fā)團(tuán)隊(duì)。 可以在 Laval社區(qū)原帖評(píng)論區(qū) 留言。
    發(fā)表于 04-09 15:32

    鴻蒙開(kāi)發(fā)學(xué)習(xí):【OpenHarmony HAR】

    OpenHarmony js/ts三方庫(kù)使用的是OpenHarmony靜態(tài)共享包,即HAR(Harmony Archive),可以包含js/ts代碼、c++庫(kù)、資源和配置文件。通過(guò)HA
    的頭像 發(fā)表于 03-18 16:27 ?698次閱讀

    [鴻蒙]OpenHarmony4.0的Rust開(kāi)發(fā)

    OpenHarmony 為了集成 C/C++ 代碼和提升編譯速度,使用了 GN + Ninja 的編譯構(gòu)建系統(tǒng)。GN 的構(gòu)建語(yǔ)言簡(jiǎn)潔易讀,Ninja 的匯編級(jí)編譯規(guī)則直接高效。 為了在 OpenHarmony
    的頭像 發(fā)表于 02-26 17:28 ?806次閱讀
    [鴻蒙]<b class='flag-5'>OpenHarmony</b>4.0的Rust開(kāi)發(fā)

    【鴻蒙】OpenHarmony 4.0藍(lán)牙代碼結(jié)構(gòu)簡(jiǎn)析

    OpenHarmony 4.0藍(lán)牙代碼結(jié)構(gòu)簡(jiǎn)析前言 OpenHarmony 4.0上藍(lán)牙倉(cāng)和目錄結(jié)構(gòu)進(jìn)行一次較大整改,本文基于4.0以上版本對(duì)藍(lán)牙代碼進(jìn)行分析,便于讀者快速了解和學(xué)習(xí)
    的頭像 發(fā)表于 02-26 16:08 ?1492次閱讀
    【鴻蒙】<b class='flag-5'>OpenHarmony</b> 4.0藍(lán)牙<b class='flag-5'>代碼</b>結(jié)構(gòu)簡(jiǎn)析

    open harmony照明開(kāi)關(guān)應(yīng)用介紹

    最近幾年,智能家居成為了人們?nèi)粘I钪械臒衢T(mén)話題。其中,智能照明系統(tǒng)作為智能家居的重要組成部分之一,正在迅速流行起來(lái)。而今天我將為大家詳細(xì)介紹一款智能照明系統(tǒng)中的開(kāi)關(guān)——open harmony照明
    的頭像 發(fā)表于 01-05 17:00 ?1088次閱讀

    首屆Harmony班畢業(yè)生成為代碼頂級(jí)貢獻(xiàn)者!

    超過(guò)3萬(wàn)行代碼,和華為的5名開(kāi)發(fā)者一起登上由開(kāi)放原子開(kāi)源基金會(huì)OpenHarmony社區(qū)官方發(fā)布的頂級(jí)貢獻(xiàn)者榜單,在數(shù)千位代碼貢獻(xiàn)者中位列前10名。
    的頭像 發(fā)表于 12-11 17:47 ?386次閱讀
    首屆<b class='flag-5'>Harmony</b>班畢業(yè)生成為<b class='flag-5'>代碼</b>頂級(jí)貢獻(xiàn)者!

    OpenHarmony Meetup 2023北京站圓滿舉辦

    ,Meetup 活動(dòng)就是 OpenHarmony 社區(qū)與開(kāi)發(fā)者面對(duì)面進(jìn)行技術(shù)交流的舞臺(tái),我們?cè)竷A聽(tīng)來(lái)自開(kāi)發(fā)者的聲音,不斷完善和優(yōu)化 OpenHarmony 技術(shù)底座,推動(dòng) OpenHarmon
    發(fā)表于 11-29 09:51

    OpenHarmony亮相MTSC 2023 | 質(zhì)量&amp;效率共進(jìn),賦能應(yīng)用生態(tài)發(fā)展

    。論壇上大咖云集、精英齊聚,聚焦于分享 OpenHarmony 質(zhì)量保證生態(tài)系統(tǒng),包括基于 OpenHarmony 體系的自動(dòng)化測(cè)試方法和設(shè)計(jì)思路,以及 OpenHarmony 的性能
    發(fā)表于 11-28 15:41

    OpenHarmony亮相MTSC 2023 | 質(zhì)量&amp;效率共進(jìn),賦能應(yīng)用生態(tài)發(fā)展

    “軟件質(zhì)量保障體系和測(cè)試研發(fā)技術(shù)交流”為主要目的,旨在為行業(yè)搭建一個(gè)深入探討和交流的橋梁和平臺(tái)。OpenAtom OpenHarmony(簡(jiǎn)稱“OpenHarmony”)通過(guò)專場(chǎng)論壇議題分享和展區(qū)展品精彩
    的頭像 發(fā)表于 11-27 15:40 ?378次閱讀
    <b class='flag-5'>OpenHarmony</b>亮相MTSC 2023 | <b class='flag-5'>質(zhì)量</b>&amp;效率共進(jìn),賦能應(yīng)用生態(tài)發(fā)展