@ohos-cpf/3rdloop 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/README.md +244 -244
  2. package/bin/3rdloop.mjs +46 -46
  3. package/lib/cli.js +781 -781
  4. package/lib/config-cmd.js +451 -451
  5. package/lib/config.js +318 -318
  6. package/lib/doctor.js +113 -113
  7. package/lib/exit-codes.js +30 -30
  8. package/lib/opencode.js +155 -155
  9. package/lib/orch.js +426 -426
  10. package/lib/queries.js +263 -263
  11. package/lib/step.js +325 -325
  12. package/lib/ui.js +222 -222
  13. package/lib/update.js +279 -279
  14. package/lib/workflow.js +308 -308
  15. package/lib/workflows.js +131 -131
  16. package/package.json +50 -50
  17. package/vendor/Server/Agent/SkillSelector/README.md +343 -343
  18. package/vendor/Server/Agent/SkillSelector/core/Agent.js +207 -207
  19. package/vendor/Server/Agent/SkillSelector/index.js +14 -14
  20. package/vendor/Server/Agent/SkillSelector/llm/llmClient.js +313 -313
  21. package/vendor/Server/Agent/SkillSelector/llm/prompts.js +161 -161
  22. package/vendor/Server/Agent/SkillSelector/llm/reactSteps.js +144 -144
  23. package/vendor/Server/Agent/SkillSelector/matcher/fuzzyMatcher.js +433 -433
  24. package/vendor/Server/Agent/SkillSelector/scanner/skillScanner.js +382 -382
  25. package/vendor/Server/Agent/SkillSelector/utils/actionWords.js +59 -59
  26. package/vendor/Server/Brain/AnalysisStrategies.js +422 -422
  27. package/vendor/Server/Brain/Brain.js +686 -686
  28. package/vendor/Server/Brain/DecompositionStrategies.js +621 -621
  29. package/vendor/Server/Brain/PlanPersistence.js +196 -196
  30. package/vendor/Server/Brain/SkillExecutor.js +251 -251
  31. package/vendor/Server/Brain/index.js +11 -11
  32. package/vendor/Server/CLI/cli.js +275 -275
  33. package/vendor/Server/CLI/deveco-code/index.js +71 -71
  34. package/vendor/Server/CLI/deveco-code.js +5 -5
  35. package/vendor/Server/CLI/opencode/index.js +817 -818
  36. package/vendor/Server/CLI/opencode.js +5 -5
  37. package/vendor/Server/DbUse/MessageArchive.js +61 -61
  38. package/vendor/Server/DbUse/StorageManager.js +107 -107
  39. package/vendor/Server/DbUse/adapters/BaseAdapter.js +94 -94
  40. package/vendor/Server/DbUse/adapters/FileAdapter.js +138 -138
  41. package/vendor/Server/DbUse/adapters/JsonAdapter.js +138 -138
  42. package/vendor/Server/DbUse/adapters/JsonlAdapter.js +114 -114
  43. package/vendor/Server/DbUse/adapters/SqliteAdapter.js +157 -157
  44. package/vendor/Server/DbUse/index.js +160 -160
  45. package/vendor/Server/DbUse/stores/SessionStore.js +279 -279
  46. package/vendor/Server/DbUse/stores/TaskExecutionStore.js +133 -133
  47. package/vendor/Server/DbUse/stores/TaskRegistryStore.js +262 -262
  48. package/vendor/Server/DbUse/stores/TaskStepStore.js +279 -279
  49. package/vendor/Server/FlexRunner/FlexRunner.js +1759 -1759
  50. package/vendor/Server/FlexRunner/index.js +12 -12
  51. package/vendor/Server/Knowledge/KnowledgeImporter.js +523 -523
  52. package/vendor/Server/Knowledge/KnowledgeManager.js +341 -341
  53. package/vendor/Server/Knowledge/index.js +33 -33
  54. package/vendor/Server/LoopEngine/LoopEngine.js +1133 -1133
  55. package/vendor/Server/LoopEngine/index.js +11 -11
  56. package/vendor/Server/Orchestrator/Orchestrator.js +0 -3
  57. package/vendor/Server/Orchestrator/StepNode.js +312 -312
  58. package/vendor/Server/Orchestrator/index.js +13 -13
  59. package/vendor/Server/Routes/controllers/BrainController.js +241 -241
  60. package/vendor/Server/Routes/controllers/FlexRunnerController.js +1125 -1125
  61. package/vendor/Server/Routes/controllers/HealthController.js +44 -44
  62. package/vendor/Server/Routes/controllers/KnowledgeImportController.js +355 -355
  63. package/vendor/Server/Routes/controllers/LoopEngineController.js +788 -788
  64. package/vendor/Server/Routes/controllers/StatsController.js +57 -57
  65. package/vendor/Server/Routes/controllers/StreamController.js +67 -67
  66. package/vendor/Server/Routes/library/logger.js +179 -179
  67. package/vendor/Server/Routes/library/zipArchive.js +172 -172
  68. package/vendor/Server/Routes/router/Router.js +204 -204
  69. package/vendor/Server/Routes/routes/brain.js +47 -47
  70. package/vendor/Server/Routes/routes/flexrunner.js +72 -72
  71. package/vendor/Server/Routes/routes/health.js +28 -28
  72. package/vendor/Server/Routes/routes/index.js +57 -57
  73. package/vendor/Server/Routes/routes/knowledge.js +55 -55
  74. package/vendor/Server/Routes/routes/loopengine.js +58 -58
  75. package/vendor/Server/Routes/routes/orchestrator.js +61 -61
  76. package/vendor/Server/Routes/routes/registry.js +97 -97
  77. package/vendor/Server/Routes/routes/stats.js +23 -23
  78. package/vendor/Server/Routes/routes/stream.js +30 -30
  79. package/vendor/Server/Routes/server.js +203 -203
  80. package/vendor/Server/Routes/sse/SseHub.js +308 -308
  81. package/vendor/Server/Skills/acceptance-check/SKILL.md +191 -191
  82. package/vendor/Server/Skills/acceptance-check/references/PHASE1_ARTIFACT_COLLECTION.md +52 -52
  83. package/vendor/Server/Skills/acceptance-check/references/PHASE2_CRITERIA_EVALUATION.md +77 -77
  84. package/vendor/Server/Skills/acceptance-check/references/PHASE2_EVIDENCE_VERIFICATION.md +70 -70
  85. package/vendor/Server/Skills/arkts-code-check/SKILL.md +320 -320
  86. package/vendor/Server/Skills/arkts-code-check/references/CODE_CHECK_GUIDE.md +210 -210
  87. package/vendor/Server/Skills/arkts-code-check/references/FILE_TYPE_GUIDE.md +28 -28
  88. package/vendor/Server/Skills/arkts-code-check/references/PHASE1_INFO_COLLECTION.md +233 -233
  89. package/vendor/Server/Skills/arkts-code-check/references/REPORT_TEMPLATE.md +219 -219
  90. package/vendor/Server/Skills/arkts-library-compile-validate/SKILL.md +328 -328
  91. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/build.ps1 +93 -93
  92. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/code-linter.cjs +432 -432
  93. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/migrate.cjs +851 -851
  94. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/ohpm-switch.cjs +788 -788
  95. package/vendor/Server/Skills/arkts-library-demo-code/SKILL.md +291 -291
  96. package/vendor/Server/Skills/arkts-library-demo-code/references/API_SIGNATURE_CHECKS.md +68 -68
  97. package/vendor/Server/Skills/arkts-library-demo-code/references/BUILD_VALIDATION.md +184 -184
  98. package/vendor/Server/Skills/arkts-library-demo-code/references/CODE_STANDARDS.md +337 -337
  99. package/vendor/Server/Skills/arkts-library-demo-code/references/EXAMPLES.md +400 -400
  100. package/vendor/Server/Skills/arkts-library-demo-code/references/SYSTEM_API_LOOKUP.md +98 -98
  101. package/vendor/Server/Skills/arkts-library-demo-code/references/TEMPLATE.md +544 -544
  102. package/vendor/Server/Skills/arkts-library-demo-code/scripts/build.ps1 +93 -93
  103. package/vendor/Server/Skills/arkts-library-demo-code/scripts/code-linter.cjs +432 -432
  104. package/vendor/Server/Skills/arkts-library-demo-code/scripts/migrate.cjs +851 -851
  105. package/vendor/Server/Skills/arkts-library-demo-code/scripts/ohpm-switch.cjs +788 -788
  106. package/vendor/Server/Skills/arkts-library-demo-coverage/SKILL.md +174 -174
  107. package/vendor/Server/Skills/arkts-library-demo-scenario/SKILL.md +321 -321
  108. package/vendor/Server/Skills/arkts-library-demo-scenario/references/EXAMPLES.md +100 -100
  109. package/vendor/Server/Skills/arkts-library-demo-scenario/references/TEMPLATE.md +185 -185
  110. package/vendor/Server/Skills/arkts-library-documentation-quality-check/SKILL.md +233 -233
  111. package/vendor/Server/Skills/arkts-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +102 -102
  112. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/CHECK_DIMENSIONS.md +89 -89
  113. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/COMPLIANCE_CHECKLIST.md +62 -62
  114. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/KB_QUERY_GUIDE.md +107 -107
  115. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/MCP_TOOL_DISCOVERY.md +124 -124
  116. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/REPORT_TEMPLATE.md +90 -90
  117. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/SCORING_FORMULA.md +57 -57
  118. package/vendor/Server/Skills/arkts-library-documentation-quality-check/scripts/validate-skill.cjs +259 -259
  119. package/vendor/Server/Skills/arkts-library-interface-spec/SKILL.md +97 -97
  120. package/vendor/Server/Skills/arkts-library-memory-leak-check/SKILL.md +391 -391
  121. package/vendor/Server/Skills/arkts-library-source-clone/SKILL.md +113 -113
  122. package/vendor/Server/Skills/arkts-library-stability-check/SKILL.md +312 -312
  123. package/vendor/Server/Skills/arkts-library-stability-check/assets/REPORT_TEMPLATE.md +154 -154
  124. package/vendor/Server/Skills/arkts-library-stability-check/references/CHECKLIST.md +165 -165
  125. package/vendor/Server/Skills/arkts-library-stability-check/references/CODE_EXAMPLES.md +308 -308
  126. package/vendor/Server/Skills/arkts-library-stability-check/references/SCORING_RULES.md +90 -90
  127. package/vendor/Server/Skills/arkts-library-stability-check/scripts/validate-skill.cjs +282 -282
  128. package/vendor/Server/Skills/arkts-library-test-coverage-check/SKILL.md +360 -360
  129. package/vendor/Server/Skills/arkts-library-test-coverage-check/assets/REPORT_TEMPLATE.md +145 -145
  130. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/CHECKLIST.md +252 -252
  131. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +114 -114
  132. package/vendor/Server/Skills/arkts-library-test-coverage-check/scripts/validate-skill.cjs +262 -262
  133. package/vendor/Server/Skills/arkts-library-xts-code/SKILL.md +455 -455
  134. package/vendor/Server/Skills/arkts-library-xts-code/assets/report-template.md +60 -60
  135. package/vendor/Server/Skills/arkts-library-xts-code/references/ACCESS_MODIFIER_PRECHECK.md +76 -76
  136. package/vendor/Server/Skills/arkts-library-xts-code/references/BUILD_VERIFICATION.md +200 -200
  137. package/vendor/Server/Skills/arkts-library-xts-code/references/CODE_STANDARDS.md +518 -518
  138. package/vendor/Server/Skills/arkts-library-xts-code/references/SUBAGENT_PROMPT_TEMPLATE.md +276 -276
  139. package/vendor/Server/Skills/arkts-library-xts-code/references/SYSTEM_API_LOOKUP.md +92 -92
  140. package/vendor/Server/Skills/arkts-library-xts-code/references/XTS_TEMPLATE.md +767 -767
  141. package/vendor/Server/Skills/arkts-library-xts-code/scripts/build.ps1 +93 -93
  142. package/vendor/Server/Skills/arkts-library-xts-code/scripts/code-linter.cjs +432 -432
  143. package/vendor/Server/Skills/arkts-library-xts-code/scripts/migrate.cjs +851 -851
  144. package/vendor/Server/Skills/arkts-library-xts-code/scripts/ohpm-switch.cjs +788 -788
  145. package/vendor/Server/Skills/arkts-library-xts-code/scripts/precheck-access-modifiers.cjs +221 -221
  146. package/vendor/Server/Skills/arkts-library-xts-code-fix/SKILL.md +228 -228
  147. package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +97 -97
  148. package/vendor/Server/Skills/arkts-library-xts-doc/SKILL.md +194 -194
  149. package/vendor/Server/Skills/arkts-library-xts-doc/references/EXAMPLES.md +575 -575
  150. package/vendor/Server/Skills/arkts-library-xts-doc/references/TEMPLATE.md +574 -574
  151. package/vendor/Server/Skills/arkts-library-xts-doc/references/TESTABILITY_GUIDE.md +182 -182
  152. package/vendor/Server/Skills/arkts-library-xts-execution/SKILL.md +490 -490
  153. package/vendor/Server/Skills/arkts-library-xts-execution/references/error-fixing-examples.md +217 -217
  154. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/build.ps1 +93 -93
  155. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/code-linter.cjs +432 -432
  156. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/migrate.cjs +851 -851
  157. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/ohpm-switch.cjs +788 -788
  158. package/vendor/Server/Skills/flutter-code-check/SKILL.md +299 -299
  159. package/vendor/Server/Skills/flutter-code-check/assets/OUTPUT_TEMPLATE.md +311 -311
  160. package/vendor/Server/Skills/flutter-code-check/references/CHECKLIST.md +190 -190
  161. package/vendor/Server/Skills/flutter-code-check/references/PLATFORMS.md +133 -133
  162. package/vendor/Server/Skills/flutter-code-check/scripts/validate-skill.cjs +259 -259
  163. package/vendor/Server/Skills/flutter-interface/README.md +75 -75
  164. package/vendor/Server/Skills/flutter-interface/SKILL.md +291 -291
  165. package/vendor/Server/Skills/flutter-interface/references/EXAMPLES.md +336 -336
  166. package/vendor/Server/Skills/flutter-interface/references/GIT_CLONE_GUIDE.md +190 -190
  167. package/vendor/Server/Skills/flutter-interface/references/SCRIPT_REFERENCE.md +258 -258
  168. package/vendor/Server/Skills/flutter-interface/references/TEMPLATE.md +254 -254
  169. package/vendor/Server/Skills/flutter-library-consistency-check/SKILL.md +517 -517
  170. package/vendor/Server/Skills/flutter-library-consistency-check/references/CHECKLIST.md +381 -381
  171. package/vendor/Server/Skills/flutter-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +341 -341
  172. package/vendor/Server/Skills/flutter-library-consistency-check/references/PLATFORM_LIMITATION_GUIDE.md +71 -71
  173. package/vendor/Server/Skills/flutter-library-documentation-quality-check/SKILL.md +518 -518
  174. package/vendor/Server/Skills/flutter-library-documentation-quality-check/references/CHECKLIST.md +406 -406
  175. package/vendor/Server/Skills/flutter-library-memory-leak-check/SKILL.md +652 -652
  176. package/vendor/Server/Skills/flutter-library-memory-leak-check/references/CHECKLIST.md +396 -396
  177. package/vendor/Server/Skills/flutter-library-stability-check/SKILL.md +744 -744
  178. package/vendor/Server/Skills/flutter-library-stability-check/references/CHECKLIST.md +720 -720
  179. package/vendor/Server/Skills/flutter-library-test-coverage-check/SKILL.md +414 -414
  180. package/vendor/Server/Skills/flutter-library-test-coverage-check/assets/REPORT_TEMPLATE.md +150 -150
  181. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/CHECKLIST.md +304 -304
  182. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCORING_RULES.md +265 -265
  183. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCRIPT_USAGE.md +286 -286
  184. package/vendor/Server/Skills/knowledge-import/SKILL.md +383 -383
  185. package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +165 -165
  186. package/vendor/Server/Skills/knowledge-import/references/SKILL_LOCATOR_GUIDE.md +91 -91
  187. package/vendor/Server/Skills/knowledge-import/references/SKILL_OPTIMIZATION_GUIDE.md +127 -127
  188. package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +453 -301
  189. package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_CHECKLIST.md +151 -0
  190. package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_ISSUE_TEMPLATE.md +257 -105
  191. package/vendor/Server/Skills/ohos-lib-pr-push/references/GITCODE_API.md +191 -127
  192. package/vendor/Server/Skills/ohos-lib-pr-push/scripts/gitcode-api.cjs +317 -208
  193. package/vendor/Server/Skills/rn-code-check/SKILL.md +320 -320
  194. package/vendor/Server/Skills/rn-code-check/references/API-GUIDE.md +234 -234
  195. package/vendor/Server/Skills/rn-code-check/references/CHECKLIST.md +188 -188
  196. package/vendor/Server/Skills/rn-code-check/references/REPORT-TEMPLATE.md +246 -246
  197. package/vendor/Server/Skills/rn-lib-add-example/SKILL.md +198 -198
  198. package/vendor/Server/Skills/rn-lib-add-example/references/APP_RENAME_GUIDE.md +40 -40
  199. package/vendor/Server/Skills/rn-lib-add-example/references/SHELL_ADAPTATION_CHECKLIST.md +78 -78
  200. package/vendor/Server/Skills/rn-lib-add-example/references/TEMPLATE_REPO_GUIDE.md +70 -70
  201. package/vendor/Server/Skills/rn-lib-add-example/references/VERIFICATION_GUIDE.md +47 -47
  202. package/vendor/Server/Skills/rn-lib-add-example/scripts/create-example.cjs +252 -252
  203. package/vendor/Server/Skills/rn-lib-update-doc/SKILL.md +176 -176
  204. package/vendor/Server/Skills/rn-lib-update-doc/config.json +5 -5
  205. package/vendor/Server/Skills/rn-lib-update-doc/references/changelog-template.md +35 -35
  206. package/vendor/Server/Skills/rn-lib-update-doc/references/format-diff.md +137 -137
  207. package/vendor/Server/Skills/rn-lib-update-doc/references/link-registry.json +33 -33
  208. package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2-overview.md +40 -40
  209. package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2.md +429 -429
  210. package/vendor/Server/Skills/rn-lib-update-doc/scripts/detect-readme-format.cjs +105 -105
  211. package/vendor/Server/Skills/rn-lib-update-doc/scripts/find-usage-doc.cjs +90 -90
  212. package/vendor/Server/Skills/rn-lib-update-doc/scripts/link-verify.cjs +213 -213
  213. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-changelog.cjs +73 -73
  214. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-package-meta.cjs +258 -258
  215. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-readme-links.cjs +341 -341
  216. package/vendor/Server/Skills/rn-lib-update-doc/scripts/resolve-usage-docs.cjs +67 -67
  217. package/vendor/Server/Skills/rn-library-consistency-check/SKILL.md +299 -299
  218. package/vendor/Server/Skills/rn-library-consistency-check/assets/REPORT_TEMPLATE.md +293 -293
  219. package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_COMPONENT_CHECK_GUIDE.md +857 -857
  220. package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_TURBOMODULE_CHECK_GUIDE.md +856 -856
  221. package/vendor/Server/Skills/rn-library-consistency-check/references/CHECKLIST.md +157 -157
  222. package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_COMPONENT_CHECK_GUIDE.md +801 -801
  223. package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_TURBOMODULE_CHECK_GUIDE.md +683 -683
  224. package/vendor/Server/Skills/rn-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +233 -233
  225. package/vendor/Server/Skills/rn-library-consistency-check/references/NATIVE_COMPONENT_IDENTIFICATION.md +1373 -1373
  226. package/vendor/Server/Skills/rn-library-consistency-check/references/SCORING_STANDARD.md +220 -220
  227. package/vendor/Server/Skills/rn-library-consistency-check/scripts/validate-skill.py +245 -245
  228. package/vendor/Server/Skills/rn-library-documentation-quality-check/SKILL.md +263 -263
  229. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL.md +414 -414
  230. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL_en.md +413 -413
  231. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +311 -311
  232. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CHECK_CHECKLIST.md +355 -355
  233. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CROSS_VALIDATION_GUIDE.md +115 -115
  234. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/DOC_COLLECTION_GUIDE.md +139 -139
  235. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/EXAMPLES.md +586 -586
  236. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/GOTCHAS.md +57 -57
  237. package/vendor/Server/Skills/rn-library-documentation-quality-check/scripts/validate-skill.py +259 -259
  238. package/vendor/Server/Skills/rn-library-interface-analyzer/SKILL.md +301 -301
  239. package/vendor/Server/Skills/rn-library-interface-analyzer/assets/REPORT_TEMPLATE.md +148 -148
  240. package/vendor/Server/Skills/rn-library-interface-analyzer/references/DOC_ANNOTATION_GUIDE.md +118 -118
  241. package/vendor/Server/Skills/rn-library-interface-analyzer/references/SCRIPT_USAGE_GUIDE.md +168 -168
  242. package/vendor/Server/Skills/rn-library-interface-analyzer/references/URL_PARSING_RULES.md +176 -176
  243. package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +274 -274
  244. package/vendor/Server/Skills/rn-library-issue-generalizer/assets/case-template.md +45 -45
  245. package/vendor/Server/Skills/rn-library-issue-generalizer/assets/rule-template.md +25 -25
  246. package/vendor/Server/Skills/rn-library-issue-generalizer/references/PR_FETCH_GUIDE.md +61 -61
  247. package/vendor/Server/Skills/rn-library-issue-generalizer/references/RULE_TEMPLATE_GUIDE.md +165 -165
  248. package/vendor/Server/Skills/rn-library-issue-generalizer/scripts/fetch-pr-info.py +239 -239
  249. package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +263 -263
  250. package/vendor/Server/Skills/rn-library-known-issue-check/assets/REPORT_TEMPLATE.md +96 -96
  251. package/vendor/Server/Skills/rn-library-known-issue-check/references/COMPLIANCE_CHECKLIST.md +57 -57
  252. package/vendor/Server/Skills/rn-library-known-issue-check/references/INSPECTION_GUIDE.md +99 -99
  253. package/vendor/Server/Skills/rn-library-known-issue-check/references/PRESCREEN_GUIDE.md +64 -64
  254. package/vendor/Server/Skills/rn-library-known-issue-check/references/SOURCE_PREP_GUIDE.md +74 -74
  255. package/vendor/Server/Skills/rn-library-known-issue-check/scripts/validate-known-issue-report.py +164 -164
  256. package/vendor/Server/Skills/rn-library-memory-leak-check/SKILL.md +356 -339
  257. package/vendor/Server/Skills/rn-library-memory-leak-check/assets/REPORT_TEMPLATE.md +85 -83
  258. package/vendor/Server/Skills/rn-library-memory-leak-check/references/CHECKLIST.md +905 -859
  259. package/vendor/Server/Skills/rn-library-memory-leak-check/references/HARMONY_CODE_PATTERNS.md +124 -122
  260. package/vendor/Server/Skills/rn-library-memory-leak-check/scripts/scan_harmony_code.py +287 -279
  261. package/vendor/Server/Skills/rn-library-stability-check/SKILL.md +273 -273
  262. package/vendor/Server/Skills/rn-library-stability-check/assets/REPORT_TEMPLATE.md +129 -129
  263. package/vendor/Server/Skills/rn-library-stability-check/references/CHECKLIST.md +581 -581
  264. package/vendor/Server/Skills/rn-library-stability-check/references/SCORING_RULES.md +138 -138
  265. package/vendor/Server/Skills/rn-library-stability-check/scripts/scan-harmony-code.py +168 -168
  266. package/vendor/Server/Skills/rn-library-test-coverage-check/SKILL.md +526 -506
  267. package/vendor/Server/Skills/rn-library-test-coverage-check/references/CHECKLIST.md +321 -280
  268. package/vendor/Server/Skills/rn-library-test-coverage-check/references/DEMO_LOCATION.md +221 -221
  269. package/vendor/Server/Skills/rn-library-test-coverage-check/references/REPORT_TEMPLATE.md +220 -209
  270. package/vendor/Server/Skills/rn-library-test-coverage-check/references/SCRIPT_USAGE.md +325 -325
  271. package/vendor/Server/Skills/rn-ohos-xts-generator/SKILL.md +279 -279
  272. package/vendor/Server/Skills/rn-ohos-xts-generator/assets/TEST_FILE_TEMPLATES.md +404 -404
  273. package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_TROUBLESHOOTING.md +185 -185
  274. package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_WORKFLOW.md +265 -265
  275. package/vendor/Server/Skills/rn-ohos-xts-generator/references/COMMON_CONFIG.md +189 -189
  276. package/vendor/Server/Skills/rn-ohos-xts-generator/references/CONFIG_GUIDE.md +203 -203
  277. package/vendor/Server/Skills/rn-ohos-xts-generator/references/COVERAGE_ANALYZER.md +147 -147
  278. package/vendor/Server/Skills/rn-ohos-xts-generator/references/DESIGN_DOC_GUIDE.md +148 -148
  279. package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_FLOW.md +165 -165
  280. package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_STRATEGY.md +195 -195
  281. package/vendor/Server/Skills/rn-ohos-xts-generator/references/HARMONY_SCANNER.md +249 -249
  282. package/vendor/Server/Skills/rn-ohos-xts-generator/references/JEST_FRAMEWORK.md +235 -235
  283. package/vendor/Server/Skills/rn-ohos-xts-generator/references/PLATFORM_COMPAT.md +161 -161
  284. package/vendor/Server/Skills/rn-ohos-xts-generator/references/RN_TEST_PATTERNS.md +413 -413
  285. package/vendor/Server/Skills/rn-ohos-xts-generator/references/SOURCE_PARSER.md +235 -235
  286. package/vendor/Server/Skills/rn-ohos-xts-generator/references/TEST_CONVENTIONS.md +245 -245
  287. package/vendor/Server/Skills/rn-ohos-xts-generator/references/TROUBLESHOOTING.md +282 -282
  288. package/vendor/Server/Skills/rn-ohos-xts-generator/references/USAGE_GUIDE.md +251 -251
  289. package/vendor/Server/Skills/rnoh-cptf-api-test/SKILL.md +469 -469
  290. package/vendor/Server/Skills/rnoh-cptf-api-test/assets/CPTF_TEST_TEMPLATE.md +310 -310
  291. package/vendor/Server/Skills/rnoh-cptf-api-test/assets/DEMO_PAGE_TEMPLATE.md +303 -303
  292. package/vendor/Server/Skills/rnoh-cptf-api-test/references/CPTF_TEST_GENERATION_GUIDE.md +421 -421
  293. package/vendor/Server/Skills/rnoh-cptf-api-test/references/DEMO_GENERATION_GUIDE.md +358 -358
  294. package/vendor/Server/Skills/rnoh-cptf-api-test/references/QUALITY_CHECKLIST.md +114 -114
  295. package/vendor/Server/Skills/rnoh-cptf-api-test/references/SPEC_PARSING_GUIDE.md +274 -274
  296. package/vendor/Server/Skills/rnoh-cptf-api-test/scripts/validate-rnoh-cptf-api-test.sh +185 -185
  297. package/vendor/Server/Skills/rnoh-cptf-demo-test/SKILL.md +191 -191
  298. package/vendor/Server/Skills/rnoh-cptf-demo-test/assets/TEST_TEMPLATE.md +216 -216
  299. package/vendor/Server/Skills/rnoh-cptf-demo-test/references/CPTF_SETUP.md +107 -107
  300. package/vendor/Server/Skills/rnoh-cptf-demo-test/references/DEMO_ANALYSIS.md +120 -120
  301. package/vendor/Server/Skills/rnoh-cptf-demo-test/scripts/validate-rnoh-cptf-test.sh +108 -108
  302. package/vendor/Server/Skills/rnoh-cptf-test-run/SKILL.md +237 -237
  303. package/vendor/Server/Skills/rnoh-cptf-test-run/references/DEBUG_PLAYBOOK.md +261 -261
  304. package/vendor/Server/Skills/rnoh-cptf-test-run/scripts/validate-run-env.sh +112 -112
  305. package/vendor/Server/Skills/rnoh-lib-code-adapt/SKILL.md +497 -497
  306. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/adapt-checklist.md +270 -270
  307. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/api-migration-checklist.md +164 -164
  308. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/common-compile-errors.md +556 -556
  309. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/deveco-cli-tools.md +459 -459
  310. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/edge-cases.md +65 -65
  311. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/har-tgz-build.md +512 -512
  312. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/version-compat-matrix.md +132 -132
  313. package/vendor/Server/Skills/rnoh-lib-code-adapt/scripts/auto-integrate.sh +424 -424
  314. package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +137 -137
  315. package/vendor/Server/Skills/rnoh-lib-demo-create/SKILL.md +306 -306
  316. package/vendor/Server/Skills/rnoh-lib-demo-create/assets/DEMO_PAGE_TEMPLATE.md +485 -485
  317. package/vendor/Server/Skills/rnoh-lib-demo-create/assets/INDEX_TEMPLATE.md +172 -172
  318. package/vendor/Server/Skills/rnoh-lib-demo-create/references/DEMO_CODE_RULES.md +422 -422
  319. package/vendor/Server/Skills/rnoh-lib-demo-create/references/QUALITY_CHECKLIST.md +95 -95
  320. package/vendor/Server/Skills/rnoh-lib-demo-create/references/SOURCE_EXPLORATION.md +169 -169
  321. package/vendor/Server/Skills/rnoh-lib-demo-doc/SKILL.md +554 -554
  322. package/vendor/Server/Skills/rnoh-lib-demo-doc/assets/DEMO_DOC_TEMPLATE.md +106 -106
  323. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/COVERAGE_INCREMENTAL.md +216 -216
  324. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/DEMO_DESIGN_RULES.md +413 -413
  325. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/OUTPUT_FORMAT.md +269 -269
  326. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/QUALITY_CHECKLIST.md +98 -98
  327. package/vendor/Server/Skills/rnoh-lib-func-test/SKILL.md +337 -337
  328. package/vendor/Server/Skills/rnoh-lib-rnt-search/SKILL.md +722 -722
  329. package/vendor/Server/Skills/rnoh-lib-rnt-search/assets/PORT_REPORT_TEMPLATE.md +219 -219
  330. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/DEMO_PORTING_GUIDE.md +345 -345
  331. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/PORT_VERIFICATION.md +269 -269
  332. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/RNT_PROJECT_STRUCTURE.md +173 -173
  333. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/analyze-demo-deps.cjs +267 -267
  334. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/detect-rnoh-version.cjs +174 -174
  335. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/find-rnt-demo.sh +111 -111
  336. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/port-demo.sh +186 -186
  337. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/read-lib-meta.cjs +150 -150
  338. package/vendor/Server/Skills/rnoh-lib-test-align/SKILL.md +296 -296
  339. package/vendor/Server/Skills/rnoh-lib-test-align/references/jest-troubleshooting.md +371 -371
  340. package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +212 -212
  341. package/vendor/Server/Skills/rnoh-lib-test-align/references/runtime-troubleshooting.md +345 -345
  342. package/vendor/Server/Skills/rnoh-lib-test-align/references/unit-test-template.md +223 -223
  343. package/vendor/Server/Skills/rnoh-lib-test-align/scripts/port-test-demo.sh +1053 -1053
  344. package/vendor/Server/Skills/rnoh-lib-version-diff/SKILL.md +295 -255
  345. package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_ADAPTATION.md +82 -77
  346. package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_API_LOOKUP.md +224 -224
  347. package/vendor/Server/Skills/rnoh-lib-version-diff/references/script-reference.md +175 -174
  348. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/detect-upstream-version.js +967 -967
  349. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/generate-diff.js +1798 -1798
  350. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/package.json +5 -5
  351. package/vendor/Server/Skills/rnoh-lib-version-diff/templates/report-template.md +180 -137
  352. package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +145 -145
  353. package/vendor/Server/Skills/skill-generator/SKILL.md +365 -365
  354. package/vendor/Server/Skills/skill-generator/assets/SKILL_TEMPLATE.md +183 -183
  355. package/vendor/Server/Skills/skill-generator/references/COMPLIANCE_CHECKLIST.md +82 -82
  356. package/vendor/Server/Skills/skill-generator/references/KB_QUERY_GUIDE.md +110 -110
  357. package/vendor/Server/Skills/skill-generator/references/MCP_TOOL_DISCOVERY.md +122 -122
  358. package/vendor/Server/Skills/skill-generator/references/SKILL_SPEC.md +121 -121
  359. package/vendor/Server/Skills/skill-generator/scripts/validate-skill.cjs +259 -259
  360. package/vendor/Server/Skills/task-analysis/SKILL.md +234 -234
  361. package/vendor/Server/Skills/task-analysis/assets/OUTPUT_EXAMPLES.md +160 -160
  362. package/vendor/Server/Skills/task-analysis/references/ACCEPTANCE_CRITERIA_GUIDE.md +190 -190
  363. package/vendor/Server/Skills/task-analysis/references/ANALYSIS_SCHEMA.md +224 -224
  364. package/vendor/Server/Skills/task-analysis/references/INTEGRATION_CONTEXT.md +162 -162
  365. package/vendor/Server/Skills/task-analysis/references/LESSONS_LEARNED.md +55 -55
  366. package/vendor/Server/Skills/task-analysis/references/REPLAN_CONTEXT_GUIDE.md +126 -126
  367. package/vendor/Server/Skills/task-analysis/scripts/validate-analysis-output.sh +256 -256
  368. package/vendor/Server/Skills/task-decomposition/SKILL.md +528 -528
  369. package/vendor/Server/Skills/task-decomposition/assets/OUTPUT_EXAMPLES.md +451 -451
  370. package/vendor/Server/Skills/task-decomposition/references/ACCEPTANCE_CRITERIA_GUIDE.md +179 -179
  371. package/vendor/Server/Skills/task-decomposition/references/DEPENDENCY_GRAPH_GUIDE.md +152 -152
  372. package/vendor/Server/Skills/task-decomposition/references/INTEGRATION_CONTEXT.md +175 -175
  373. package/vendor/Server/Skills/task-decomposition/references/REPLAN_CONTEXT_GUIDE.md +195 -195
  374. package/vendor/Server/Skills/task-decomposition/references/TASK_DECOMPOSITION_TEMPLATES.md +226 -226
  375. package/vendor/Server/Skills/task-decomposition/scripts/list-available-skills.cjs +263 -263
  376. package/vendor/Server/Skills/task-decomposition/scripts/skill-blacklist.json +29 -29
  377. package/vendor/Server/Skills/task-decomposition/scripts/validate-decomposition-output.cjs +376 -376
  378. package/vendor/Server/Skills/task-decomposition/scripts/validate-param-consistency.cjs +259 -259
  379. package/vendor/Server/Skills/task-decomposition/scripts/validate-specified-skills.cjs +216 -216
  380. package/vendor/Server/Skills/task-decomposition/scripts/validate-step-graph.cjs +424 -424
  381. package/vendor/Server/Skills/tpc-cpp-check/SKILL.md +427 -427
  382. package/vendor/Server/Skills/tpc-cpp-check/references/CHECKLIST.md +214 -214
  383. package/vendor/Server/Skills/tpc-cpp-check/references/HPKBUILD_GUIDE.md +235 -235
  384. package/vendor/Server/Skills/tpc-cpp-check/references/REPORT_TEMPLATE.md +250 -250
  385. package/vendor/Server/TestCheck/TestCheck.js +775 -775
  386. package/vendor/Server/TestCheck/index.js +11 -11
  387. package/vendor/Server/library/McpToolGuide.js +280 -280
  388. package/vendor/Server/library/StatsService.js +126 -126
  389. package/vendor/Server/library/cstTime.js +16 -16
  390. package/vendor/VERSION +3 -3
  391. package/workflows/pr-check.mjs +105 -105
  392. package/workflows/pr-push.mjs +192 -192
  393. package/vendor/Server/Agent/SkillSelector/types.js +0 -63
