dsoftbus_safety_guard
npx skills add https://github.com/openharmonyinsight/openharmony-skills --skill dsoftbus_safety_guard
Agent 安装分布
Skill 文档
软æ»çº¿å®å ¨å«å£« – 代ç å®¡æ¥æè½
è§¦åæ¡ä»¶
â ï¸ æ¤æè½ä» å¨ç¨æ·è¾å ¥å 嫔软æ»çº¿å®å ¨å«å£«”æ¶æä¼è¢«è°ç¨
触å示ä¾ï¼
软æ»çº¿å®å ¨å«å£« 请审æ¥è¿ä¸ªæä»¶ï¼D:\code\example.c请使ç¨è½¯æ»çº¿å®å ¨å«å£«æ£æ¥è¿ä¸ªç®å½è½¯æ»çº¿å®å ¨å«å£« æ£è§lnn_lane_dfx.cæä»¶
æè½æ¦è¿°
æ¬æè½æ¯ OpenHarmony distributed soft bus (dsoftbus) éä¿¡ç»ä»¶çä¸ç¨ä»£ç 审æ¥å·¥å ·ï¼æ¶µçï¼
- æ¥å¿è§èæ£æ¥ï¼1æ¡æ ¸å¿è§å
- å®å ¨ç¼ç æ£æ¥ï¼40+æ¡è§åï¼è¦ç11大类å«
- éç¨ä»£ç è´¨éæ£æ¥ï¼ä»£ç å¤æåº¦ãå¯è¯»æ§ãå¹¶åå®å ¨ç
- è·¨æä»¶è°ç¨åæï¼è°ç¨é¾è¿½è¸ªãèµæºä¼ éãæ°æ®æµåæ
- æ§å¶æµåæï¼è·¯å¾ææåæãä¸å¯è¾¾ä»£ç æ£æµ
â ï¸ æ ¸å¿ååï¼æ¬æè½ä¸ºåªè¯»ä»£ç 审æ¥å·¥å ·ï¼ä» åæä»£ç å¹¶çææ¥åï¼ä¸ä¿®æ¹ä»»ä½æºæä»¶ã
éç¨åºæ¯
- OpenHarmony dsoftbus ç»ä»¶ä»£ç
- C/C++ ç³»ç»çº§é信代ç
- æ¶å IPCãç½ç»éä¿¡ãå¤çº¿ç¨ç代ç
- éè¦ä¸¥æ ¼æ¥å¿è§èåå®å ¨ç¼ç ç代ç
å¿«éåèï¼å ³é®è§åç´¢å¼
æ ¹æ®ä»£ç ç¹å¾å¿«éå®ä½ç¸å ³è§åï¼
| 代ç ç¹å¾ | ç¸å ³è§å |
|---|---|
| 彿°è¿å SOFTBUS_ERR | æ¥å¿è§è-1 |
æéä½è¿ç® (&, |, ^, ~, <<, >>) |
æéå®å ¨-1, æ´æ°è¿ç®-2 |
*ptr æ ptr-> ä½¿ç¨ |
æéå®å ¨-3, 临æ¶åé-1 |
arr[index] è®¿é® |
æ°ç»ä¸æ -1,2 |
SoftBusMutexLock/SoftBusMutexUnlock |
é管ç-1,2,3 |
SoftBusSocketCreate/SoftBusSocketClose |
fd管ç-1,2 |
malloc/free, new/delete |
å å管ç-1~11 |
HILOG_INFO æå°ææä¿¡æ¯ |
ææä¿¡æ¯-1,2,3 |
| – | æ ç¬¦å·æ°éå (i--) |
memcpy_s, strcpy_s ç |
å®å ¨å½æ°-1,2 |
è·¯å¾æä½ (., ..) |
å¤é¨è¾å ¥-1 |
| IPC æ¥å£æ°å¢ | æéæ ¡éª-1 |
ð 详ç»è§å说æ
æ¯ä¸ªè§åç详ç»è§£éã代ç 示ä¾åä¿®å¤æ¹æ¡è¯·æ¥çï¼
- è§å详解ä¸ç¤ºä¾ – 40+æ¡è§åç宿´ææ¡£
- æ¯æ¡è§åçé®é¢æè¿°ãé£é©ç级ãé®é¢ç¤ºä¾ãä¿®å¤æ¹æ¡ãæ£æ¥è¦ç¹
- å å«å®æ´ä»£ç 示ä¾åæä½³å®è·µ
- å 嫿 ¼å¼åæå°ç±»åå¹é 表å常ç¨å®å ¨å½æ°å表
ð·ï¸ è§ååç±»ï¼å¿«éç´¢å¼ï¼
ð¡ å¿«éå®ä½: ç¹å»æ¯ä¸ªè§ååç龿¥å¯æ¥ç详ç»è¯´æå代ç 示ä¾
1. æ¥å¿è§èï¼1æ¡ï¼
- ç¦æ¢è¿å SOFTBUS_ERR â 详ç»è¯´æ
2. æéå®å ¨ï¼4æ¡ï¼
- ç¦æ¢æéä½è¿ç® â 详ç»è¯´æ
- æ£æ¥ sizeof ä½¿ç¨ â 详ç»è¯´æ
- 空æéè§£å¼ç¨æ£æ¥ â 详ç»è¯´æ
- IPC ç»æå¤ç©º â 详ç»è¯´æ
3. 临æ¶åéï¼3æ¡ï¼
- æéåéåå§å â 详ç»è¯´æ
- èµæºæè¿°ç¬¦åå§å â 详ç»è¯´æ
- bool åéåå§å â 详ç»è¯´æ
4. æ°ç»ä¸æ ï¼2æ¡ï¼
- æ°ç»è¶çé£é© â 详ç»è¯´æ
- å¤é¨è¾å ¥ä¸æ æ ¡éª â 详ç»è¯´æ
5. é管çï¼3æ¡ï¼
- Lock/Unlock æå¯¹ä½¿ç¨ â 详ç»è¯´æ
- éåéä¸è´æ§ â 详ç»è¯´æ
- ææè¿åè·¯å¾éæ¾é â 详ç»è¯´æ
6. fd 管çï¼2æ¡ï¼
- SocketCreate/Close æå¯¹ä½¿ç¨ â 详ç»è¯´æ
- fd æ£ç¡®å ³é â 详ç»è¯´æ
7. å å管çï¼11æ¡ï¼
- ç³è¯·å大å°åæ³æ§æ ¡éª â 详ç»è¯´æ
- SoftBusMalloc/SoftBusCalloc ä¸ SoftBusFree æå¯¹ä½¿ç¨ â 详ç»è¯´æ
- new ä¸ delete æå¯¹ä½¿ç¨ â 详ç»è¯´æ
- å åç³è¯·åå¤ç©º â 详ç»è¯´æ
- å ¨å±åééæ¾å置空 â 详ç»è¯´æ
- 循ç¯ä½éæ¾å置空 â 详ç»è¯´æ
- ç¹å®èµæºç®¡çï¼regcomp/regfree, cJSON_Parse/Deleteçï¼ â 详ç»è¯´æ
8. ææä¿¡æ¯ï¼3æ¡ï¼
- ç¦æ¢æå°å¯é¥ãè·¯å¾ãå°åç â 详ç»è¯´æ
- å æ å¯é¥ä½¿ç¨åæ¸ é¶ â 详ç»è¯´æ
- å¿ååæå°æææ è¯ç¬¦ â 详ç»è¯´æ
9. æ´æ°è¿ç®ï¼2æ¡ï¼
- 溢åºãå转ãé¤é¶é£é© â 详ç»è¯´æ
- æç¬¦å·æ´æ°ä½è¿ç®ç¦æ¢ â 详ç»è¯´æ
10. 循ç¯åéï¼2æ¡ï¼
- æ ç¬¦å·æ°æ»å¾ªç¯ â 详ç»è¯´æ
- å¤é¨æ°æ®æ§å¶å¾ªç¯æ ¡éª â 详ç»è¯´æ
11. å®å ¨å½æ°ï¼2æ¡ï¼
- å®å ¨å½æ°è¿å弿£æ¥ â 详ç»è¯´æ
- ç¼å²åºå¤§å°ä¸è´æ§ â 详ç»è¯´æ
12. æéæ ¡éªï¼1æ¡ï¼
- æ°å¢ SDK IPC æ¥å£æéæ ¡éª â 详ç»è¯´æ
13. å¤é¨è¾å ¥æ ¡éªï¼4æ¡ï¼
- è·¯å¾è§èå â 详è§
- TLV è§£æé¿åº¦åæ³æ§ â 详è§
- æº buffer å®é 大尿£æ¥ â 详è§
- 宿´æ ¡éªæ¹æ¡ â 详è§
14. å¤é¨æ°æ®æææ§ï¼3æ¡ï¼
- åºäºå¤é¨è¾å ¥çå åæ³/å åç³è¯·æ ¡éª â 详è§
- é»è®¤é¿åº¦æ ¡éª â 详è§
- TLV æ ¼å¼é¿åº¦æ ¡éª â 详è§
15. 常è§é®é¢ï¼5æ¡ï¼
- å¼å¸¸åæ¯èµæºéæ¾ â 详è§
- å®å®ä¹èµæºæ³æ¼ â 详è§
- 彿°è¿åå¼ä¸è´æ§ â 详è§
- æ ¼å¼åæå°ç±»åå¹é â 详è§
- ç»æä½åèå¯¹é½ â 详è§
代ç 审æ¥å·¥ä½æµ
ç¬¬ä¸æ¥ï¼äº¤äºå¼éæ©æ£è§èå´
åºæ¯Aï¼ç¨æ·æå®è·¯å¾
- æ£æ¥è¯¥è·¯å¾ä¸æ¯å¦æä¿®æ¹ï¼
git status --porcelain <path> - 妿æä¿®æ¹ï¼æä¾é项ï¼
- å ¨éæ£è§è¯¥è·¯å¾ææä»£ç
- å¢éæ£è§ä¿®æ¹ç代ç ï¼å ±N个æä»¶ï¼
- 妿æ ä¿®æ¹ï¼ç´æ¥æ§è¡å ¨éæ£è§
åºæ¯Bï¼ç¨æ·æªæå®è·¯å¾
- æ£æ¥å½åä»åºæ¯å¦æä¿®æ¹ï¼
git status --porcelain - æä¾é项ï¼
- æ£è§å ¨ä»ä»£ç
- æå®æ£è§è·¯å¾
- æ£è§æ¬å°ä¿®æ¹ç代ç ï¼å ±N个æä»¶ï¼
- æ ¹æ®ç¨æ·éæ©æ§è¡
ç¬¬äºæ¥ï¼ä»£ç è§èæ£æ¥
æç §40+æ¡è§åéé¡¹æ£æ¥ï¼åèï¼
- è§åè¯¦è§£ææ¡£ – æ¯æ¡è§åç详ç»è¯´æå代ç 示ä¾
- ä½¿ç¨ Grep å·¥å ·æç´¢è¿è§æ¨¡å¼
- ç»åä¸ä¸æåæï¼é¿å 误æ¥
ç¬¬ä¸æ¥ï¼è·¨æä»¶è°ç¨åæ
æ ¸å¿è½åï¼åæå½æ°è°ç¨é¾ï¼è¿½è¸ªè·¨æä»¶çæ°æ®æµåèµæºä¼ é
- è°ç¨å¾æå»º
- è·¨æä»¶èµæºè¿½è¸ªï¼malloc/freeå离ï¼
- è·¨æä»¶æ°æ®æµåæ
- è·¨æä»¶é误å¤ç
- å ¨å±åéè·¨æä»¶è®¿é®
ç¬¬åæ¥ï¼æ§å¶æµåæ
æ ¸å¿è½åï¼åæä»£ç æ§è¡è·¯å¾ï¼è¯å«ä¸å¯è¾¾ä»£ç åè·¯å¾ææé®é¢
- æ§å¶æµå¾æå»º
- ä¸å¯è¾¾ä»£ç æ£æµ
- è·¯å¾ææåæ
- æªåå§ååéåæ
- èµæºéæ¾è·¯å¾åæ
ç¬¬äºæ¥ï¼çæä¿®å¤å»ºè®®
â ï¸ éè¦éå¶ï¼ä» çæä¿®å¤å»ºè®®ä»£ç å°æ¥åä¸ï¼ä¸¥ç¦ç´æ¥ä¿®æ¹æºæä»¶
对æ¯ä¸ªé®é¢æä¾ï¼
- 宿´ç彿°æä»£ç åä¿®å¤ç¤ºä¾
- ä¿®æ¹åå æ³¨é
- å¤ç§ä¿®å¤æ¹æ¡ï¼å¦æï¼
ç¬¬å æ¥ï¼çææ£è§æ¥å
å建æ¥åç®å½ï¼d:/code-review-YYYYMMDD-HHMMSS/
æ¥åæä»¶ï¼
code_review_report.md– 宿´å®¡æ¥æ¥åcode_fixes.patch– ææä¿®å¤ä»£ç ï¼Git patchæ ¼å¼ï¼statistics.json– ç»è®¡æ°æ®
常è§éè¯¯éæ¥è¡¨
ð¡ è¯¦ç»æ£æ¥æ¹æ³: æ¯ç§é误模å¼çè¯¦ç»æ£æ¥æ¹æ³ã代ç 示ä¾åä¿®å¤æ¹æ¡ï¼è¯·æ¥ç æ£æ¥æ¸ å
| éè¯¯æ¨¡å¼ | å±é©ç级 | å¿«éæ£æµ | 详è§ç« è |
|---|---|---|---|
| 空æéè§£å¼ç¨ | ð´ 严é | *ptr æ ptr-> åæ NULLæ£æ¥ |
æéå®å ¨-3 |
| éæªéæ¾ | ð´ 严é | returnåæªè°ç¨Unlock | é管ç-1 |
| å åæ³æ¼ | ð´ 严é | mallocæªé 对free | å å管ç-2 |
| ææä¿¡æ¯æ³é² | ð´ 严é | æ¥å¿æå°å¯é¥/udid | ææä¿¡æ¯-1 |
| æ°ç»è¶ç | ð´ 严é | arr[index] æªéªè¯èå´ |
æ°ç»ä¸æ -1 |
| æ ç¬¦å·æ»å¾ªç¯ | ð´ 严é | uint32_t i-- |
循ç¯åé-1 |
| æéä½è¿ç® | ð¡ è¦å | ptr & mask |
æéå®å ¨-1 |
| æ´æ°æº¢åº | ð¡ è¦å | size + offset æªæ£æ¥ | æ´æ°è¿ç®-1 |
| è¿åSOFTBUS_ERR | ð¡ è¦å | return SOFTBUS_ERR | æ¥å¿è§è-1 |
| æªåå§ååé | ð¡ è¦å | å£°ææªèµåå¼ | 临æ¶åé-1 |
æ£æ¥åå
ä¸ä¸æåæ
- æ£æ¥æ¶è¦çä¸ä¸æï¼ç¡®è®¤æ¯å¦å·²æé²æ¤æªæ½
- é¿å 误æ¥ï¼å¦ï¼å ¨å±åéå¯è½å¨å«å¤åå§åï¼
çµæ´»è¿ç¨
- é¤40+æ¡æç¡®å®ä¹è§åå¤ï¼è¿éè¿è¡éç¨ä»£ç è´¨éæ£æ¥
- 代ç å¤æåº¦ãå¯è¯»æ§ãå¹¶åå®å ¨ãæ§è½é®é¢ç
éç¹å ³æ³¨
- å¤çå¤é¨è¾å ¥ç代ç è·¯å¾
- å®å®ä¹ä¸çèµæºä½¿ç¨
- æ¡ä»¶ç¼è¯ä¸çé®é¢ä»£ç
- é«é£é©å®å ¨é®é¢ï¼ç©ºæéãå åæ³æ¼ãææä¿¡æ¯æ³é²ï¼
ä¼å 级æåº
å®å
¨ç¼ç é®é¢ > æ¥å¿è§èé®é¢
严éé®é¢ > è¦åé®é¢ > æç¤ºé®é¢
æ ¸å¿éå¶
â ï¸ ä¸¥ç¦ä¿®æ¹æºä»£ç ï¼
- æ¬æè½åªè¯»åååæä»£ç
- çæä¿®å¤å»ºè®®ä» ç¨äºæ¥å
- ç»ä¸ç´æ¥ä¿®æ¹ä»»ä½æºæä»¶
- åªè¯»æä½ï¼ä» ä½¿ç¨ ReadãGrepãGlob çåªè¯»å·¥å ·
ð åèææ¡£
详ç»è§å说æ
- è§å详解ä¸ç¤ºä¾ – 40+æ¡è§åç详ç»è§£éå代ç 示ä¾
- æ¯æ¡è§åçé®é¢æè¿°ãé£é©ç级ãé®é¢ç¤ºä¾ãä¿®å¤æ¹æ¡ãæ£æ¥è¦ç¹
- å å«å®æ´ä»£ç 示ä¾åæä½³å®è·µ
- å 嫿 ¼å¼åæå°ç±»åå¹é 表å常ç¨å®å ¨å½æ°å表
éå èµæº
- 常è§éè¯¯éæ¥è¡¨ – å¿«éå®ä½é误模å¼
- ä½¿ç¨æå·§ – å¦ä½ææä½¿ç¨æ¬æè½
ä½¿ç¨æå·§
- å¿«éå®ä½é®é¢ï¼ä½¿ç¨”å¿«éåè”è¡¨æ ¼æ ¹æ®ä»£ç ç¹å¾æ¥æ¾ç¸å ³è§å
- æ·±å
¥å¦ä¹ è§åï¼é
读
references/security_rules_explained.mdäºè§£æ¯æ¡è§åç详ç»è¯´æå代ç ç¤ºä¾ - å类审æ¥ï¼æ ¹æ®”è§ååç±»”æç±»å«éé¡¹æ£æ¥ï¼é¿å éæ¼
- ä¼å å¤ç严éé®é¢ï¼åè”常è§éè¯¯éæ¥è¡¨”ä¼å ä¿®å¤é«å±é®é¢
- 使ç¨å·¥ä½æµç¨ï¼æç §”代ç 审æ¥å·¥ä½æµ”ç³»ç»æ§è¿è¡å®¡æ¥
æ¥åè¦æ±
- æ¥åèªå¨çæï¼å®¡æ¥å®æåèªå¨å¨
d:/code-review-æ¶é´æ³/ç®å½çææ¥å - æ¥åç®å½æ ¼å¼ï¼ä½¿ç¨
YYYYMMDD-HHMMSSæ ¼å¼çæ¶é´æ³ - æä»¶ç¼ç ï¼æ¥åæä»¶ä½¿ç¨ UTF-8 ç¼ç ï¼ç¡®ä¿ä¸ææ£å¸¸æ¾ç¤º
- ä¿®å¤ä»£ç ä» ä¾åèï¼ææä¿®å¤ä»£ç åªåºç°å¨æ¥åæä»¶ç代ç åä¸ï¼ä¸åå ¥æºä»£ç ç®å½