qt-unittest-make
npx skills add https://github.com/re2zero/deepin-skills --skill qt-unittest-make
Agent 安装分布
Skill 文档
Qt Unit Test Generator
Overview
Core principle: ä½¿ç¨ LSP 精确åæç±»ç»æï¼çæ 100% 彿°è¦çççæµè¯ç¨ä¾ï¼å¹¶å¼ºå¶éªè¯æå»ºæåã
æ¶ææ¨¡å¼: Skill è·¯ç± + å Agent å ¨æ æ§è¡ãå Agent è´è´£ææå ·ä½å·¥ä½ï¼Skill ä» è´è´£è°ç¨åç»æåé¦ã
å ³é®ç¹æ§: æºè½ CMake åå¹¶ãå¢éæ´æ°æ¯æãä¸¥æ ¼çæå»ºéªè¯ã详ç»çé误å¤çã
Iron Laws
- ä» ä½¿ç¨ Google Test: æµè¯æ¡æ¶åºå®ä¸º GTestï¼ä¸æ¯æ Qt Test
- 100% 彿°è¦çç: æ¯ä¸ª public/protected 彿°å¿ é¡»è³å°ä¸ä¸ªæµè¯ç¨ä¾
- æºè½ CMake åå¹¶: æ ¹æ®é¡¹ç®å®é æ åµä¼ååå¹¶ï¼ç¡®ä¿éç¨æ§
- æ¯æå¢éæ´æ°: 对æ¯ç°ææµè¯ï¼è¡¥å ¨æªè¦ç彿°
- å¿ é¡»éªè¯æå»º: çæåå¿ é¡»ç¼è¯æåæè½æ¥å宿
- ç¼è¯å¤±è´¥å¿ 须修æ£: æ¯ä¸ªé误æå¤éè¯ 3 æ¬¡ï¼æå¤§å¾ªç¯ 10 次
When to Use
è§¦åæ¡ä»¶:
- ç¨æ·è¯·æ±ä¸ºæ¨¡åçæåå
æµè¯ï¼
为 src/lib/ui 模åå建åå æµè¯ - ç¨æ·è¯·æ±ä¸ºç±»çææµè¯ï¼
为 MyClass çææµè¯ - ç¨æ·è¯·æ±è¡¥å
¨æµè¯ï¼
为 MyClass è¡¥å ¨æµè¯
ä¸ä½¿ç¨æ¤æè½æ¶:
- ç¨æ·è¯·æ±çææµè¯æ¡æ¶ï¼ä½¿ç¨
qt-unittest-buildï¼ - ç¨æ·è¯·æ±ä¿®å¤æµè¯å¤±è´¥ï¼ä½¿ç¨
systematic-debuggingï¼ - ç¨æ·è¯·æ±åææµè¯è¦ççï¼ä½¿ç¨å ¶ä»å·¥å ·ï¼
æ§è¡æµç¨
æ¥éª¤ 1: æ£æ¥æµè¯æ¡æ¶
éªè¯ autotests/CMakeLists.txt å autotests/3rdparty/stub/ åå¨ãå¦ä¸åå¨ï¼æç¤ºç¨æ·å
è¿è¡ qt-unittest-buildã
æ¥éª¤ 2: åæç±»ç»æ
æ¨¡åæ¹éçæ: glob æ«æç®å½ææ .h/.hppï¼æåç±»åã
å个类: ç´æ¥åææå®ç±»ã
ä½¿ç¨ LSP å·¥å ·ï¼
lsp_document_symbols– æåç±»ç»ælsp_goto_definition– 读å彿°å®ç°lsp_find_references– æ¥æ¾ä¾èµ
æ¥éª¤ 3: è°ç¨å Agentï¼MUST DOï¼
éè¦: å¿ é¡»è°ç¨å Agentï¼ä¸è½è·³è¿ï¼
å Agent ä½ç½®: agent/unittest-generator.md
è°ç¨æ¹å¼:
ä½¿ç¨ task å·¥å
·è°ç¨å Agentï¼
task(
description="çæåå
æµè¯ä»£ç ",
prompt="宿´çä»»å¡è¯´æï¼å
æ¬ï¼
- ç®æ 模åæç±»
- æµè¯æ¡æ¶è¦æ±ï¼Google Testï¼
- 彿°è¦ççè¦æ±ï¼100%ï¼
- éªè¯æå»ºè¦æ±",
subagent_type="general"
)
为ä»ä¹éè¦å Agent:
- ç¬ç«ä¸ä¸æ: 为å个类æå°æ¨¡åçææµè¯æ¶ï¼ç¬ç«ä¸ä¸æé¿å 污æ
- å¹¶è¡æ§è¡: 为å¤ä¸ªç±»æ¹éçææµè¯æ¶ï¼å¯ä»¥ fork å¤ä¸ªå Agent å¹¶è¡æ§è¡ï¼æé«æç
- ä»»å¡é离: å Agent 失败ä¸å½±å主 Agentï¼ä¾¿äºé误å¤ç
è°ç¨æ¶æº:
- æ¨¡åæ¹éçæ: 为æ¯ä¸ªç±»è°ç¨ä¸ä¸ªå Agentï¼å¹¶è¡ï¼
- å个类çæ: è°ç¨ä¸ä¸ªå Agent
- å¢éæ´æ°: è°ç¨å Agent åæå·®å¼
æ¥éª¤ 4: çå¾ å Agent 宿
çå¬å Agent çæ§è¡ç»æï¼
- æ¶éçæçæµè¯æä»¶
- æ£æ¥éªè¯æå»ºç»æ
- è®°å½éå°çé误ï¼å¦ææï¼
æ¥éª¤ 5: åé¦ç¨æ·
æ ¹æ®å Agent çç»æåé¦ç¨æ·ï¼
- 妿æåï¼æ¥åçæçæµè¯æä»¶åè¦çç
- å¦æå¤±è´¥ï¼æ¥å详ç»çé误信æ¯åä¿®æ£å»ºè®®
Red Flags
- â ä½¿ç¨ Qt Test æ¡æ¶
- â è¦ççä¸è¶³ 100%
- â 硬ç¼ç CMake 模æ¿
- â ä¸éªè¯æå»º
- â 䏿¯æå¢éæ´æ°
- â ç¼è¯å¤±è´¥ä»æ¥å宿
- â è·³è¿å Agent è°ç¨ï¼ç´æ¥æå¨å·¥ä½ï¼
Quick Reference
æµè¯æä»¶å½å: test_myclass.cpp
æµè¯ç±»å½å: MyClassTest
æµè¯ç¨ä¾å½å: {Feature}_{Scenario}_{ExpectedResult}
LSP å·¥å
·: lsp_document_symbols, lsp_goto_definition, lsp_find_references
Stub 模å¼: &Class::method, VADDR(Class, method), static_cast<...>
ç¼è¯éè¯é»è¾: æ¯ä¸ªé误æå¤éè¯ 3 æ¬¡ï¼æå¤§å¾ªç¯ 10 次
å Agent è°ç¨
å¿ é¡»ä½¿ç¨ task å·¥å ·è°ç¨å Agent:
task(
description="çæåå
æµè¯ä»£ç ",
prompt="宿´ä»»å¡æè¿°ï¼å
æ¬ç®æ ãè¦æ±ãéªè¯æµç¨",
subagent_type="general"
)
å Agent æ§è¡å 容:
- åæé¡¹ç®ç»æï¼LSPï¼
- çææµè¯æä»¶ï¼100% è¦ççï¼
- æºè½åå¹¶ CMake
- éªè¯æå»ºï¼æ¯ä¸ªé误éè¯ 3 æ¬¡ï¼æå¤§å¾ªç¯ 10 次ï¼
为ä»ä¹éè¦å Agent:
- ç¬ç«ä¸ä¸æï¼é²æ¢æ±¡æ
- å¹¶è¡æ§è¡ï¼æé«æç
- ä»»å¡é离ï¼ä¾¿äºé误å¤ç
常è§é误
| é误 | åå | ä¿®å¤ |
|---|---|---|
| æµè¯æ¡æ¶ä¸åå¨ | æªè¿è¡ qt-unittest-build | æç¤ºç¨æ·å è¿è¡æ¡æ¶æå»ºæè½ |
| è¦ççä¸è¶³ | æªåæææå½æ° | ç¡®ä¿ lsp_document_symbols æå宿´ |
| CMake å并失败 | 硬ç¼ç æ¨¡æ¿ | ä½¿ç¨ AI æºè½åå¹¶ï¼æ ¹æ®é¡¹ç®å®é æ åµä¼å |
| ç¼è¯å¤±è´¥ | Stub ç¾åé误 | ä½¿ç¨ LSP è·å精确ç¾å |
| ç¼è¯å¤±è´¥ä»æ¥å宿 | è·³è¿éªè¯æéªè¯ä¸ä¸¥è°¨ | å¿ é¡»ç¼è¯æåæè½æ¥åç¨æ· |
| å¤ä¸ªé误æªä¿®æ£ | å ¨å±éè¯ 3 次ä¸è¶³ | æ¯ä¸ªé误éè¯ 3 æ¬¡ï¼æå¤§å¾ªç¯ 10 次 |
Rationalization Table
| Excuse | Reality |
|---|---|
| “ç´æ¥æå¨å·¥ä½æ´å¿«” | æå¨å·¥ä½æ æ³ä¿è¯ 100% è¦ççåæå»ºéªè¯ï¼å Agent æ¯å¼ºå¶è¦æ± |
| “è·³è¿å Agent è°ç¨” | è¿åæè½çéå¾ï¼å¿ é¡»è°ç¨å Agent |
| “ç¼è¯å¤±è´¥ä¹å¯ä»¥æ¥å宿” | è¿åå¼ºå¶æå»ºéªè¯è¦æ±ï¼å¿ é¡»ç¼è¯æåæè½æ¥å |
| “å ¨å±éè¯ 3 次就å¤äº” | æ¯ä¸ªé误éè¯ 3 次ï¼ä¸æ¯å ¨å± 3 次 |
| “è¦çç 80% å°±å¯ä»¥äº” | éå¾è¦æ± 100% 彿°è¦ççï¼æ ä¾å¤ |
| “Qt Test ä¹ä¸æ ·” | æè½åºå®ä½¿ç¨ Google Testï¼ä¸æ¯æ Qt Test |