色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

探究Harmony底座OpenHarmony的代碼質量改進

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

作者 |給你小魚干小編 | 吃不飽 提到Harmony OS,想必大家并不陌生。其底座OpenHarmony是由華為捐出的OpenHarmony系統,并且由開放原子開源基金會孵化及運營, 目標是面向全場景、全連接、全智能時代, 搭建一個智能終端設備操作系統的框架和平臺, 促進萬物互聯產業的繁榮發展[ 出自《OpenHarmony - 應用開發入門指南》。]。數月前,華為再度突破新的領域——與國航簽約,華為將助力國航在以OpenHarmony為底座的HarmonyOS框架上構建應用/服務。作為汽車行業的新勢力,華為在汽車領域擁有卓越的表現,市面上很多汽車已將Harmony OS作為其車機系統。

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


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

搭建Docker環境

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

編譯源碼

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

進入源碼根目錄,執行hb set,根據提示選擇wifiiot_hispark_pegasus工程。

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

執行hb build -f編譯wifiiot_hispark_pegasus工程。顯示build success說明編譯成功。

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

執行如下命令創建Klocwork工程openharmony_test:

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

Klocwork Validate平臺是一個集中存儲分析數據、趨勢、度量和整個組織代碼庫配置的平臺,可通過web瀏覽器訪問。我們來到web端Validate中就可以看到剛才所創建的工程openharmony_test。
842422d2-cd4b-11ed-ad0d-dac502259ad0.png

執行下面同步命令,將wifiiot_hispark_pegasus工程源碼同步到Klocwork的openharmony_test工程中來。

kwinject hb build -f

分析工程

執行分析前可在Validate中進行分析配置,勾選分析過程所需的規則。
84339ef6-cd4b-11ed-ad0d-dac502259ad0.png配置完成后執行下面命令開始分析:

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

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

將分析結果上傳到Validate

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

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

MISRA規則分析結果

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

CERT規則分析結果

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

Validate合規報告

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

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

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

Mandatory Rules

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

規則說明:

FUNCRET.GEN檢查器用于查找沒有return語句的非void函數。

違規源碼:

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

int32_t OH_HashMapCreate函數是非空函數,但返回空值,所以此處違規。

UNINIT.STACK.MUST: Uninitialized Variable.

規則說明:

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

違規源碼:

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

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

Required Rules

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

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

MISRA.GOTO: Goto statement is used

規則說明:

不得使用goto語句,因為無限制地使用goto語句會導致程序的非結構化和極難理解。

違規源碼:

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

第669行使用了goto語句,所以此處違規。


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

VA_UNUSED.GEN: Value is Never Used after Assignment.

規則說明:

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

違規源碼:

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

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

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.

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • OpenHarmony
    +關注

    關注

    25

    文章

    3713

    瀏覽量

    16256
  • Harmony
    +關注

    關注

    0

    文章

    52

    瀏覽量

    2601
