code-review-assistant
npx skills add https://github.com/iceleaf916/my-cc-plugins --skill code-review-assistant
Agent 安装分布
Skill 文档
Code Review Assistant
Overview
æä¾ç»æåç代ç å®¡æ ¸å·¥ä½æµç¨ï¼æ¯æä¸¤ç§å®¡æ ¸æ¨¡å¼ï¼
æ¬å° Git 模å¼
- å®¡æ ¸å½åææ° commit
- å®¡æ ¸æåçä¿®æ¹ (
git addçæä»¶) - å®¡æ ¸æªæåçä¿®æ¹ï¼å·¥ä½åºåæ´ï¼
- å®¡æ ¸æå® commit ç diff
Gerrit Review 模å¼
- éè¿ Gerrit Change ID è¿è¡ä»£ç å®¡æ ¸
- èªå¨è·å Change 详æ åæä»¶åæ´
- æ¯æèªå¨åå¸è¯å®¡å° Gerrit
æ¯æçè¯è¨ï¼
- Golangï¼å®æ´æ¯æï¼
- Qt/C++ï¼å®æ´æ¯æï¼
- Ansibleï¼å®æ´æ¯æï¼
Review è¯åè§å
| é®é¢ç±»å | 建议 Score | 说æ |
|---|---|---|
| æ é®é¢ | +1 | 代ç è´¨éä¼ç§ |
| ä» æ Nice to Have | -1 | ææ¹è¿ç©ºé´ä½ä¸å½±ååè½ |
| æ Should Fix | -2 | åºè¯¥ä¿®å¤çé®é¢ |
| æ Must Fix | -2 | å¿ é¡»ä¿®å¤ç严éé®é¢ |
ä½¿ç¨æ¹å¼
æ¬å° Git å®¡æ ¸ç¨ä¾
/code-review-assistant HEAD # å®¡æ ¸ææ° commit
/code-review-assistant --staged # å®¡æ ¸æåçä¿®æ¹
/code-review-assistant --unstaged # å®¡æ ¸æªæåçä¿®æ¹
/code-review-assistant HEAD~1 # å®¡æ ¸ä¸ä¸ä¸ª commit
/code-review-assistant abc1234 # å®¡æ ¸æå® commit hash
Gerrit Review ç¨ä¾
/code-review-assistant <change_id> # å®¡æ ¸ Gerrit Change
èªå¨åå¸è¯è®ºï¼ä» Gerrit 模å¼ï¼
å¦æç¨æ·æç¤ºè¯ä¸å å«æç¡®çåå¸è¯·æ±ï¼å¦”åå¸è¯è®º”ã”æäº¤è¯å®¡”ã”post review”ã”åå¸å° Gerrit”çå ³é®è¯ï¼ï¼skill ä¼èªå¨ä½¿ç¨ Gerrit MCP å·¥å ·åå¸å¸¦è¯åçè¯è®ºã
å®¡æ ¸èå´è§è
æ¯æçæ¬å° Git å®¡æ ¸èå´
| ç¨ä¾ | Git å½ä»¤ | 说æ |
|---|---|---|
| ææ° commit | HEAD |
å®¡æ ¸ææ°çæäº¤è®°å½ |
| ä¸ä¸ä¸ª commit | HEAD~1 æ HEAD^ |
å®¡æ ¸åæ°ç¬¬äºæ¬¡æäº¤ |
| æå® commit | <commit_hash> |
å®¡æ ¸æå®çææ¬¡æäº¤ |
| æåçä¿®æ¹ | --staged æ --cached |
å®¡æ ¸å·² git add 使ªæäº¤çåæ´ |
| æªæåçä¿®æ¹ | --unstaged æ --working |
å®¡æ ¸å·¥ä½åºçåæ´ |
| 两次 commit ä¹é´ | <commit_a>...<commit_b> |
å®¡æ ¸ä¸¤ä¸ª commit ä¹é´çå·®å¼ |
䏿¯æçå®¡æ ¸èå´
以ä¸èå´ä¸æ¯æï¼éè¦æéç¨æ·æä¾æ´åç¡®çèå´ï¼
- å¤ä¸ª commitï¼å¦
æè¿ç5次æäº¤ãæè¿10次commitãæææäº¤ - æå®èå´ç夿¬¡æäº¤ï¼å¦
HEAD~5..HEAD(é¤éç¨æ·æç¡®è¡¨ç¤ºå¯ä»¥æ¥å) - æ´ä¸ªä»åºåå²ï¼å¦
æ´ä¸ªåæ¯ãææåæ´ - 大éçè¿ç» commits
èå´éªè¯æµç¨
å½ç¨æ·ç»åºå®¡æ ¸èå´æ¶ï¼
- è¯å«å®¡æ ¸æ¨¡å¼ï¼æ¯æ¬å° Git è¿æ¯ Gerrit Change ID
- éªè¯èå´æææ§ï¼
- æ¬å° Gitï¼æ£æ¥æ¯å¦ä¸º commit hashã
HEADã--stagedã--unstagedç - Gerritï¼æ£æ¥æ¯å¦ä¸ºææç Change ID æ ¼å¼
- æ¬å° Gitï¼æ£æ¥æ¯å¦ä¸º commit hashã
- æ£æ¥èå´å¤§å°ï¼
- å¦ææ£æµå°å¤ä¸ª commitï¼å¦
HEAD~10ï¼ï¼æéç¨æ·å»ºè®®å®¡æ ¸å个 commit æå·®å¼èå´ - 妿èå´è¿å¤§ï¼æç¤ºç¨æ·ç¼©å°èå´
- å¦ææ£æµå°å¤ä¸ª commitï¼å¦
- æ§è¡å®¡æ ¸ï¼éªè¯éè¿åå¼å§å®¡æ ¸æµç¨
èå´ä¸åççæç¤ºæ¨¡æ¿ï¼
æ£æµå°æ¨è¦æ±å®¡æ ¸èå´è¾å¤§ï¼{ç¨æ·è¾å
¥çèå´}
建议使ç¨ä»¥ä¸æ´ç²¾ç¡®çèå´ï¼
- HEAD # å®¡æ ¸ææ°ä¸æ¬¡ commit
- HEAD~1 # å®¡æ ¸ä¸ä¸æ¬¡ commit
- --staged # å®¡æ ¸æåçä¿®æ¹
- --unstaged # å®¡æ ¸æªæåçä¿®æ¹
- abc1234 # å®¡æ ¸æå® commit hash
è¯·éæ©ä¸ä¸ªåéçèå´ï¼æè
æç¡®è¾å
¥å
·ä½ç commit hashã
宿´å·¥ä½æµç¨
é¶æ®µ 1: 模å¼è¯å«ä¸è·ååæ´
-
è¯å«å®¡æ ¸æ¨¡å¼ï¼
- 妿è¾å
¥æ¯ææç Git commit hash æ
HEADã~ç¸å ³è¡¨è¾¾å¼ â æ¬å° Git æ¨¡å¼ - 妿è¾å
¥å
å«
--stagedã--unstagedã--cachedã--workingâ æ¬å° Git æ¨¡å¼ - 妿è¾å ¥æ¯ Gerrit Change ID æ ¼å¼ â Gerrit 模å¼
- 妿èå´ä¸åçï¼æç¤ºç¨æ·æä¾æ´ç²¾ç¡®çèå´
- 妿è¾å
¥æ¯ææç Git commit hash æ
-
è·ååæ´ä¿¡æ¯ï¼
- æ¬å° Git 模å¼ï¼ä½¿ç¨
gitå½ä»¤è·ågit show --stat <ref>– è·å commit ä¿¡æ¯ååæ´æä»¶å表git show <ref> -- <file>ægit diff <ref~1> <ref> -- <file>– è·åæä»¶å·®å¼git diff --cached– æååºå·®å¼git diff– å·¥ä½åºå·®å¼
- Gerrit 模å¼ï¼ä½¿ç¨ Gerrit MCP å·¥å
·è·å
get_change_details– è·ååæ´è¯¦ælist_change_files– è·åä¿®æ¹çæä»¶å表get_commit_message– è·åæäº¤ä¿¡æ¯
- æ¬å° Git 模å¼ï¼ä½¿ç¨
é¶æ®µ 2: 代ç è·åä¸è§£æï¼å«èªæå®¡é 触å夿ï¼
éè¦è¯´æï¼æ¬å° Git 模å¼ä¼å¨é¶æ®µ 4.5 æ§è¡èªæå®¡é ï¼éè¿è¯»åæºæä»¶ä¸ä¸æéªè¯åç°çé®é¢æ¯å¦åç¡®ã
对æ¯ä¸ªä¿®æ¹çæä»¶ï¼
- è·åæä»¶çå·®å¼å 容ï¼diffï¼
- è¯å«æä»¶ç±»åï¼.goã.cppã.hppã.ymlã.yaml çï¼
- åºç¨æé¤è§åï¼vendorãgenerated çç®å½ï¼
- å°æä»¶ååç»å¯¹åºè¯è¨çåæå¨
é¶æ®µ 3: è¯è¨ä¸é¡¹æ£æ¥
Golang åæå¨
æ£æ¥è§åè¯¦è§ references/golang-checks.mdã
æé¤è§åï¼
vendor/ç®å½åå ¶æææä»¶ä¸è¿è¡å®¡æ ¸- ä¸æç¤ºå ³äº vendor ç®å½å卿¹å¼çæ¹è¿å»ºè®®
æä¸¥éç¨åº¦åç±»ï¼
- ð´ Must Fix (-2): é误å¤ç缺失ãSQL æ³¨å ¥ãç«ææ¡ä»¶ãèµæºæ³æ¼ã空æéè§£å¼ç¨
- ð¡ Should Fix (-2): å½åè§èã彿°è¿é¿ãéæ³æ°åãç¼ºå°æ³¨éãè¿åº¦åµå¥
- ðµ Nice to Have (-1): å¯ç¨ stdlibãæªä½¿ç¨åé/å¯¼å ¥ãå¯ç®åæ¼æ¥
Qt/C++ åæå¨
æ£æ¥è§åè¯¦è§ references/cpp-checks.md
æé¤è§åï¼
vendor/ãthird_party/ã3rdparty/ç®å½- èªå¨çæçæä»¶ï¼
moc_*.cppãui_*.hãqrc_*.cppï¼
Ansible åæå¨
æ£æ¥è§åè¯¦è§ references/ansible-checks.md
æé¤è§åï¼
galaxy_roles/ãcollections/ãvendor/ç¬¬ä¸æ¹ç®å½- ä¸»æºæ¸
åæä»¶ï¼
inventory/ãhostsï¼çææå 容
é¶æ®µ 4: é®é¢èåä¸å级
- å°åè¯è¨æ£æ¥ç»ææ±æ»
- æä¸¥éç¨åº¦åç±»ï¼Must Fix / Should Fix / Nice to Haveï¼
- å»éåä¼å 级æåº
- è®¡ç® Review è¯åï¼
- æ Must Fix æ Should Fix â
-2 - ä»
æ Nice to Have â
-1 - æ é®é¢ â
+1
- æ Must Fix æ Should Fix â
é¶æ®µ 4.5: èªæå®¡é ï¼ä» æ¬å° Git 模å¼ï¼
ç®çï¼åå°è¯¯å¤ï¼ç¡®ä¿å®¡æ ¸åç°çæ¯ä¸ªé®é¢é½æ¯çå®åå¨ä¸åç¡®çã
è§¦åæ¡ä»¶ï¼ä» 卿¬å° Git 模å¼ä¸æ§è¡ã
æ§è¡æ¥éª¤ï¼
-
æ£æ¥æ¯å¦å¤äºé¡¹ç®æºç ç®å½ï¼
- 夿å½åç®å½æ¯å¦å
å«é¡¹ç®ç»æï¼å¦
go.modãCMakeLists.txtãmain.ymlçï¼ - 妿䏿¯é¡¹ç®ç®å½ï¼è·³è¿èªæå®¡é é¶æ®µ
- 夿å½åç®å½æ¯å¦å
å«é¡¹ç®ç»æï¼å¦
-
对æ¯ä¸ªåç°çé®é¢è¿è¡ä¸ä¸æéªè¯ï¼
- 使ç¨
Readå·¥å ·è¯»åé®é¢æå¨æä»¶ç宿´ä»£ç - æ ¹æ®é®é¢æ¥åçæä»¶è·¯å¾åè¡å·ï¼å®ä½å°å ·ä½ä»£ç ä½ç½®
- ç»å git diff çåæ´ä¸ä¸æï¼éæ°åæé®é¢æ¯å¦ç¡®å®åå¨
- 使ç¨
-
审é éç¹ï¼
é®é¢ç±»å 审é çç¥ Must Fix ä¸¥æ ¼éªè¯ – å¿ é¡»ç¡®è®¤é®é¢çå®åå¨ï¼å¦åç§»é¤æé级 Should Fix é度éªè¯ – ç»å宿´ä»£ç 确认é®é¢åçæ§ Nice to Have è½»ééªè¯ – 确认建议确å®å¯æ¹è¿ -
å®¡é æä½ï¼
- 确认é®é¢çå®ï¼ä¿çåé®é¢ï¼æ è®°”â å·²éªè¯”
- é®é¢ä¸åå¨ï¼ä»é®é¢å表ä¸ç§»é¤ï¼è®°å½”â è¯¯å¤ – åå “
- éè¦é级ï¼è°æ´é®é¢ç级ï¼å¦ Must Fix â Should Fixï¼ï¼æ·»å 说æ
- éè¦è°æ´æè¿°ï¼ä¼åé®é¢æè¿°ï¼ä½¿å ¶æ´åç¡®
-
æ´æ°ç»è®¡ï¼
- æ ¹æ®å®¡é åçæç»é®é¢åè¡¨éæ°è®¡ç®åç级æ°é
- ç¸åºè°æ´æç»ç Review æ¨èåæ°
èªæå®¡é æ¨¡æ¿è®°å½ï¼
[èªæå®¡é
]
- 审é
æä»¶æ°ï¼N 个
- ååç°é®é¢æ°ï¼M 个
- ç§»é¤è¯¯å¤ï¼A 个
- éçº§è°æ´ï¼B 个
- æç»ç¡®è®¤ï¼M-A 个
éè¦ååï¼
- åªå¨è½è¯»åå°é¡¹ç®æºç æ¶æ§è¡èªæå®¡é
- å®¡é æ¯ä¸ºäºåå°è¯¯å¤ï¼ä¸æ¯ä¸ºäºåå°é®é¢
- 对äºä¸ç¡®å®çé®é¢ï¼å¾åäºä¿çè䏿¯ç§»é¤
- èªæå®¡é çç»æåºå½ä½ç°ä¸ä¸æ§ï¼æé«å®¡æ ¸å¯ä¿¡åº¦
é¶æ®µ 5: çæè¾åº
çæ Markdown å®¡æ ¸æ¥åï¼æ ¼å¼è§ä¸æ¹”è¾åºæ ¼å¼”ç« èã
æ³¨ï¼æç»æ¥åä¸çé®é¢æ°éåè¯ååºä¸ºé¶æ®µ 4.5 èªæå®¡é åçç»æã
é¶æ®µ 6: æ¡ä»¶æ§åå¸è¯å®¡ï¼ä» Gerrit 模å¼ï¼
æ£æµç¨æ·æå¾ï¼æ£æ¥ç¨æ·æç¤ºè¯æ¯å¦å å«ä»¥ä¸å ³é®è¯ä¹ä¸ï¼
- “åå¸è¯è®º”
- “æäº¤è¯å®¡”
- “post review”
- “åå¸å° Gerrit”
- “submit review”
å¦æç¡®è¦æ±ï¼ä½¿ç¨ Gerrit MCP å·¥å ·åå¸ï¼
å叿¹å¼ï¼ä¸æ¬¡æ§åå¸å®æ´è¯è®ºï¼å å« Code Review Summary åéæ¡é®é¢è¯´æã
ä½¿ç¨ post_review_comment å·¥å
·åå¸ä¸æ¡è¯è®ºï¼ä¸è®¾ç½® file_path å line_numberï¼ä»
设置 message ä½ä¸º Change 级å«è¯è®ºï¼ï¼å¿
é¡»å¨ labels åæ°ä¸è®¾ç½® Code-Review åæ°ï¼
| åæ° | å¼ | 说æ |
|---|---|---|
change_id |
Change ID | Gerrit Change çæ è¯ç¬¦ |
message |
è¯è®ºå 容 | 宿´çè¯è®ºææ¬ï¼æ ¼å¼è§ä¸æ¹ |
labels.Code-Review |
-2 / -1 / +1 |
æ ¹æ®å®¡æ ¸ç»æè®¡ç®çè¯å |
éè¦æéï¼
- åªåå¸ä¸æ¬¡è¯è®ºï¼ä¸é对æ¯ä¸ªé®é¢åç¬åå¸è¡çº§è¯è®º
- ä½¿ç¨ Change 级å«è¯è®ºï¼ä¸è®¾ç½®
file_pathåline_numberï¼ - æ¯æ¬¡è°ç¨
post_review_commentæ¶ï¼å¿ 须设置labels.Code-Review - åæ°æ ¹æ®æ±æ» Summary 计ç®
- Verified åæ®µä¸è®¾ç½®ï¼ç± Gerrit é»è®¤å¤ç
è¾åºæ ¼å¼
å®¡æ ¸è¾åºè¯´æ
å®¡æ ¸å·¥ä½å®æåçæä¸¤ç§è¾åºï¼
- Markdown å®¡æ ¸æ¥åï¼å§ç»çæï¼ï¼å¨æ¬å°ç»ç«¯å®æ´å±ç¤ºï¼éç¨äºæ¬å°ä»£ç å®¡æ ¸
- Gerrit Review è¯è®ºï¼å¯éï¼ä» å¨ Gerrit 模å¼ä¸ç¨æ·æç¡®è¦æ±æ¶åå¸ï¼ï¼åå¸å° Gerrit Change
Markdown å®¡æ ¸æ¥åï¼æ¬å°è¾åºï¼
éç¨äºæ¬å° Git æ¨¡å¼æ Gerrit 模å¼ï¼ä½ä¸ºå®æ´çææ¯å®¡æ ¸æ¥åã
# Code Review Report
## Metadata
- **Review Type**: Local Git / Gerrit
- **Commit/Change**: xxx
- **Author**: xxx
- **Subject**: xxx
- **Files Changed**: xx (xx insertions, xx deletions)
---
## Summary
æ»é®é¢æ°: N (Must Fix: A, Should Fix: B, Nice to Have: C)
**æ¨è Score**: -2 / +1
[å¯é] **æ£é¢è¯ä»·**:
⢠添å äºå®æ´çæµè¯ç¨ä¾
â¢ ä½¿ç¨æ¥å£æ½è±¡ä¾èµ
---
## ð Must Fix (-2) - A items
### [app/api/service/eia.go:239] æ¥å¿ä¸ä½¿ç¨æªå®ä¹çåé
**é®é¢æè¿°**:
`departmentIDs` å¨å
é¨ä½ç¨åå®ä¹ä½æå被å¼ç¨ï¼ä¼å¯¼è´ç¼è¯é误ã
**代ç çæ®µ**:
```go
if len(departmentIDs) > 0 {
// ... departmentIDs 卿¤ä½ç¨å
}
// æåç log å¼ç¨äº departmentIDs - é误!
log.Info("...", log.Any("departmentIDs", departmentIDs))
Suggestion: ä¿®å¤æ¥å¿è¯å¥ï¼ç§»é¤æä½¿ç¨æ£ç¡®çåéã
ð Should Fix (-2) – B items
[pkg/middleware/auth.go:45] å½åä¸ç¬¦åè§è
é®é¢æè¿°: 彿°å使ç¨åçå©å½åæ³ï¼ä¸ç¬¦å Go å½å约å®ã
Suggestion: æ¹ç¨é©¼å³°å½åï¼å¦ getAuthToken â GetAuthTokenã
ð Nice to Have (-1) – C items
[main.go:120] å¯ä½¿ç¨æ ååºåè½
é®é¢æè¿°:
èªå®ä¹çå符串åå²å½æ°å¯è¢« strings.Split æ¿ä»£ã
Suggestion: ç´æ¥ä½¿ç¨ strings.Splitã
â æ é®é¢
代ç è´¨éä¼ç§ï¼ä»¥ä¸ä» ååºæ¹è¿å»ºè®®ã
### Gerrit Review è¯è®ºæ ¼å¼ï¼åå¸å° Gerritï¼
ä»
å¨ Gerrit 模å¼ä¸ï¼å½ç¨æ·æç¡®è¦æ±ï¼å¦"åå¸è¯è®º"ã"post review"çï¼æ¶ï¼å°å®¡æ ¸ç»æåå¸ä¸º Change 级å«è¯è®ºã
**设计åå**ï¼ç®ææ¼è¦ï¼éç¹çªåºï¼ä¾¿äºå¨ Gerrit Web çé¢å¿«éé
读ã
=== Code Review Summary ===
Found Issues: ð´ Must Fix: 3 items ð¡ Should Fix: 1 items ðµ Nice to Have: 2 items Recommended Score: -2 (éä¿®å¤ä¸¥éé®é¢ååå¹¶)
Positive Points: ⢠添å äºå®æ´çæµè¯ç¨ä¾è¦çæ°å¢åè½ â¢ ä½¿ç¨æ¥å£æ½è±¡ä¾èµï¼ä¾¿äºæµè¯åç»´æ¤ â¢ å¯ç ä¿®æ¹æµç¨æå®æ´çé级æºå¶ ⢠æ¥å¿è®°å½è¯¦å°½ï¼ä¾¿äºææ¥é®é¢
Must Fix Issues
-
[app/api/service/eia.go:239] æ¥å¿ä¸ä½¿ç¨æªå®ä¹åé
departmentIDsSuggestion: ä¿®å¤æ¥å¿è¯å¥ï¼ç§»é¤æä½¿ç¨æ£ç¡®çåéã -
[app/api/service/uim_client.go:57] å ¨å±åé缺å°å¹¶åå®å ¨ä¿æ¤
var globalEIAAuthChecker EIAAuthChecker = NewEIAAuthChecker()Suggestion: 使ç¨
sync.RWMutexä¿æ¤è®¿é®ï¼æä½¿ç¨atomic.Valueã -
[app/web/handler/user.go:1227] ç¨æ·IDæ£æ¥é»è¾ä¸æ£ç¡® Suggestion: ä¿®å¤ ID éªè¯é»è¾ï¼æ·»å è¾¹çæ£æ¥ã
Should Fix Issues
- [pkg/middleware/auth.go:45] 彿°å½åä¸ç¬¦å Go è§è
Suggestion: 使ç¨é©¼å³°å½å
getAuthTokenâGetAuthTokenã
Nice to Have Issues
-
[main.go:120] å¯ä½¿ç¨æ ååº
strings.Splitæ¿ä»£èªå®ä¹å®ç° -
[utils/string.go:78] å 餿ªä½¿ç¨çè¾ å©å½æ°
**æ ¼å¼è§è**ï¼
| é¨å | 说æ | æ ¼å¼ |
|------|------|------|
| æ é¢ | `=== Code Review Summary ===` | æ é¢åé符 |
| Found Issues | ç»è®¡åç级é®é¢æ°é | emoji + items |
| Recommended Score | å»ºè®®åæ° | æå说æ |
| Positive Points | æ£é¢è¯ä»· | 项ç®ç¬¦å· `â¢` |
| åç级é®é¢ | æ Must Fix / Should Fix / Nice to Have åç» | `###` åç»æ é¢ |
| å
·ä½é®é¢ | ç¼å· + æä»¶:è¡å· + æè¿° | æ°åç¼å· |
| 代ç ç¤ºä¾ | ä»
å¿
è¦æ¶å±ç¤º | 代ç å |
| Suggestion | ä¿®æ¹å»ºè®® | å ç²ææ¬ |
**ä¸ Markdown æ¥åçåºå«**ï¼
| ç¹æ§ | Markdown æ¥å | Gerrit è¯è®º |
|------|-------------|------------|
| ç®æ | æ¬å°å®æ´ææ¯å®¡æ ¸ | Gerrit Web å¿«éé
读 |
| 详ç»ç¨åº¦ | 详ç»ï¼å
å«ä»£ç çæ®µã宿´æè¿° | ç®æï¼éç¹çªåº |
| ç»ç»æ¹å¼ | æé®é¢åç±»ï¼æ¯ä¸ªé®é¢ç¬ç«åå | å
åç»ï¼é®é¢åè¡¨å½¢å¼ |
| Positive Points | ç¬ç«ç« è | ç¨é¡¹ç®ç¬¦å·ç®æ´ååº |
| æä»¶å®ä½ | æ¯ä¸ªé®é¢å¼å¤´ | éä¸å举åºå· |
| 代ç å | æ¯ä¸ªé®é¢é½å¯è½æ | ä»
å¿
è¦æ¶å±ç¤º |
## æ£æ¥è§ååè
- [references/golang-checks.md](references/golang-checks.md) - Golang æ£æ¥è§å
- [references/cpp-checks.md](references/cpp-checks.md) - Qt/C++ æ£æ¥è§å
- [references/ansible-checks.md](references/ansible-checks.md) - Ansible æ£æ¥è§å
### Golang æ£æ¥é¡¹ç´¢å¼
#### ð´ Must Fix (-2)
| ID | é®é¢æè¿° | æ£æµæ¹å¼ |
|----|---------|---------|
| GO-MF001 | é误å¤ç缺失 | æ£æµæªå¤ççè¿åå¼ `err` |
| GO-MF002 | SQL 注å
¥é£é© | æ£æµåç¬¦ä¸²æ¼æ¥æå»º SQL |
| GO-MF003 | ç«ææ¡ä»¶ | æ£æµæªä¿æ¤çå
±äº«åéè®¿é® |
| GO-MF004 | èµæºæ³æ¼ | æ£æµæªå
³éç `defer` 缺失 |
| GO-MF005 | 空æéè§£å¼ç¨ | æ£æµæªæ£æ¥ nil çæéæä½ |
#### ð¡ Should Fix (-2)
| ID | é®é¢æè¿° | æ£æµæ¹å¼ |
|----|---------|---------|
| GO-SF001 | å½åä¸ç¬¦åè§è | æ£æµéè§èå½åï¼å
/åé/彿°ï¼ |
| GO-SF002 | 彿°è¿é¿ | ç»è®¡å½æ°è¡æ° > 100 |
| GO-SF003 | éæ³æ°å | æ£æµæ°ååé¢éï¼é 0/1ï¼ |
| GO-SF004 | ç¼ºå°æ³¨éç夿é»è¾ | æ£æµå¤æå¤æ/å¾ªç¯æ 注é |
| GO-SF005 | è¿åº¦åµå¥ | æ£æµåµå¥å±çº§ > 3 |
#### ðµ Nice to Have (-1)
| ID | é®é¢æè¿° | æ£æµæ¹å¼ |
|----|---------|---------|
| GO-NH001 | å¯ä½¿ç¨ stdlib | æ£æµèªå®ç°æ stdlib çæåè½ç彿° |
| GO-NH002 | åéæªä½¿ç¨ | æ£æµå£°æä½æªä½¿ç¨çåé |
| GO-NH003 | 导å
¥æªä½¿ç¨ | æ£æµæªä½¿ç¨ç import |
| GO-NH004 | å¯ç®åçåç¬¦ä¸²æ¼æ¥ | æ£æµå¯ç¨ `+` ç®åç `fmt.Sprintf` |
### Qt/C++ æ£æ¥é¡¹ç´¢å¼
#### ð´ Must Fix (-2)
| ID | é®é¢æè¿° |
|----|---------|
| CPP-MF001 | å
åæ³æ¼ |
| CPP-MF002 | ä½¿ç¨æªåå§åçåé |
| CPP-MF003 | æ°ç»è¶çè®¿é® |
| CPP-MF004 | 空æéè§£å¼ç¨ |
| CPP-MF005 | ç«ææ¡ä»¶ - 线ç¨å®å
¨é®é¢ |
| CPP-MF006 | SQL 注å
¥é£é© |
| CPP-MF007 | ä¿¡å·æ§½åæ°ä¸å¹é
|
| CPP-MF008 | QObject å¯¹è±¡éæ¯åä½¿ç¨ |
#### ð¡ Should Fix (-2)
| ID | é®é¢æè¿° |
|----|---------|
| CPP-SF001 | å½åä¸ç¬¦åè§è |
| CPP-SF002 | 彿°è¿é¿ |
| CPP-SF003 | éæ³æ°å |
| CPP-SF004 | ç¼ºå°æ³¨éç夿é»è¾ |
| CPP-SF005 | è¿åº¦åµå¥ |
| CPP-SF006 | ä¸å¿
è¦çç¶ç±»æå彿°é®è½ |
| CPP-SF007 | QString::number ä¸å¿
è¦è½¬æ¢ |
| CPP-SF008 | 硬ç¼ç çæä»¶è·¯å¾ |
| CPP-SF009 | æªæ£æ¥æä½ç»æ |
#### ðµ Nice to Have (-1)
| ID | é®é¢æè¿° |
|----|---------|
| CPP-NH001 | å¯ä½¿ç¨ç°æ Qt å·¥å
·ç±» |
| CPP-NH002 | æªä½¿ç¨çåéæå½æ° |
| CPP-NH003 | åä½ç const |
| CPP-NH004 | å¯ä»¥ä½¿ç¨ auto ç®åç±»å声æ |
| CPP-NH005 | å¯ä»¥ä½¿ç¨ lambda æ¿ä»£å½æ°å¯¹è±¡ |
| CPP-NH006 | QString éå¤ä½¿ç¨ toUtf8().constData() |
### Ansible æ£æ¥é¡¹ç´¢å¼
#### ð´ Must Fix (-2)
| ID | é®é¢æè¿° |
|----|---------|
| ANS-MF001 | ææå卿æä¿¡æ¯ |
| ANS-MF002 | Shell æ¨¡åæªä½¿ç¨å¹çæ§æ£æ¥ |
| ANS-MF003 | ä½¿ç¨ sudo/su èé become |
| ANS-MF004 | æªå¤çä»»å¡å¤±è´¥ |
| ANS-MF005 | å¾ªç¯æ§è½é®é¢ |
| ANS-MF006 | æªæ£æ¥ç®æ ç³»ç»æ¯æ |
| ANS-MF007 | é
ç½®æä»¶ä¿®æ¹æªå¤ä»½ |
#### ð¡ Should Fix (-2)
| ID | é®é¢æè¿° |
|----|---------|
| ANS-SF001 | 使ç¨å¼ç¨çè¯æ³ææ¨¡å |
| ANS-SF002 | 缺å°å
æ°æ® |
| ANS-SF003 | éæ³åéå¼ |
| ANS-SF004 | æªä½¿ç¨æ ç¾ (Tags) |
| ANS-SF005 | å¾ªç¯ææ¡ä»¶åéå½åæ··æ· |
| ANS-SF006 | æªå£°æä¾èµå
³ç³» |
| ANS-SF007 | æªä½¿ç¨ Jinja2 è¿æ»¤å¨ |
| ANS-SF008 | 注éä¸å¤æç¼ºå¤± |
| ANS-SF009 | æªä½¿ç¨ Handler å®ç°å¹çæ§ |
#### ðµ Nice to Have (-1)
| ID | é®é¢æè¿° |
|----|---------|
| ANS-NH001 | æªä½¿ç¨çåé |
| ANS-NH002 | å¯ä»¥ä½¿ç¨å
置模åä»£æ¿ shell |
| ANS-NH003 | éå¤ç代ç å¯ä»¥æå |
| ANS-NH004 | å¯ä»¥åå¹¶ç¸ä¼¼ä»»å¡ |
| ANS-NH005 | YAML è¿äºåé¿ |
| ANS-NH006 | æªä½¿ç¨ç¤¾åºéå (Collections) |
| ANS-NH007 | å¯ä»¥ä½¿ç¨å
ç½® Facts èé shell å½ä»¤ |
| ANS-NH008 | åéå®ä¹åæ£ |
## æ©å±æå
### æ·»å æ°çæ£æ¥è§å
å¨å¯¹åºè¯è¨ç `references` æä»¶ä¸æ·»å æ£æ¥é¡¹ï¼æ ¼å¼ï¼
```markdown
### [æ£æ¥ID] æ£æ¥åç§°
- **æè¿°**: æ£æ¥é¡¹çè¯¦ç»æè¿°
- **严éç¨åº¦**: Must Fix / Should Fix / Nice to Have
- **æ£æµæ¹å¼**: å¦ä½éè¿ä»£ç åæåç°æ¤é®é¢
- **示ä¾**:
```go
// Bad
// ...
// Good
// ...
- 建议修æ¹: å ·ä½çä¿®æ¹å»ºè®®
### æ·»å æ°è¯è¨æ¯æ
1. å建 `references/<lang>-checks.md` æä»¶
2. æä¸çº§åç±»ç»ç»æ£æ¥é¡¹
3. æ´æ°æ¬ææ¡£"é¶æ®µ 3: è¯è¨ä¸é¡¹æ£æ¥"é¨å
4. å¨"æ£æ¥è§ååè"ç« èæ·»å 该è¯è¨çæ£æ¥é¡¹ç´¢å¼