@@ -1,491 +1,491 @@
1
- ---
2
- name: arkts-library-xts-execution
3
- description: 执行鸿蒙ArkTs原生库的 XTS 测试用例(含源码已有的和新生成的),编译项目、安装 HAP、通过 hdc 执行 hypium 测试、收集结果并生成执行报告。100% 覆盖所有可测试接口。当需要对鸿蒙ArkTs原生库进行 XTS 测试用例自动化测试,并输出XTS测试报告时调用。
4
- license: Apache-2.0
5
- metadata:
6
- version: "1.0.0"
7
- category: ohos-testing
8
- language: ArkTS/ETS
9
- ---
10
-
11
- # ArkTS 原生库 XTS 测试执行与报告生成
12
-
13
- 本 Skill 编译并执行鸿蒙ArkTs原生库的 XTS 测试用例(含源码已有的和新生成的),收集测试结果,生成测试执行报告。
14
-
15
- > ⚠️ 核心约束:
16
- > 1. 自动诊断源库构建问题,不因源库问题判定任务失败
17
- > 2. 编译成功 → hdc安装 → aa test → 结果收集
18
- > 3. 编译失败 → 尝试自动修复 → 仍失败则标注源库构建问题
19
- > 4. 报告状态区分"测试通过" vs "源库构建问题" vs "设备不可用"
20
-
21
- > 🔴 **Windows PowerShell 兼容性原则(必读!所有 bash 命令必须遵循):**
22
- > 1. **devecocli / hdc 命令**:必须用 `cmd /c` 包裹,否则 PowerShell 执行策略会阻止 `.ps1` 脚本运行:
23
- > ```powershell
24
- > # ✅ 正确
25
- > cmd /c "devecocli signature generate --product default"
26
- > cmd /c "hdc list targets"
27
- > # ❌ 错误 — 会报 PSSecurityException
28
- > devecocli signature generate --product default
29
- > ```
30
- > 2. **含空格路径的可执行文件**:必须用 PowerShell `&` 调用运算符,不能用 `cmd /c`(cmd 无法正确处理含空格的 exe 路径):
31
- > ```powershell
32
- > # ✅ 正确 — & 运算符可正确处理路径中的空格
33
- > & "D:\software\ide\DevEco Studio\tools\node\node.exe" "D:\software\ide\DevEco Studio\tools\hvigor\bin\hvigorw.js" --stop-daemon
34
- > # ❌ 错误 — cmd /c 会把空格处截断,报"不是内部或外部命令"
35
- > cmd /c ""D:\software\ide\DevEco Studio\tools\node\node.exe" "D:\software\ide\DevEco Studio\tools\hvigor\bin\hvigorw.js" --stop-daemon"
36
- > ```
37
- > 3. **管道命令**(hilog + findstr):必须用 `cmd /c` 包裹整个管道,否则 PowerShell 管道与 cmd 管道不兼容:
38
- > ```powershell
39
- > # ✅ 正确
40
- > cmd /c "hdc shell hilog -x" 2>&1 | Select-String "Hypium"
41
- > # 或
42
- > cmd /c "hdc shell hilog -x | findstr Hypium"
43
- > ```
44
- > 4. **DevEco 目录获取**:`where.exe hdc` → 去掉 `\sdk\...` 后缀即为 DevEco 目录
45
-
46
- ---
47
-
48
- ## 任务参数
49
-
50
- | 参数 | 必需 | 说明 |
51
- |------|------|------|
52
- | `sourcePath` | ✅ | 源码根目录 |
53
- | `outputDir` | ✅ | 输出目录(XTS 用例文档和覆盖率报告所在目录) |
54
- | `xtsDocPath` | 可选 | 单个 XTS 用例文档路径;若未提供,从 `outputDir` 搜索 `*XTS用例描述*.md` 或 `arktscoverage-xts-doc.md` |
55
-
56
- ---
57
-
58
- ## 工作流程
59
-
60
- ### 步骤 1:准备工作
61
-
62
- #### 1.1 确认测试文件清单
63
-
64
- 1. `glob` `{{sourcePath}}/entry/src/ohosTest/ets/test/*.test.ets` — 列出所有 `.test.ets` 文件
65
- 2. 排除 `List.test.ets`(入口),其余为测试套件
66
- 3. 若提供了 `{{xtsDocPath}}`,读取提取可测试接口数;否则从 `{{outputDir}}` 自动搜索 XTS 用例文档
67
- 4. 统计测试套件总数
68
-
69
- #### 1.2 注册新测试套件
70
-
71
- 1. `read_file` `{{sourcePath}}/entry/src/ohosTest/ets/test/List.test.ets`
72
- 2. 搜索新测试文件名是否已有 import
73
- 3. 若未注册,在 `export default function testsuite()` 之前追加 import,在 testsuite() 内追加调用:
74
-
75
- ```typescript
76
- import {新套件名} from './{新文件名}';
77
- // 在 testsuite() 内加: {新套件名}();
78
- ```
79
-
80
- #### 1.3 提取 bundleName
81
-
82
- `read_file` `{{sourcePath}}/AppScope/app.json5` → 提取 `bundleName`
83
-
84
- #### 1.4 工程迁移(migrate.cjs,必做不可跳过)
85
-
86
- > 🔴 **强制步骤,禁止跳过**:
87
- > - **无论工程类型(OpenHarmony / HarmonyOS)、无论 `build-profile.json5` 的 `compileSdkVersion` 是否与已安装 SDK 匹配,都必须执行下述迁移脚本**。
88
- > - 禁止以"工程已是新版本""`compileSdkVersion` 已匹配已安装 SDK""工程为 OpenHarmony 无需切换到 HarmonyOS"等理由自行判断并跳过本步骤。
89
- > - 即使 SDK 版本匹配,源工程的 hvigor 文件、`oh-package.json5`、product 的 `runtimeOS`/`compatibleSdkVersion` 等配置仍可能不兼容当前构建环境,必须在编译前执行迁移。
90
-
91
- ArkTS原生库源码多为历史工程,`build-profile.json5` 的 SDK 版本配置、hvigor 文件、oh-package.json5 等经常不兼容当前构建环境。使用 `migrate.cjs` 脚本一次性完成华为官方 Manual Migration 全流程迁移。
92
-
93
- 0. **预迁移设备探测**:
94
-
95
- ```powershell
96
- cmd /c "hdc list targets"
97
- ```
98
- - 若有设备输出,探测设备 API 版本:
99
- ```powershell
100
- cmd /c "hdc shell param get const.ohos.apiversion"
101
- ```
102
- 记录设备 API 版本(如 `23`),作为 `--compatible-api` 参数传入迁移脚本。
103
- - 若无设备,跳过此步(迁移脚本将自动探测已安装 SDK API 版本,`compatibleSdkVersion` = `targetSdkVersion`)。
104
-
105
- 1. 执行迁移脚本:
106
-
107
- ```powershell
108
- # 有设备时(deviceApi 从步骤 0 获取)
109
- node {{skillDir}}/scripts/migrate.cjs --source {{sourcePath}} --compatible-api {deviceApi}
110
-
111
- # 无设备时
112
- node {{skillDir}}/scripts/migrate.cjs --source {{sourcePath}}
113
- ```
114
-
115
- 2. **执行后强制校验(未通过不得进入后续编译)**:
116
- - 迁移脚本必须正常执行完成,输出以 `[migrate] 迁移完成。` 结尾
117
- - 迁移日志包含 `[migrate] SDK版本: compatibleSdkVersion=..., targetSdkVersion=...` 行
118
- - 校验 `{{sourcePath}}/build-profile.json5`:每个 product 的 `runtimeOS` 已为 `HarmonyOS`
119
- - `compatibleSdkVersion` 的 API 版本 ≤ 设备 API 版本(有设备时)或 = 已安装 SDK API 版本(无设备时)
120
- - 任一项不满足 → 重新执行迁移脚本,直至校验通过后方可进入后续编译
121
-
122
- > 迁移在编译前执行,确保构建环境兼容。
123
-
124
- #### 1.5 Code Linter 静态代码检查(编译前必做)
125
-
126
- > 🔴 **编译前静态检查**:在进入步骤 2 弹性编译之前,先通过 Code Linter 静态扫描测试代码,把可静态发现的问题(样式/正确性/性能/安全规则)前置到编译循环之外,减少编译轮次消耗。
127
- > 由脚本 `code-linter.cjs` 自动化完成(config 检测/创建 → 执行 lint → 解析 JSON → 输出报告)。
128
-
129
- 1. **调用脚本检查(作用域:ohosTest 测试代码)**:
130
-
131
- ```powershell
132
- node {{skillDir}}/scripts/code-linter.cjs --source {{sourcePath}} --target entry/src/ohosTest/ets/test
133
- ```
134
-
135
- 脚本行为:
136
- - 探测 `devecocli --version`;不可用 → 报「构建环境不可用」退出码 1,本步骤标注跳过,但**不阻塞进入编译**(编译同样依赖该环境,届时会暴露)
137
- - 检测工程根 `code-linter.json5`;缺失则按推荐规则集自动创建(否则 `devecocli check lint` 会报 `--config-path does not exist`)
138
- - 执行 `devecocli check lint "<target>" --format json --output-path code-linter-raw.json`(仅传 1 个路径,满足命令路径参数限制)
139
- - 解析 `{ issues }`,按 `Error` / `Warning` 统计,输出 `{{sourcePath}}/code-linter-report.json`
140
-
141
- 2. **结果判定**:
142
-
143
- | 情况 | 处理 |
144
- |------|------|
145
- | 退出码 0(0 Error) | 静态检查通过,进入步骤 2 弹性编译 |
146
- | 退出码 2(存在 Error) | 逐条修复(按步骤 2 第三层 P0/P1 映射表),重跑脚本直至 0 Error;计入编译修复轮次 |
147
- | 退出码 1(环境不可用) | 标注"Code Linter 环境不可用,跳过",进入编译 |
148
-
149
- 3. **Warning 处理原则**:
150
- - `@hw-stylistic/file-naming-convention` Warning:多因数字前缀文件名(要求大驼峰)。**不阻塞编译**,无需强制改命名
151
- - 其他 Warning:`addTryCatch`/`addAsyncCatch`/未使用变量等属 P2 优化项,编译通过后按需处理
152
- - **`any`/`unknown` 说明**:Linter 的 `@typescript-eslint/no-explicit-any` 仅对 `.js/.ts` 生效;`.ets` 的 any/unknown 由 ArkTS 编译器强制(`arkts-no-any-unknown`),需在编译验证中确认
153
-
154
- #### 1.6 真机签名与设备检查
155
-
156
- 真机测试需先通过 `devecocli signature generate` 生成调试签名材料并写入 `build-profile.json5`:
157
-
158
- 1. 检查真机连接:
159
- ```powershell
160
- cmd /c "hdc list targets"
161
- ```
162
- 无设备输出 → 报告标注"设备不可用",跳转步骤 4
163
-
164
- 2. 生成签名材料(在项目根目录执行):
165
- ```powershell
166
- cmd /c "devecocli signature generate --product default"
167
- ```
168
- > 自动生成 p12/csr/cer/p7b 签名材料并写入 `build-profile.json5` 的 `signingConfigs`。
169
- > 首次使用前需执行 `devecocli auth login` 登录开发者账号。
170
- > 若提示 `Provision number exceeds limit` 或签名不一致,加 `--force` 强制重新生成。
171
-
172
- 3. 轮询确认设备已连接(每 5s 检查一次,最多 60s):
173
- ```powershell
174
- # 最多尝试 12 次,每次间隔 5s
175
- for ($i = 1; $i -le 12; $i++) {
176
- $result = cmd /c "hdc list targets"
177
- if ($result -match "device") { break }
178
- Start-Sleep -Seconds 5
179
- }
180
- ```
181
- 12 次后仍无设备 → 报告标注"设备不可用",跳转步骤 4
182
-
183
-
184
-
185
- ### 步骤 2:弹性编译(三层策略)
186
-
187
- > 🔴 **hvigor daemon 阻塞**:`devecocli build` 跑完后 daemon 不退出,会阻塞 Agent。
188
- > 所有构建通过 `build.ps1` 执行(.NET Process + 文件重定向,daemon 继承文件 handle,不阻塞 console pipe)。
189
-
190
- #### 第一层:检查构建环境
191
-
192
- ```powershell
193
- cmd /c "devecocli --version"
194
- node --version
195
- where.exe hdc
196
- ```
197
-
198
- > DevEco 目录由 `where.exe hdc` 反推(去掉 `\sdk\...` 后缀)。
199
-
200
- 任一不可用 → "构建环境不可用",跳转步骤 4。
201
-
202
- #### 第二层:首次编译
203
-
204
- 构建测试 HAP(含签名):
205
-
206
- ```powershell
207
- powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -JavaHome -Cmd "devecocli build --modules entry@ohosTest"
208
- ```
209
-
210
- **结果判定:**
211
- - 编译成功 → "编译成功",跳转步骤 3
212
- - 编译失败 → 进入第三层修复
213
-
214
- 产物用 glob 查找(signed):
215
- ```
216
- glob: {{sourcePath}}/entry/build/default/outputs/ohosTest/*.hap → 测试 HAP
217
- ```
218
-
219
- #### 第三层:自动诊断与修复(决策树,最多 5 轮)
220
-
221
- 分析错误输出,按**优先级分级表**修复。详细修复示例参见 [error-fixing-examples.md](references/error-fixing-examples.md)。
222
-
223
- **P0(必须修复,阻止编译)**:
224
-
225
- | 错误模式 | 修复 |
226
- |---------|------|
227
- | `Could not resolve dependency` | `oh-package.json5` 补充 devDependencies |
228
- | `Cannot find module '@ohos/hypium'` | `ohosTest/oh-package.json5` 加 `"@ohos/hypium"` |
229
- | `SDK component not found` | 修正 `build-profile.json5` 的 `compileSdkVersion` |
230
- | `hvigorfile.ts` not found | `git submodule update --init --recursive` |
231
- | `Cannot read property 'xxx' of undefined` | 补充缺失的 `.json5` 字段 |
232
- | 类型错误 / 导入错误 / 括号不匹配 | 修正测试代码中的类型、导入名、括号 |
233
-
234
- > **判定规则**:构建日志出现以下任一模式时,判定为"源库不可修复",**立即终止修复循环**:
235
- > - 连续 2 轮出现的错误均为源库不可修复错误(❌ 行)
236
-
237
- **P1(建议修复,废弃 API 迁移)**— 仅迁移测试代码,源库不迁移:
238
-
239
- | 错误模式 | 修复 |
240
- |---------|------|
241
- | `@ohos.fileio` 废弃 | 迁移到 `@ohos.file.fs`,参数需调整(`fs.open` 返回 `FILE`,非 fd) |
242
- | `AbilityContext` 废弃 | 迁移到 `UIAbilityContext` |
243
- | `Signature verification failed` | `devecocli build -p buildMode=debug -p debuggable=true` |
244
-
245
- **P2(可选优化,源库问题不修复)**:
246
-
247
- | 错误模式 | 处理 |
248
- |---------|------|
249
- | `arkts-no-any` | 源库 ArkTS 规范问题,标注不修复 |
250
- | `arkts-no-dynamic-property` | 源库 ArkTS 规范问题,标注不修复 |
251
- | 未使用变量 / 缺异常处理 | 可选优化,不阻塞编译 |
252
-
253
- **诊断码映射表**(devecocli build 输出中提取诊断码,精确分类):
254
-
255
- | 诊断码 | 类型 | 说明 | 优先级 |
256
- |--------|------|------|--------|
257
- | 28007 | Warning | 权限警告 | P2 |
258
- | 6133 | Warning | 未使用变量 | P2 |
259
- | 6387 | Information | 废弃 API | P1 |
260
- | addTryCatch | Warning | 需异常处理 | P2 |
261
- | addAsyncCatch | Warning | 异步异常处理 | P2 |
262
- | 其他 (Error) | Error | 语法/类型错误 | P0 |
263
-
264
- **决策树流程:**
265
-
266
- ```
267
- 开始诊断
268
-
269
- ├─→ 有 P0 错误? → 修复 P0 → 重新编译 → 判定(计入重试轮次)
270
- │ ├─→ 编译成功 → 步骤 3
271
- │ └─→ 编译失败 → 回到诊断(轮次+1)
272
-
273
- ├─→ 有 P1 错误(无 P0)? → 迁移废弃 API → 重新编译 → 判定
274
- │ ├─→ 编译成功 → 步骤 3
275
- │ └─→ 编译失败 → 回到诊断(轮次+1)
276
-
277
- ├─→ 仅 P2 错误(源库问题)? → 跳过修复 → 尝试编译 → 判定
278
- │ ├─→ 编译成功 → 步骤 3
279
- │ └─→ 编译失败 → ohpm 线上替换(满足触发条件时)→ 降级报告
280
-
281
- └─→ 5 轮仍失败 → ohpm 线上替换(满足触发条件时)→ 降级报告
282
- ```
283
-
284
- > 若连续 2 轮为源库不可修复错误(❌ 行),立即终止修复循环,同样转入 ohpm 线上替换分支(满足触发条件时)。
285
-
286
- **终止判定(立即退出循环)**:
287
-
288
- 若构建日志中出现以下模式,**立即终止修复循环**,不再尝试后续轮次,直接跳转 ohpm 线上替换分支(若满足触发条件):
289
- - 连续 2 轮出现的错误均为源库不可修复错误(❌ 行)
290
-
291
- 终止后在报告中标注编译跳过原因和修复建议。
292
-
293
- **每轮修复后重新编译:**
294
-
295
- ```powershell
296
- powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -JavaHome -Cmd "devecocli build --modules entry@ohosTest"
297
- ```
298
-
299
- 编译成功 → 步骤 3;5 轮仍失败 → 跳转 ohpm 线上替换分支(若满足触发条件)。
300
-
301
- ##### ohpm 线上版本替换(源库原生编译失败兜底,脚本驱动)
302
-
303
- > 当源库**原生库(.so)需复杂构建**(GN/Ninja、FFmpeg、libyuv、NDK、prebuild 等)导致 `devecocli build` 失败时,
304
- > 可用 **ohpm 线上发行版本** 替换本地依赖后继续编译,避免被源库构建问题阻塞 XTS 测试执行。
305
- > 本流程由共享脚本 `ohpm-switch.cjs` 自动化完成(定位/查询/修改/变更记录),使用方法见下文。
306
-
307
- **触发条件(必须全部满足,任一条不满足则跳过本分支,直接走降级):**
308
-
309
- | # | 条件 | 判定方式 |
310
- |---|------|---------|
311
- | 1 | `ohpm` 可用 | 运行 `ohpm --version` 成功 |
312
- | 2 | README 明确源码编译步骤复杂 | 读取源工程 `README.md` / `README_zh.md`,出现以下特征词即判定命中:`.so`、`libyuv`、`FFmpeg`、`soundtouch`、`NDK`、`GN`、`Ninja`、`prebuild`、`预编译`、`编译三方依赖库`、`从源码编译` |
313
- | 3 | 该库存在 ohpm 线上版本 | 脚本查询 `ohpm info <库包名>` 有版本列表即可,或使用 `--version` 显式指定 |
314
- | 4 | 编译持续失败 | 仅 P2 错误修复后仍编译失败;或 5 轮修复仍失败;或连续 2 轮为源库不可修复错误(❌ 行)时触发 |
315
-
316
- **执行步骤(共享脚本,与 DemoCodeSkill / XTSCodeSkill 同源):**
317
-
318
- 1. **调用共享脚本替换依赖**:
319
-
320
- ```powershell
321
- node {{skillDir}}/scripts/ohpm-switch.cjs --source {{sourcePath}}
322
- ```
323
-
324
- > 若脚本定位到多个本地 file 依赖,按脚本输出的候选逐个用 `--pkg <库包名>` 指定重复执行;脚本会:
325
- > - 扫描工程内所有 `oh-package.json5`,定位 `file:` / 相对路径依赖
326
- > - 匹配 `build-profile.json5` `modules[]` 中注册的同名本地模块
327
- > - 通过 `ohpm info <库包名>` 自动查询最新稳定版(亦可 `--version <版本号>` 显式指定,如 `--version 2.0.9`)
328
- > - 将 `oh-package.json5` 中该库依赖改为线上版本号(如 `"@ohos/ijkplayer": "2.0.9"`)
329
- > - 从工程级 `build-profile.json5` 的 `modules[]` 中**移除**该库本地模块条目,避免本地原生库模块再次参与构建触发相同失败
330
- > - 保留 `@ohos/hypium` 等 devDependencies 不变;不修改 `.so`/`.aar`/`.har` 等编译产物映射依赖
331
-
332
- 2. **核验改动清单**:脚本完成后校验 `{{sourcePath}}/ohpm-switch-report.json`,确认:依赖版本变更、build-profile modules 移除项、涉及的库包名与版本号,均与本次任务目标一致。
333
-
334
- 3. **重新安装依赖并编译:**
335
-
336
- ```powershell
337
- cd /d {{sourcePath}} && ohpm install
338
- powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -JavaHome -Cmd "cd /d {{sourcePath}} && devecocli build --modules entry@ohosTest"
339
- ```
340
-
341
- 4. **版本降级 API 兼容性核验(必做,踩坑核心教训)**:线上最新版可能与本地源码版本不一致(如 ijkplayer 本地 `2.0.11-rc.0`,线上最新稳定版 `2.0.9`)。替换后编译通过前,必须对照 `library/index.ets` 导出链逐一确认测试代码 import 的类型/常量/枚举仍存在(如 IjkMediaPlayer、MessageType、PropertiesType、LogUtils 等):
342
- - 全部存在 → 继续后续步骤/执行
343
- - 有缺失 → 优先用 `ohpm info <库包名>` 已列出的其他更接近版本重跑脚本(`--version <旧版本>`);
344
- - 所有线上版本均不满足 → 相关用例标注"需手动验证接口"并在报告备注。
345
-
346
- 5. **结果判定:**
347
-
348
- | 情况 | 处理 |
349
- |------|------|
350
- | 替换后编译通过 | 跳转步骤 3 安装与执行 XTS 测试,报告标注"源库本地原生编译失败,已切换 @ohos/xxx 线上版本 vX.Y.Z 后编译通过",并附 `ohpm-switch-report.json` 改动清单 |
351
- | 替换后仍失败 | 归为源库构建问题,走降级报告,追加"已尝试 ohpm 线上替换仍失败" |
352
- | 无对应 ohpm 线上版本 | 维持原流程,报告说明"未找到对应 ohpm 线上版本" |
353
-
354
- > ⚠️ **修改保留不回滚**,但必须在最终报告中如实记录本次改动(依赖版本变更、build-profile.json5 modules 移除两项,可直接引用 `ohpm-switch-report.json`)。
355
-
356
- #### 降级:5 轮仍失败 / 提前终止
357
-
358
- > 编译失败且修复后仍无法成功 → 标注"源库构建问题",不判定任务失败。
359
- > 报告中记录完整的构建错误日志和已尝试的修复措施。
360
- >
361
- > **降级后报告追加**:
362
- > - 源库不可修复的错误 → 标注"需源库作者修复"
363
- > - **任务状态仍为"完成"**(测试代码生成本身已完成,编译执行因源库问题跳过)
364
-
365
- ---
366
-
367
- ### 步骤 3:安装与执行
368
-
369
- > **安装 → 执行 → 收集结果在同一响应中连续执行。**
370
- > 真机测试只需安装测试 HAP,无需安装主 HAP。
371
-
372
- **步骤 3.1 卸载旧应用并安装测试 HAP:**
373
-
374
- 先用 glob 查找测试 HAP 产物(signed):
375
-
376
- ```
377
- glob: {{sourcePath}}/entry/build/default/outputs/ohosTest/*.hap → 测试 HAP
378
- ```
379
-
380
- 卸载旧应用并安装测试 HAP:
381
-
382
- ```powershell
383
- cmd /c "hdc uninstall {bundleName}"
384
- cmd /c "hdc install {测试HAP绝对路径}"
385
- ```
386
-
387
- > 签名变化会导致安装失败,务必先卸载再安装。
388
- > 真机必须使用 signed HAP,unsigned HAP 无法安装到真机。
389
-
390
- **步骤 3.2 执行 XTS 测试:**
391
-
392
- 动态收集所有测试套件类名(排除 List.test.ets),拼接为 `-s class` 参数:
393
-
394
- ```powershell
395
- cmd /c "hdc shell aa test -b {bundleName} -m entry_test -s unittest /ets/testrunner/OpenHarmonyTestRunner -s class {套件类名逗号分隔列表} -s timeout 15000"
396
- ```
397
-
398
- > 套件类名从步骤 1.1 的 `.test.ets` 文件名推导(去掉 `.test.ets` 后缀即为类名,如 `FastBleTest.test.ets` → `FastBleTest`)。
399
- > `aa test` 输出测试结果到 stdout,无需额外 hilog 收集。
400
-
401
- **步骤 3.3 收集测试结果:**
402
-
403
- 从 `aa test` stdout 解析以下关键行:
404
- - `OHOS_REPORT_RESULT: stream=Tests run: {N}, Failure: {F}, Error: {E}, Pass: {P}, Ignore: 0` → 总结果行
405
- - `OHOS_REPORT_STATUS: ...` → 每个用例的状态
406
-
407
- 统计:总数 / 通过 / 失败(fail) / 错误(error) / 耗时
408
-
409
- > ⚠️ **fail vs error 区分**:fail = 断言不匹配(测试逻辑问题),error = 运行时异常(环境/源库问题)
410
-
411
- ---
412
-
413
- ### 步骤 4:生成执行报告
414
-
415
- `write_file` `{{outputDir}}/arktscoverage-xts-exec-report.md`:
416
-
417
- ```markdown
418
- # {库名} XTS 测试执行报告
419
-
420
- ## 1. 概述
421
- - 库名称 / 测试时间 / 框架 / bundleName
422
- - 已有套件数 / 新增套件数 / 总套件数
423
-
424
- ## 2. 构建环境
425
- - devecocli / Node.js / ohpm 版本
426
- - hdc 设备:{有/无}(设备名称和 OS 版本)
427
- - Code Linter 检查:{通过(0 Error / N Warning)/ 有 Error(已修复)/ 环境不可用跳过},引用 `{{sourcePath}}/code-linter-report.json`
428
- - 编译结果:{成功 / 失败(修复N轮后)/ 环境不可用}
429
- - aa test 执行方式:aa test
430
-
431
- (若已执行 ohpm 线上版本替换,需附加:)
432
- - 源库本地原生编译失败:{原因简述}
433
- - 已切换 ohpm 线上版本:`{库包名}@{版本号}`
434
- - 依赖改动记录:{entry/oh-package.json5 的依赖变更、build-profile.json5 modules[] 移除的模块,可直接引用 `{{sourcePath}}/ohpm-switch-report.json`
435
- - **版本降级 API 兼容核验**:{线上版本对照 library/index.ets 导出链的结果,所有 import 类型是否仍存在;缺失类型的降级处理}
436
-
437
- ## 3. 源库问题诊断(若编译失败)
438
- | 错误类型 | 诊断 | 是否已修复 |
439
- |---------|------|----------|
440
- | 依赖缺失 | oh-package.json5 缺少 @ohos/hypium | ✅ |
441
- | SDK 版本 | compileSdkVersion 不匹配 | ❌(需源库作者修复) |
442
- | ... | ... | ... |
443
-
444
- ## 4. 测试套件清单
445
- | 测试文件 | 类型 | 注册状态 |
446
- |---------|------|---------|
447
- | FileCache.test.ets | 已有 | ✅ |
448
- | ImageKnifeProXtsTest.test.ets | 新增 | ✅ |
449
-
450
- ## 5. 测试结果(若已执行)
451
- | 指标 | 数值 |
452
- |------|------|
453
- | 总数 | N |
454
- | 通过 | P |
455
- | 失败(fail) | F |
456
- | 错误(error) | E |
457
- | 通过率 | P/N % |
458
- | 耗时 | Nms |
459
-
460
- ## 6. 可测试接口覆盖(若已执行)
461
- | 接口 | 用例编号 | 结果 | 备注 |
462
-
463
- ## 7. 失败分析(若有)
464
- - fail 用例:断言不匹配原因分析
465
- - error 用例:运行时异常原因分析(区分环境限制 vs 源库问题)
466
-
467
- ---
468
- 状态: {成功 / 部分通过 / 源库构建问题 / 环境不可用 / 设备不可用}
469
- ```
470
-
471
- ---
472
-
473
- ## 注意事项
474
-
475
- 1. **不为源库问题担责**:源库的依赖/配置/SDK 问题不是测试代码的问题,报告中单独标注
476
- 2. **最多修复 5 轮**:自动修复常见问题后仍编译失败,标注"源库构建问题"
477
- 3. **不为测试代码担责**:测试代码已通过 XTS 代码生成阶段验证,源库构建问题不影响测试代码质量判定
478
- 4. **报告状态细化**:`成功` / `部分通过` / `源库构建问题` / `环境不可用` / `设备不可用`
479
- 5. 新套件必须在 List.test.ets 注册后才能执行
480
- 6. **真机测试只需安装测试 HAP,无需主 HAP**
481
- 7. **测试 HAP 是唯一需构建的产物**:通过 `devecocli build --modules entry@ohosTest` 构建,无需构建主 HAP
482
- 8. **步骤连续执行**:同一响应中连续完成,不输出中间成功信息
483
- 9. **🔴 hvigor daemon 阻塞**:所有构建通过 `build.ps1` 执行,不要直接调用 `devecocli build`。
484
- 每次构建后自动杀 daemon(并行场景下互相误杀代价低,重试即可恢复)。
485
- 10. **🔴 PowerShell 执行策略兼容性**:所有 `devecocli` 和 `hdc` 命令必须用 `cmd /c` 包裹,否则 PowerShell 会阻止 `.ps1` 脚本运行(报 `PSSecurityException`)
486
- 11. **🔴 真机必须使用 signed HAP**:真机无法安装 unsigned HAP,编译前需通过 `devecocli signature generate` 生成签名。必须用 glob 查找实际产物文件名,不可硬编码
487
- 12. **🔴 JAVA_HOME 设置**:测试 HAP 构建使用 `build.ps1 -JavaHome`(脚本自动检测 DevEco 路径并设置 JAVA_HOME):
488
- ```powershell
489
- powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -JavaHome -Cmd "devecocli build --modules entry@ohosTest"
490
- ```
1
+ ---
2
+ name: arkts-library-xts-execution
3
+ description: 执行鸿蒙ArkTs原生库的 XTS 测试用例(含源码已有的和新生成的),编译项目、安装 HAP、通过 hdc 执行 hypium 测试、收集结果并生成执行报告。100% 覆盖所有可测试接口。当需要对鸿蒙ArkTs原生库进行 XTS 测试用例自动化测试,并输出XTS测试报告时调用。
4
+ license: Apache-2.0
5
+ metadata:
6
+ version: "1.0.0"
7
+ category: ohos-testing
8
+ language: ArkTS/ETS
9
+ ---
10
+
11
+ # ArkTS 原生库 XTS 测试执行与报告生成
12
+
13
+ 本 Skill 编译并执行鸿蒙ArkTs原生库的 XTS 测试用例(含源码已有的和新生成的),收集测试结果,生成测试执行报告。
14
+
15
+ > ⚠️ 核心约束:
16
+ > 1. 自动诊断源库构建问题,不因源库问题判定任务失败
17
+ > 2. 编译成功 → hdc安装 → aa test → 结果收集
18
+ > 3. 编译失败 → 尝试自动修复 → 仍失败则标注源库构建问题
19
+ > 4. 报告状态区分"测试通过" vs "源库构建问题" vs "设备不可用"
20
+
21
+ > 🔴 **Windows PowerShell 兼容性原则(必读!所有 bash 命令必须遵循):**
22
+ > 1. **devecocli / hdc 命令**:必须用 `cmd /c` 包裹,否则 PowerShell 执行策略会阻止 `.ps1` 脚本运行:
23
+ > ```powershell
24
+ > # ✅ 正确
25
+ > cmd /c "devecocli signature generate --product default"
26
+ > cmd /c "hdc list targets"
27
+ > # ❌ 错误 — 会报 PSSecurityException
28
+ > devecocli signature generate --product default
29
+ > ```
30
+ > 2. **含空格路径的可执行文件**:必须用 PowerShell `&` 调用运算符,不能用 `cmd /c`(cmd 无法正确处理含空格的 exe 路径):
31
+ > ```powershell
32
+ > # ✅ 正确 — & 运算符可正确处理路径中的空格
33
+ > & "D:\software\ide\DevEco Studio\tools\node\node.exe" "D:\software\ide\DevEco Studio\tools\hvigor\bin\hvigorw.js" --stop-daemon
34
+ > # ❌ 错误 — cmd /c 会把空格处截断,报"不是内部或外部命令"
35
+ > cmd /c ""D:\software\ide\DevEco Studio\tools\node\node.exe" "D:\software\ide\DevEco Studio\tools\hvigor\bin\hvigorw.js" --stop-daemon"
36
+ > ```
37
+ > 3. **管道命令**(hilog + findstr):必须用 `cmd /c` 包裹整个管道,否则 PowerShell 管道与 cmd 管道不兼容:
38
+ > ```powershell
39
+ > # ✅ 正确
40
+ > cmd /c "hdc shell hilog -x" 2>&1 | Select-String "Hypium"
41
+ > # 或
42
+ > cmd /c "hdc shell hilog -x | findstr Hypium"
43
+ > ```
44
+ > 4. **DevEco 目录获取**:`where.exe hdc` → 去掉 `\sdk\...` 后缀即为 DevEco 目录
45
+
46
+ ---
47
+
48
+ ## 任务参数
49
+
50
+ | 参数 | 必需 | 说明 |
51
+ |------|------|------|
52
+ | `sourcePath` | ✅ | 源码根目录 |
53
+ | `outputDir` | ✅ | 输出目录(XTS 用例文档和覆盖率报告所在目录) |
54
+ | `xtsDocPath` | 可选 | 单个 XTS 用例文档路径;若未提供,从 `outputDir` 搜索 `*XTS用例描述*.md` 或 `arktscoverage-xts-doc.md` |
55
+
56
+ ---
57
+
58
+ ## 工作流程
59
+
60
+ ### 步骤 1:准备工作
61
+
62
+ #### 1.1 确认测试文件清单
63
+
64
+ 1. `glob` `{{sourcePath}}/entry/src/ohosTest/ets/test/*.test.ets` — 列出所有 `.test.ets` 文件
65
+ 2. 排除 `List.test.ets`(入口),其余为测试套件
66
+ 3. 若提供了 `{{xtsDocPath}}`,读取提取可测试接口数;否则从 `{{outputDir}}` 自动搜索 XTS 用例文档
67
+ 4. 统计测试套件总数
68
+
69
+ #### 1.2 注册新测试套件
70
+
71
+ 1. `read_file` `{{sourcePath}}/entry/src/ohosTest/ets/test/List.test.ets`
72
+ 2. 搜索新测试文件名是否已有 import
73
+ 3. 若未注册,在 `export default function testsuite()` 之前追加 import,在 testsuite() 内追加调用:
74
+
75
+ ```typescript
76
+ import {新套件名} from './{新文件名}';
77
+ // 在 testsuite() 内加: {新套件名}();
78
+ ```
79
+
80
+ #### 1.3 提取 bundleName
81
+
82
+ `read_file` `{{sourcePath}}/AppScope/app.json5` → 提取 `bundleName`
83
+
84
+ #### 1.4 工程迁移(migrate.cjs,必做不可跳过)
85
+
86
+ > 🔴 **强制步骤,禁止跳过**:
87
+ > - **无论工程类型(OpenHarmony / HarmonyOS)、无论 `build-profile.json5` 的 `compileSdkVersion` 是否与已安装 SDK 匹配,都必须执行下述迁移脚本**。
88
+ > - 禁止以"工程已是新版本""`compileSdkVersion` 已匹配已安装 SDK""工程为 OpenHarmony 无需切换到 HarmonyOS"等理由自行判断并跳过本步骤。
89
+ > - 即使 SDK 版本匹配,源工程的 hvigor 文件、`oh-package.json5`、product 的 `runtimeOS`/`compatibleSdkVersion` 等配置仍可能不兼容当前构建环境,必须在编译前执行迁移。
90
+
91
+ ArkTS原生库源码多为历史工程,`build-profile.json5` 的 SDK 版本配置、hvigor 文件、oh-package.json5 等经常不兼容当前构建环境。使用 `migrate.cjs` 脚本一次性完成华为官方 Manual Migration 全流程迁移。
92
+
93
+ 0. **预迁移设备探测**:
94
+
95
+ ```powershell
96
+ cmd /c "hdc list targets"
97
+ ```
98
+ - 若有设备输出,探测设备 API 版本:
99
+ ```powershell
100
+ cmd /c "hdc shell param get const.ohos.apiversion"
101
+ ```
102
+ 记录设备 API 版本(如 `23`),作为 `--compatible-api` 参数传入迁移脚本。
103
+ - 若无设备,跳过此步(迁移脚本将自动探测已安装 SDK API 版本,`compatibleSdkVersion` = `targetSdkVersion`)。
104
+
105
+ 1. 执行迁移脚本:
106
+
107
+ ```powershell
108
+ # 有设备时(deviceApi 从步骤 0 获取)
109
+ node {{skillDir}}/scripts/migrate.cjs --source {{sourcePath}} --compatible-api {deviceApi}
110
+
111
+ # 无设备时
112
+ node {{skillDir}}/scripts/migrate.cjs --source {{sourcePath}}
113
+ ```
114
+
115
+ 2. **执行后强制校验(未通过不得进入后续编译)**:
116
+ - 迁移脚本必须正常执行完成,输出以 `[migrate] 迁移完成。` 结尾
117
+ - 迁移日志包含 `[migrate] SDK版本: compatibleSdkVersion=..., targetSdkVersion=...` 行
118
+ - 校验 `{{sourcePath}}/build-profile.json5`:每个 product 的 `runtimeOS` 已为 `HarmonyOS`
119
+ - `compatibleSdkVersion` 的 API 版本 ≤ 设备 API 版本(有设备时)或 = 已安装 SDK API 版本(无设备时)
120
+ - 任一项不满足 → 重新执行迁移脚本,直至校验通过后方可进入后续编译
121
+
122
+ > 迁移在编译前执行,确保构建环境兼容。
123
+
124
+ #### 1.5 Code Linter 静态代码检查(编译前必做)
125
+
126
+ > 🔴 **编译前静态检查**:在进入步骤 2 弹性编译之前,先通过 Code Linter 静态扫描测试代码,把可静态发现的问题(样式/正确性/性能/安全规则)前置到编译循环之外,减少编译轮次消耗。
127
+ > 由脚本 `code-linter.cjs` 自动化完成(config 检测/创建 → 执行 lint → 解析 JSON → 输出报告)。
128
+
129
+ 1. **调用脚本检查(作用域:ohosTest 测试代码)**:
130
+
131
+ ```powershell
132
+ node {{skillDir}}/scripts/code-linter.cjs --source {{sourcePath}} --target entry/src/ohosTest/ets/test
133
+ ```
134
+
135
+ 脚本行为:
136
+ - 探测 `devecocli --version`;不可用 → 报「构建环境不可用」退出码 1,本步骤标注跳过,但**不阻塞进入编译**(编译同样依赖该环境,届时会暴露)
137
+ - 检测工程根 `code-linter.json5`;缺失则按推荐规则集自动创建(否则 `devecocli check lint` 会报 `--config-path does not exist`)
138
+ - 执行 `devecocli check lint "<target>" --format json --output-path code-linter-raw.json`(仅传 1 个路径,满足命令路径参数限制)
139
+ - 解析 `{ issues }`,按 `Error` / `Warning` 统计,输出 `{{sourcePath}}/code-linter-report.json`
140
+
141
+ 2. **结果判定**:
142
+
143
+ | 情况 | 处理 |
144
+ |------|------|
145
+ | 退出码 0(0 Error) | 静态检查通过,进入步骤 2 弹性编译 |
146
+ | 退出码 2(存在 Error) | 逐条修复(按步骤 2 第三层 P0/P1 映射表),重跑脚本直至 0 Error;计入编译修复轮次 |
147
+ | 退出码 1(环境不可用) | 标注"Code Linter 环境不可用,跳过",进入编译 |
148
+
149
+ 3. **Warning 处理原则**:
150
+ - `@hw-stylistic/file-naming-convention` Warning:多因数字前缀文件名(要求大驼峰)。**不阻塞编译**,无需强制改命名
151
+ - 其他 Warning:`addTryCatch`/`addAsyncCatch`/未使用变量等属 P2 优化项,编译通过后按需处理
152
+ - **`any`/`unknown` 说明**:Linter 的 `@typescript-eslint/no-explicit-any` 仅对 `.js/.ts` 生效;`.ets` 的 any/unknown 由 ArkTS 编译器强制(`arkts-no-any-unknown`),需在编译验证中确认
153
+
154
+ #### 1.6 真机签名与设备检查
155
+
156
+ 真机测试需先通过 `devecocli signature generate` 生成调试签名材料并写入 `build-profile.json5`:
157
+
158
+ 1. 检查真机连接:
159
+ ```powershell
160
+ cmd /c "hdc list targets"
161
+ ```
162
+ 无设备输出 → 报告标注"设备不可用",跳转步骤 4
163
+
164
+ 2. 生成签名材料(在项目根目录执行):
165
+ ```powershell
166
+ cmd /c "devecocli signature generate --product default"
167
+ ```
168
+ > 自动生成 p12/csr/cer/p7b 签名材料并写入 `build-profile.json5` 的 `signingConfigs`。
169
+ > 首次使用前需执行 `devecocli auth login` 登录开发者账号。
170
+ > 若提示 `Provision number exceeds limit` 或签名不一致,加 `--force` 强制重新生成。
171
+
172
+ 3. 轮询确认设备已连接(每 5s 检查一次,最多 60s):
173
+ ```powershell
174
+ # 最多尝试 12 次,每次间隔 5s
175
+ for ($i = 1; $i -le 12; $i++) {
176
+ $result = cmd /c "hdc list targets"
177
+ if ($result -match "device") { break }
178
+ Start-Sleep -Seconds 5
179
+ }
180
+ ```
181
+ 12 次后仍无设备 → 报告标注"设备不可用",跳转步骤 4
182
+
183
+
184
+
185
+ ### 步骤 2:弹性编译(三层策略)
186
+
187
+ > 🔴 **hvigor daemon 阻塞**:`devecocli build` 跑完后 daemon 不退出,会阻塞 Agent。
188
+ > 所有构建通过 `build.ps1` 执行(.NET Process + 文件重定向,daemon 继承文件 handle,不阻塞 console pipe)。
189
+
190
+ #### 第一层:检查构建环境
191
+
192
+ ```powershell
193
+ cmd /c "devecocli --version"
194
+ node --version
195
+ where.exe hdc
196
+ ```
197
+
198
+ > DevEco 目录由 `where.exe hdc` 反推(去掉 `\sdk\...` 后缀)。
199
+
200
+ 任一不可用 → "构建环境不可用",跳转步骤 4。
201
+
202
+ #### 第二层:首次编译
203
+
204
+ 构建测试 HAP(含签名):
205
+
206
+ ```powershell
207
+ powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -JavaHome -Cmd "devecocli build --modules entry@ohosTest"
208
+ ```
209
+
210
+ **结果判定:**
211
+ - 编译成功 → "编译成功",跳转步骤 3
212
+ - 编译失败 → 进入第三层修复
213
+
214
+ 产物用 glob 查找(signed):
215
+ ```
216
+ glob: {{sourcePath}}/entry/build/default/outputs/ohosTest/*.hap → 测试 HAP
217
+ ```
218
+
219
+ #### 第三层:自动诊断与修复(决策树,最多 5 轮)
220
+
221
+ 分析错误输出,按**优先级分级表**修复。详细修复示例参见 [error-fixing-examples.md](references/error-fixing-examples.md)。
222
+
223
+ **P0(必须修复,阻止编译)**:
224
+
225
+ | 错误模式 | 修复 |
226
+ |---------|------|
227
+ | `Could not resolve dependency` | `oh-package.json5` 补充 devDependencies |
228
+ | `Cannot find module '@ohos/hypium'` | `ohosTest/oh-package.json5` 加 `"@ohos/hypium"` |
229
+ | `SDK component not found` | 修正 `build-profile.json5` 的 `compileSdkVersion` |
230
+ | `hvigorfile.ts` not found | `git submodule update --init --recursive` |
231
+ | `Cannot read property 'xxx' of undefined` | 补充缺失的 `.json5` 字段 |
232
+ | 类型错误 / 导入错误 / 括号不匹配 | 修正测试代码中的类型、导入名、括号 |
233
+
234
+ > **判定规则**:构建日志出现以下任一模式时,判定为"源库不可修复",**立即终止修复循环**:
235
+ > - 连续 2 轮出现的错误均为源库不可修复错误(❌ 行)
236
+
237
+ **P1(建议修复,废弃 API 迁移)**— 仅迁移测试代码,源库不迁移:
238
+
239
+ | 错误模式 | 修复 |
240
+ |---------|------|
241
+ | `@ohos.fileio` 废弃 | 迁移到 `@ohos.file.fs`,参数需调整(`fs.open` 返回 `FILE`,非 fd) |
242
+ | `AbilityContext` 废弃 | 迁移到 `UIAbilityContext` |
243
+ | `Signature verification failed` | `devecocli build -p buildMode=debug -p debuggable=true` |
244
+
245
+ **P2(可选优化,源库问题不修复)**:
246
+
247
+ | 错误模式 | 处理 |
248
+ |---------|------|
249
+ | `arkts-no-any` | 源库 ArkTS 规范问题,标注不修复 |
250
+ | `arkts-no-dynamic-property` | 源库 ArkTS 规范问题,标注不修复 |
251
+ | 未使用变量 / 缺异常处理 | 可选优化,不阻塞编译 |
252
+
253
+ **诊断码映射表**(devecocli build 输出中提取诊断码,精确分类):
254
+
255
+ | 诊断码 | 类型 | 说明 | 优先级 |
256
+ |--------|------|------|--------|
257
+ | 28007 | Warning | 权限警告 | P2 |
258
+ | 6133 | Warning | 未使用变量 | P2 |
259
+ | 6387 | Information | 废弃 API | P1 |
260
+ | addTryCatch | Warning | 需异常处理 | P2 |
261
+ | addAsyncCatch | Warning | 异步异常处理 | P2 |
262
+ | 其他 (Error) | Error | 语法/类型错误 | P0 |
263
+
264
+ **决策树流程:**
265
+
266
+ ```
267
+ 开始诊断
268
+
269
+ ├─→ 有 P0 错误? → 修复 P0 → 重新编译 → 判定(计入重试轮次)
270
+ │ ├─→ 编译成功 → 步骤 3
271
+ │ └─→ 编译失败 → 回到诊断(轮次+1)
272
+
273
+ ├─→ 有 P1 错误(无 P0)? → 迁移废弃 API → 重新编译 → 判定
274
+ │ ├─→ 编译成功 → 步骤 3
275
+ │ └─→ 编译失败 → 回到诊断(轮次+1)
276
+
277
+ ├─→ 仅 P2 错误(源库问题)? → 跳过修复 → 尝试编译 → 判定
278
+ │ ├─→ 编译成功 → 步骤 3
279
+ │ └─→ 编译失败 → ohpm 线上替换(满足触发条件时)→ 降级报告
280
+
281
+ └─→ 5 轮仍失败 → ohpm 线上替换(满足触发条件时)→ 降级报告
282
+ ```
283
+
284
+ > 若连续 2 轮为源库不可修复错误(❌ 行),立即终止修复循环,同样转入 ohpm 线上替换分支(满足触发条件时)。
285
+
286
+ **终止判定(立即退出循环)**:
287
+
288
+ 若构建日志中出现以下模式,**立即终止修复循环**,不再尝试后续轮次,直接跳转 ohpm 线上替换分支(若满足触发条件):
289
+ - 连续 2 轮出现的错误均为源库不可修复错误(❌ 行)
290
+
291
+ 终止后在报告中标注编译跳过原因和修复建议。
292
+
293
+ **每轮修复后重新编译:**
294
+
295
+ ```powershell
296
+ powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -JavaHome -Cmd "devecocli build --modules entry@ohosTest"
297
+ ```
298
+
299
+ 编译成功 → 步骤 3;5 轮仍失败 → 跳转 ohpm 线上替换分支(若满足触发条件)。
300
+
301
+ ##### ohpm 线上版本替换(源库原生编译失败兜底,脚本驱动)
302
+
303
+ > 当源库**原生库(.so)需复杂构建**(GN/Ninja、FFmpeg、libyuv、NDK、prebuild 等)导致 `devecocli build` 失败时,
304
+ > 可用 **ohpm 线上发行版本** 替换本地依赖后继续编译,避免被源库构建问题阻塞 XTS 测试执行。
305
+ > 本流程由共享脚本 `ohpm-switch.cjs` 自动化完成(定位/查询/修改/变更记录),使用方法见下文。
306
+
307
+ **触发条件(必须全部满足,任一条不满足则跳过本分支,直接走降级):**
308
+
309
+ | # | 条件 | 判定方式 |
310
+ |---|------|---------|
311
+ | 1 | `ohpm` 可用 | 运行 `ohpm --version` 成功 |
312
+ | 2 | README 明确源码编译步骤复杂 | 读取源工程 `README.md` / `README_zh.md`,出现以下特征词即判定命中:`.so`、`libyuv`、`FFmpeg`、`soundtouch`、`NDK`、`GN`、`Ninja`、`prebuild`、`预编译`、`编译三方依赖库`、`从源码编译` |
313
+ | 3 | 该库存在 ohpm 线上版本 | 脚本查询 `ohpm info <库包名>` 有版本列表即可,或使用 `--version` 显式指定 |
314
+ | 4 | 编译持续失败 | 仅 P2 错误修复后仍编译失败;或 5 轮修复仍失败;或连续 2 轮为源库不可修复错误(❌ 行)时触发 |
315
+
316
+ **执行步骤(共享脚本,与 DemoCodeSkill / XTSCodeSkill 同源):**
317
+
318
+ 1. **调用共享脚本替换依赖**:
319
+
320
+ ```powershell
321
+ node {{skillDir}}/scripts/ohpm-switch.cjs --source {{sourcePath}}
322
+ ```
323
+
324
+ > 若脚本定位到多个本地 file 依赖,按脚本输出的候选逐个用 `--pkg <库包名>` 指定重复执行;脚本会:
325
+ > - 扫描工程内所有 `oh-package.json5`,定位 `file:` / 相对路径依赖
326
+ > - 匹配 `build-profile.json5` `modules[]` 中注册的同名本地模块
327
+ > - 通过 `ohpm info <库包名>` 自动查询最新稳定版(亦可 `--version <版本号>` 显式指定,如 `--version 2.0.9`)
328
+ > - 将 `oh-package.json5` 中该库依赖改为线上版本号(如 `"@ohos/ijkplayer": "2.0.9"`)
329
+ > - 从工程级 `build-profile.json5` 的 `modules[]` 中**移除**该库本地模块条目,避免本地原生库模块再次参与构建触发相同失败
330
+ > - 保留 `@ohos/hypium` 等 devDependencies 不变;不修改 `.so`/`.aar`/`.har` 等编译产物映射依赖
331
+
332
+ 2. **核验改动清单**:脚本完成后校验 `{{sourcePath}}/ohpm-switch-report.json`,确认:依赖版本变更、build-profile modules 移除项、涉及的库包名与版本号,均与本次任务目标一致。
333
+
334
+ 3. **重新安装依赖并编译:**
335
+
336
+ ```powershell
337
+ cd /d {{sourcePath}} && ohpm install
338
+ powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -JavaHome -Cmd "cd /d {{sourcePath}} && devecocli build --modules entry@ohosTest"
339
+ ```
340
+
341
+ 4. **版本降级 API 兼容性核验(必做,踩坑核心教训)**:线上最新版可能与本地源码版本不一致(如 ijkplayer 本地 `2.0.11-rc.0`,线上最新稳定版 `2.0.9`)。替换后编译通过前,必须对照 `library/index.ets` 导出链逐一确认测试代码 import 的类型/常量/枚举仍存在(如 IjkMediaPlayer、MessageType、PropertiesType、LogUtils 等):
342
+ - 全部存在 → 继续后续步骤/执行
343
+ - 有缺失 → 优先用 `ohpm info <库包名>` 已列出的其他更接近版本重跑脚本(`--version <旧版本>`);
344
+ - 所有线上版本均不满足 → 相关用例标注"需手动验证接口"并在报告备注。
345
+
346
+ 5. **结果判定:**
347
+
348
+ | 情况 | 处理 |
349
+ |------|------|
350
+ | 替换后编译通过 | 跳转步骤 3 安装与执行 XTS 测试,报告标注"源库本地原生编译失败,已切换 @ohos/xxx 线上版本 vX.Y.Z 后编译通过",并附 `ohpm-switch-report.json` 改动清单 |
351
+ | 替换后仍失败 | 归为源库构建问题,走降级报告,追加"已尝试 ohpm 线上替换仍失败" |
352
+ | 无对应 ohpm 线上版本 | 维持原流程,报告说明"未找到对应 ohpm 线上版本" |
353
+
354
+ > ⚠️ **修改保留不回滚**,但必须在最终报告中如实记录本次改动(依赖版本变更、build-profile.json5 modules 移除两项,可直接引用 `ohpm-switch-report.json`)。
355
+
356
+ #### 降级:5 轮仍失败 / 提前终止
357
+
358
+ > 编译失败且修复后仍无法成功 → 标注"源库构建问题",不判定任务失败。
359
+ > 报告中记录完整的构建错误日志和已尝试的修复措施。
360
+ >
361
+ > **降级后报告追加**:
362
+ > - 源库不可修复的错误 → 标注"需源库作者修复"
363
+ > - **任务状态仍为"完成"**(测试代码生成本身已完成,编译执行因源库问题跳过)
364
+
365
+ ---
366
+
367
+ ### 步骤 3:安装与执行
368
+
369
+ > **安装 → 执行 → 收集结果在同一响应中连续执行。**
370
+ > 真机测试只需安装测试 HAP,无需安装主 HAP。
371
+
372
+ **步骤 3.1 卸载旧应用并安装测试 HAP:**
373
+
374
+ 先用 glob 查找测试 HAP 产物(signed):
375
+
376
+ ```
377
+ glob: {{sourcePath}}/entry/build/default/outputs/ohosTest/*.hap → 测试 HAP
378
+ ```
379
+
380
+ 卸载旧应用并安装测试 HAP:
381
+
382
+ ```powershell
383
+ cmd /c "hdc uninstall {bundleName}"
384
+ cmd /c "hdc install {测试HAP绝对路径}"
385
+ ```
386
+
387
+ > 签名变化会导致安装失败,务必先卸载再安装。
388
+ > 真机必须使用 signed HAP,unsigned HAP 无法安装到真机。
389
+
390
+ **步骤 3.2 执行 XTS 测试:**
391
+
392
+ 动态收集所有测试套件类名(排除 List.test.ets),拼接为 `-s class` 参数:
393
+
394
+ ```powershell
395
+ cmd /c "hdc shell aa test -b {bundleName} -m entry_test -s unittest /ets/testrunner/OpenHarmonyTestRunner -s class {套件类名逗号分隔列表} -s timeout 15000"
396
+ ```
397
+
398
+ > 套件类名从步骤 1.1 的 `.test.ets` 文件名推导(去掉 `.test.ets` 后缀即为类名,如 `FastBleTest.test.ets` → `FastBleTest`)。
399
+ > `aa test` 输出测试结果到 stdout,无需额外 hilog 收集。
400
+
401
+ **步骤 3.3 收集测试结果:**
402
+
403
+ 从 `aa test` stdout 解析以下关键行:
404
+ - `OHOS_REPORT_RESULT: stream=Tests run: {N}, Failure: {F}, Error: {E}, Pass: {P}, Ignore: 0` → 总结果行
405
+ - `OHOS_REPORT_STATUS: ...` → 每个用例的状态
406
+
407
+ 统计:总数 / 通过 / 失败(fail) / 错误(error) / 耗时
408
+
409
+ > ⚠️ **fail vs error 区分**:fail = 断言不匹配(测试逻辑问题),error = 运行时异常(环境/源库问题)
410
+
411
+ ---
412
+
413
+ ### 步骤 4:生成执行报告
414
+
415
+ `write_file` `{{outputDir}}/arktscoverage-xts-exec-report.md`:
416
+
417
+ ```markdown
418
+ # {库名} XTS 测试执行报告
419
+
420
+ ## 1. 概述
421
+ - 库名称 / 测试时间 / 框架 / bundleName
422
+ - 已有套件数 / 新增套件数 / 总套件数
423
+
424
+ ## 2. 构建环境
425
+ - devecocli / Node.js / ohpm 版本
426
+ - hdc 设备:{有/无}(设备名称和 OS 版本)
427
+ - Code Linter 检查:{通过(0 Error / N Warning)/ 有 Error(已修复)/ 环境不可用跳过},引用 `{{sourcePath}}/code-linter-report.json`
428
+ - 编译结果:{成功 / 失败(修复N轮后)/ 环境不可用}
429
+ - aa test 执行方式:aa test
430
+
431
+ (若已执行 ohpm 线上版本替换,需附加:)
432
+ - 源库本地原生编译失败:{原因简述}
433
+ - 已切换 ohpm 线上版本:`{库包名}@{版本号}`
434
+ - 依赖改动记录:{entry/oh-package.json5 的依赖变更、build-profile.json5 modules[] 移除的模块,可直接引用 `{{sourcePath}}/ohpm-switch-report.json`
435
+ - **版本降级 API 兼容核验**:{线上版本对照 library/index.ets 导出链的结果,所有 import 类型是否仍存在;缺失类型的降级处理}
436
+
437
+ ## 3. 源库问题诊断(若编译失败)
438
+ | 错误类型 | 诊断 | 是否已修复 |
439
+ |---------|------|----------|
440
+ | 依赖缺失 | oh-package.json5 缺少 @ohos/hypium | ✅ |
441
+ | SDK 版本 | compileSdkVersion 不匹配 | ❌(需源库作者修复) |
442
+ | ... | ... | ... |
443
+
444
+ ## 4. 测试套件清单
445
+ | 测试文件 | 类型 | 注册状态 |
446
+ |---------|------|---------|
447
+ | FileCache.test.ets | 已有 | ✅ |
448
+ | ImageKnifeProXtsTest.test.ets | 新增 | ✅ |
449
+
450
+ ## 5. 测试结果(若已执行)
451
+ | 指标 | 数值 |
452
+ |------|------|
453
+ | 总数 | N |
454
+ | 通过 | P |
455
+ | 失败(fail) | F |
456
+ | 错误(error) | E |
457
+ | 通过率 | P/N % |
458
+ | 耗时 | Nms |
459
+
460
+ ## 6. 可测试接口覆盖(若已执行)
461
+ | 接口 | 用例编号 | 结果 | 备注 |
462
+
463
+ ## 7. 失败分析(若有)
464
+ - fail 用例:断言不匹配原因分析
465
+ - error 用例:运行时异常原因分析(区分环境限制 vs 源库问题)
466
+
467
+ ---
468
+ 状态: {成功 / 部分通过 / 源库构建问题 / 环境不可用 / 设备不可用}
469
+ ```
470
+
471
+ ---
472
+
473
+ ## 注意事项
474
+
475
+ 1. **不为源库问题担责**:源库的依赖/配置/SDK 问题不是测试代码的问题,报告中单独标注
476
+ 2. **最多修复 5 轮**:自动修复常见问题后仍编译失败,标注"源库构建问题"
477
+ 3. **不为测试代码担责**:测试代码已通过 XTS 代码生成阶段验证,源库构建问题不影响测试代码质量判定
478
+ 4. **报告状态细化**:`成功` / `部分通过` / `源库构建问题` / `环境不可用` / `设备不可用`
479
+ 5. 新套件必须在 List.test.ets 注册后才能执行
480
+ 6. **真机测试只需安装测试 HAP,无需主 HAP**
481
+ 7. **测试 HAP 是唯一需构建的产物**:通过 `devecocli build --modules entry@ohosTest` 构建,无需构建主 HAP
482
+ 8. **步骤连续执行**:同一响应中连续完成,不输出中间成功信息
483
+ 9. **🔴 hvigor daemon 阻塞**:所有构建通过 `build.ps1` 执行,不要直接调用 `devecocli build`。
484
+ 每次构建后自动杀 daemon(并行场景下互相误杀代价低,重试即可恢复)。
485
+ 10. **🔴 PowerShell 执行策略兼容性**:所有 `devecocli` 和 `hdc` 命令必须用 `cmd /c` 包裹,否则 PowerShell 会阻止 `.ps1` 脚本运行(报 `PSSecurityException`)
486
+ 11. **🔴 真机必须使用 signed HAP**:真机无法安装 unsigned HAP,编译前需通过 `devecocli signature generate` 生成签名。必须用 glob 查找实际产物文件名,不可硬编码
487
+ 12. **🔴 JAVA_HOME 设置**:测试 HAP 构建使用 `build.ps1 -JavaHome`(脚本自动检测 DevEco 路径并设置 JAVA_HOME):
488
+ ```powershell
489
+ powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -JavaHome -Cmd "devecocli build --modules entry@ohosTest"
490
+ ```
491
491
  13. **🔴 签名一致性**:签名变化会导致安装失败,安装前务必先 `hdc uninstall` 卸载旧应用