收藏 人收藏

    評論

    相關推薦

    【「OpenHarmony開發與實踐 | 基于紅莓RK2206開發板」閱讀體驗】+初體驗2連發發

    啥也不說先上圖 對于《OpenHarmony開發與實踐 | 基于紅莓RK2206開發板》這本書的熱愛,簡直就像夏日里的一股清泉,讓人忍不住想要一探究竟! 這本書的排布,簡直就是一場視覺盛宴,章節
    發表于 09-18 18:01

    【龍芯2K0300蜂鳥板試用】OpenHarmony代碼

    收到龍芯2K0300蜂鳥開發板后,對開發板做了一些了解和研究,現將OpenHarmony代碼提供給大家測試,也希望大家能更多的認識龍芯2K0300蜂鳥開發板,下面先簡單介紹一下這塊開發板。 廣東
    發表于 09-18 11:42

    基于ArkTS語言的OpenHarmony APP應用開發:HelloOpenharmony

    開發板驗證通過,具體代碼可參考:https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk3568-openharmony/tree/master
    發表于 09-14 12:47

    高文院士:低空經濟“起飛”,要筑牢這三個“底座

    代表,圍繞“數字低空”全面探討數字底座如何為低空經濟的發展保駕護航。 中國工程院院士、鵬城實驗室主任、廣東院士聯合胡高文在會上表示,推動低空經濟高質量發展, 要筑牢三個“底座”,即政策“底座
    的頭像 發表于 08-06 09:20 ?527次閱讀

    DevOps中的質量門工作原理,以及靜態代碼分析Klocwork和Perforce Helix QAC在質量門中的實踐應用

    質量門”正如其名:它們在軟件開發生命周期(SDLC)的各個階段充當質量里程碑(或 "門檻"),防止不良代碼通過,從而確保交付高質量的軟件。 閱讀本文,您將了解什么是
    的頭像 發表于 07-29 15:12 ?389次閱讀

    400萬!深開鴻OpenHarmony主倉代碼貢獻量再創里程碑!

    2024年7月8日,據OpenAtomOpenHarmony(以下簡稱“OpenHarmony”)官網顯示,深開鴻在OpenHarmony社區主倉代碼貢獻總量超過400萬行,在華為以外
    的頭像 發表于 07-09 08:33 ?349次閱讀
    400萬!深開鴻<b class='flag-5'>OpenHarmony</b>主倉<b class='flag-5'>代碼</b>貢獻量再創里程碑!

    直擊HDC2024:海思攜手OpenHarmony,產品力+生態圈引爆AIoT場景應用

    海思攜手OpenHarmony,其構成的核心競爭力是什么?帶來哪些物聯網場景體驗的提升?海思與OpenHarmony合作有哪些階段性的成果?跟隨電子發燒友記者的腳步,我們一起來海思+OpenHarmony展區一
    的頭像 發表于 06-28 09:15 ?4707次閱讀
    直擊HDC2024:海思攜手<b class='flag-5'>OpenHarmony</b>,產品力+生態圈引爆AIoT場景應用

    基于STM32單片機的電腦底座系統設計

    電腦智能底座系統可以監測和控制底座的工作狀態,包括溫度控制和角度調節功能,提升了底座的智能化和實用性,為用戶提供了更加舒適和便利的使用體驗。
    的頭像 發表于 06-24 09:58 ?482次閱讀
    基于STM32單片機的電腦<b class='flag-5'>底座</b>系統設計

    報名開啟!第二屆OpenHarmony開發者大會2024重磅來襲!

    操作系統根社區”,截至2024年4月25日,OpenHarmony版本迭代到 4.1 Release 版本,已有超過7500名貢獻者、70家共建單位,累計產出1億多行代碼;社區已有293家伙伴,構建
    發表于 05-14 15:23

    【開源鴻蒙】下載OpenHarmony 4.1 Release源代碼

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

    OpenHarmony南向能力征集令

    、DRM等; 3、芯片接入OpenHarmony的時候有什么困難,是否有改進建議? 大家的意見,會反饋給OpenHarmony開發團隊。 可以在 Laval社區原帖評論區 留言。
    發表于 04-09 15:32

    鴻蒙開發學習:【OpenHarmony HAR】

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

    [鴻蒙]OpenHarmony4.0的Rust開發

    OpenHarmony 為了集成 C/C++ 代碼和提升編譯速度,使用了 GN + Ninja 的編譯構建系統。GN 的構建語言簡潔易讀,Ninja 的匯編級編譯規則直接高效。 為了在 OpenHarmony
    的頭像 發表于 02-26 17:28 ?877次閱讀
    [鴻蒙]<b class='flag-5'>OpenHarmony</b>4.0的Rust開發

    【鴻蒙】OpenHarmony 4.0藍牙代碼結構簡析

    OpenHarmony 4.0藍牙代碼結構簡析前言 OpenHarmony 4.0上藍牙倉和目錄結構進行一次較大整改,本文基于4.0以上版本對藍牙代碼進行分析,便于讀者快速了解和學習
    的頭像 發表于 02-26 16:08 ?1538次閱讀
    【鴻蒙】<b class='flag-5'>OpenHarmony</b> 4.0藍牙<b class='flag-5'>代碼</b>結構簡析

    open harmony照明開關應用介紹

    最近幾年,智能家居成為了人們日常生活中的熱門話題。其中,智能照明系統作為智能家居的重要組成部分之一,正在迅速流行起來。而今天我將為大家詳細介紹一款智能照明系統中的開關——open harmony照明
    的頭像 發表于 01-05 17:00 ?1121次閱讀
    主站蜘蛛池模板: 免费完整版观看| 九九久久久2| 又亲又揉摸下面视频免费看| 巨污全肉np一女多男| GOGOGO高清免费播放| 我和黑帮老大第365天第2季在线| 激情A片久久久久久久| 99re 这里只有精品| 沈芯语麻豆0076 视频| 精品一品国产午夜福利视频| 免费国产综合视频在线看| WWW国产亚洲精品久久久日本| 天美传媒果冻传媒入口视频| 精品亚洲视频在线观看| qvod电影资源| 亚洲精品高清中文字幕完整版| 免费人成网站永久| 国产精品人成在线播放新网站| 在线 亚洲 日韩 欧洲视频| 日本漫画母亲口工子全彩| 很黄很色60分钟在线观看| 99视频网址| 亚洲不卡高清免v无码屋| 年轻的老师5理伦片| 国产久久热99视频| 99pao成人国产永久免费视频| 午夜视频在线观看国产| 美女白虎穴| 国产午夜伦伦伦午夜伦| 99C视频色欲在线| 亚洲国语在线视频手机在线 | 麻豆第一区MV免费观看网站| 法国剧丝袜情版h级在线电影| 欲插爽乱浪伦骨| 色情www日本欧美| 老师掀开短裙让我挺进动态| 国产电影三级午夜a影院| 97草碰在线视频免费| 亚洲AV无码国产精品色午夜情| 嫩小xxxxbbbb| 国产最猛性XXXX69交|