@ohos-cpf/3rdloop 0.0.2 → 0.0.4
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.
- package/README.md +290 -244
- package/bin/3rdloop.mjs +46 -46
- package/lib/cli.js +781 -781
- package/lib/config-cmd.js +451 -451
- package/lib/config.js +318 -318
- package/lib/doctor.js +113 -113
- package/lib/exit-codes.js +30 -30
- package/lib/opencode.js +155 -155
- package/lib/orch.js +426 -426
- package/lib/queries.js +263 -263
- package/lib/step.js +325 -325
- package/lib/ui.js +222 -222
- package/lib/update.js +279 -279
- package/lib/workflow.js +308 -308
- package/lib/workflows.js +131 -131
- package/package.json +50 -50
- package/vendor/Server/Agent/SkillSelector/README.md +343 -343
- package/vendor/Server/Agent/SkillSelector/core/Agent.js +207 -207
- package/vendor/Server/Agent/SkillSelector/index.js +14 -14
- package/vendor/Server/Agent/SkillSelector/llm/llmClient.js +313 -313
- package/vendor/Server/Agent/SkillSelector/llm/prompts.js +161 -161
- package/vendor/Server/Agent/SkillSelector/llm/reactSteps.js +144 -144
- package/vendor/Server/Agent/SkillSelector/matcher/fuzzyMatcher.js +433 -433
- package/vendor/Server/Agent/SkillSelector/scanner/skillScanner.js +382 -382
- package/vendor/Server/Agent/SkillSelector/utils/actionWords.js +59 -59
- package/vendor/Server/Brain/AnalysisStrategies.js +422 -422
- package/vendor/Server/Brain/Brain.js +686 -686
- package/vendor/Server/Brain/DecompositionStrategies.js +621 -621
- package/vendor/Server/Brain/PlanPersistence.js +196 -196
- package/vendor/Server/Brain/SkillExecutor.js +251 -251
- package/vendor/Server/Brain/index.js +11 -11
- package/vendor/Server/CLI/cli.js +275 -275
- package/vendor/Server/CLI/deveco-code/index.js +71 -71
- package/vendor/Server/CLI/deveco-code.js +5 -5
- package/vendor/Server/CLI/opencode/index.js +817 -818
- package/vendor/Server/CLI/opencode.js +5 -5
- package/vendor/Server/DbUse/MessageArchive.js +61 -61
- package/vendor/Server/DbUse/StorageManager.js +107 -107
- package/vendor/Server/DbUse/adapters/BaseAdapter.js +94 -94
- package/vendor/Server/DbUse/adapters/FileAdapter.js +138 -138
- package/vendor/Server/DbUse/adapters/JsonAdapter.js +138 -138
- package/vendor/Server/DbUse/adapters/JsonlAdapter.js +114 -114
- package/vendor/Server/DbUse/adapters/SqliteAdapter.js +157 -157
- package/vendor/Server/DbUse/index.js +160 -160
- package/vendor/Server/DbUse/stores/SessionStore.js +279 -279
- package/vendor/Server/DbUse/stores/TaskExecutionStore.js +133 -133
- package/vendor/Server/DbUse/stores/TaskRegistryStore.js +262 -262
- package/vendor/Server/DbUse/stores/TaskStepStore.js +279 -279
- package/vendor/Server/FlexRunner/FlexRunner.js +1759 -1759
- package/vendor/Server/FlexRunner/index.js +12 -12
- package/vendor/Server/Knowledge/KnowledgeImporter.js +523 -523
- package/vendor/Server/Knowledge/KnowledgeManager.js +341 -341
- package/vendor/Server/Knowledge/index.js +33 -33
- package/vendor/Server/LoopEngine/LoopEngine.js +1133 -1133
- package/vendor/Server/LoopEngine/index.js +11 -11
- package/vendor/Server/Orchestrator/Orchestrator.js +0 -3
- package/vendor/Server/Orchestrator/StepNode.js +312 -312
- package/vendor/Server/Orchestrator/index.js +13 -13
- package/vendor/Server/Routes/controllers/BrainController.js +241 -241
- package/vendor/Server/Routes/controllers/FlexRunnerController.js +1125 -1125
- package/vendor/Server/Routes/controllers/HealthController.js +44 -44
- package/vendor/Server/Routes/controllers/KnowledgeImportController.js +355 -355
- package/vendor/Server/Routes/controllers/LoopEngineController.js +788 -788
- package/vendor/Server/Routes/controllers/StatsController.js +57 -57
- package/vendor/Server/Routes/controllers/StreamController.js +67 -67
- package/vendor/Server/Routes/library/logger.js +179 -179
- package/vendor/Server/Routes/library/zipArchive.js +172 -172
- package/vendor/Server/Routes/router/Router.js +204 -204
- package/vendor/Server/Routes/routes/brain.js +47 -47
- package/vendor/Server/Routes/routes/flexrunner.js +72 -72
- package/vendor/Server/Routes/routes/health.js +28 -28
- package/vendor/Server/Routes/routes/index.js +57 -57
- package/vendor/Server/Routes/routes/knowledge.js +55 -55
- package/vendor/Server/Routes/routes/loopengine.js +58 -58
- package/vendor/Server/Routes/routes/orchestrator.js +61 -61
- package/vendor/Server/Routes/routes/registry.js +97 -97
- package/vendor/Server/Routes/routes/stats.js +23 -23
- package/vendor/Server/Routes/routes/stream.js +30 -30
- package/vendor/Server/Routes/server.js +203 -203
- package/vendor/Server/Routes/sse/SseHub.js +308 -308
- package/vendor/Server/Skills/acceptance-check/SKILL.md +191 -191
- package/vendor/Server/Skills/acceptance-check/references/PHASE1_ARTIFACT_COLLECTION.md +52 -52
- package/vendor/Server/Skills/acceptance-check/references/PHASE2_CRITERIA_EVALUATION.md +77 -77
- package/vendor/Server/Skills/acceptance-check/references/PHASE2_EVIDENCE_VERIFICATION.md +70 -70
- package/vendor/Server/Skills/arkts-code-check/SKILL.md +320 -320
- package/vendor/Server/Skills/arkts-code-check/references/CODE_CHECK_GUIDE.md +210 -210
- package/vendor/Server/Skills/arkts-code-check/references/FILE_TYPE_GUIDE.md +28 -28
- package/vendor/Server/Skills/arkts-code-check/references/PHASE1_INFO_COLLECTION.md +233 -233
- package/vendor/Server/Skills/arkts-code-check/references/REPORT_TEMPLATE.md +219 -219
- package/vendor/Server/Skills/arkts-library-compile-validate/SKILL.md +328 -328
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-demo-code/SKILL.md +291 -291
- package/vendor/Server/Skills/arkts-library-demo-code/references/API_SIGNATURE_CHECKS.md +68 -68
- package/vendor/Server/Skills/arkts-library-demo-code/references/BUILD_VALIDATION.md +184 -184
- package/vendor/Server/Skills/arkts-library-demo-code/references/CODE_STANDARDS.md +337 -337
- package/vendor/Server/Skills/arkts-library-demo-code/references/EXAMPLES.md +400 -400
- package/vendor/Server/Skills/arkts-library-demo-code/references/SYSTEM_API_LOOKUP.md +98 -98
- package/vendor/Server/Skills/arkts-library-demo-code/references/TEMPLATE.md +544 -544
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-demo-coverage/SKILL.md +174 -174
- package/vendor/Server/Skills/arkts-library-demo-scenario/SKILL.md +321 -321
- package/vendor/Server/Skills/arkts-library-demo-scenario/references/EXAMPLES.md +100 -100
- package/vendor/Server/Skills/arkts-library-demo-scenario/references/TEMPLATE.md +185 -185
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/SKILL.md +233 -233
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +102 -102
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/CHECK_DIMENSIONS.md +89 -89
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/COMPLIANCE_CHECKLIST.md +62 -62
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/KB_QUERY_GUIDE.md +107 -107
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/MCP_TOOL_DISCOVERY.md +124 -124
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/REPORT_TEMPLATE.md +90 -90
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/SCORING_FORMULA.md +57 -57
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/arkts-library-interface-spec/SKILL.md +97 -97
- package/vendor/Server/Skills/arkts-library-memory-leak-check/SKILL.md +391 -391
- package/vendor/Server/Skills/arkts-library-source-clone/SKILL.md +113 -113
- package/vendor/Server/Skills/arkts-library-stability-check/SKILL.md +312 -312
- package/vendor/Server/Skills/arkts-library-stability-check/assets/REPORT_TEMPLATE.md +154 -154
- package/vendor/Server/Skills/arkts-library-stability-check/references/CHECKLIST.md +165 -165
- package/vendor/Server/Skills/arkts-library-stability-check/references/CODE_EXAMPLES.md +308 -308
- package/vendor/Server/Skills/arkts-library-stability-check/references/SCORING_RULES.md +90 -90
- package/vendor/Server/Skills/arkts-library-stability-check/scripts/validate-skill.cjs +282 -282
- package/vendor/Server/Skills/arkts-library-test-coverage-check/SKILL.md +360 -360
- package/vendor/Server/Skills/arkts-library-test-coverage-check/assets/REPORT_TEMPLATE.md +145 -145
- package/vendor/Server/Skills/arkts-library-test-coverage-check/references/CHECKLIST.md +252 -252
- package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +114 -114
- package/vendor/Server/Skills/arkts-library-test-coverage-check/scripts/validate-skill.cjs +262 -262
- package/vendor/Server/Skills/arkts-library-xts-code/SKILL.md +455 -455
- package/vendor/Server/Skills/arkts-library-xts-code/assets/report-template.md +60 -60
- package/vendor/Server/Skills/arkts-library-xts-code/references/ACCESS_MODIFIER_PRECHECK.md +76 -76
- package/vendor/Server/Skills/arkts-library-xts-code/references/BUILD_VERIFICATION.md +200 -200
- package/vendor/Server/Skills/arkts-library-xts-code/references/CODE_STANDARDS.md +518 -518
- package/vendor/Server/Skills/arkts-library-xts-code/references/SUBAGENT_PROMPT_TEMPLATE.md +276 -276
- package/vendor/Server/Skills/arkts-library-xts-code/references/SYSTEM_API_LOOKUP.md +92 -92
- package/vendor/Server/Skills/arkts-library-xts-code/references/XTS_TEMPLATE.md +767 -767
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/precheck-access-modifiers.cjs +221 -221
- package/vendor/Server/Skills/arkts-library-xts-code-fix/SKILL.md +228 -228
- package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +97 -97
- package/vendor/Server/Skills/arkts-library-xts-doc/SKILL.md +194 -194
- package/vendor/Server/Skills/arkts-library-xts-doc/references/EXAMPLES.md +575 -575
- package/vendor/Server/Skills/arkts-library-xts-doc/references/TEMPLATE.md +574 -574
- package/vendor/Server/Skills/arkts-library-xts-doc/references/TESTABILITY_GUIDE.md +182 -182
- package/vendor/Server/Skills/arkts-library-xts-execution/SKILL.md +490 -490
- package/vendor/Server/Skills/arkts-library-xts-execution/references/error-fixing-examples.md +217 -217
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/flutter-code-check/SKILL.md +299 -299
- package/vendor/Server/Skills/flutter-code-check/assets/OUTPUT_TEMPLATE.md +311 -311
- package/vendor/Server/Skills/flutter-code-check/references/CHECKLIST.md +190 -190
- package/vendor/Server/Skills/flutter-code-check/references/PLATFORMS.md +133 -133
- package/vendor/Server/Skills/flutter-code-check/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/flutter-interface/README.md +75 -75
- package/vendor/Server/Skills/flutter-interface/SKILL.md +291 -291
- package/vendor/Server/Skills/flutter-interface/references/EXAMPLES.md +336 -336
- package/vendor/Server/Skills/flutter-interface/references/GIT_CLONE_GUIDE.md +190 -190
- package/vendor/Server/Skills/flutter-interface/references/SCRIPT_REFERENCE.md +258 -258
- package/vendor/Server/Skills/flutter-interface/references/TEMPLATE.md +254 -254
- package/vendor/Server/Skills/flutter-library-consistency-check/SKILL.md +517 -517
- package/vendor/Server/Skills/flutter-library-consistency-check/references/CHECKLIST.md +381 -381
- package/vendor/Server/Skills/flutter-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +341 -341
- package/vendor/Server/Skills/flutter-library-consistency-check/references/PLATFORM_LIMITATION_GUIDE.md +71 -71
- package/vendor/Server/Skills/flutter-library-documentation-quality-check/SKILL.md +518 -518
- package/vendor/Server/Skills/flutter-library-documentation-quality-check/references/CHECKLIST.md +406 -406
- package/vendor/Server/Skills/flutter-library-memory-leak-check/SKILL.md +652 -652
- package/vendor/Server/Skills/flutter-library-memory-leak-check/references/CHECKLIST.md +396 -396
- package/vendor/Server/Skills/flutter-library-stability-check/SKILL.md +744 -744
- package/vendor/Server/Skills/flutter-library-stability-check/references/CHECKLIST.md +720 -720
- package/vendor/Server/Skills/flutter-library-test-coverage-check/SKILL.md +414 -414
- package/vendor/Server/Skills/flutter-library-test-coverage-check/assets/REPORT_TEMPLATE.md +150 -150
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/CHECKLIST.md +304 -304
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCORING_RULES.md +265 -265
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCRIPT_USAGE.md +286 -286
- package/vendor/Server/Skills/knowledge-import/SKILL.md +383 -383
- package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +165 -165
- package/vendor/Server/Skills/knowledge-import/references/SKILL_LOCATOR_GUIDE.md +91 -91
- package/vendor/Server/Skills/knowledge-import/references/SKILL_OPTIMIZATION_GUIDE.md +127 -127
- package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +453 -301
- package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_CHECKLIST.md +151 -0
- package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_ISSUE_TEMPLATE.md +257 -105
- package/vendor/Server/Skills/ohos-lib-pr-push/references/GITCODE_API.md +191 -127
- package/vendor/Server/Skills/ohos-lib-pr-push/scripts/gitcode-api.cjs +317 -208
- package/vendor/Server/Skills/rn-code-check/SKILL.md +320 -320
- package/vendor/Server/Skills/rn-code-check/references/API-GUIDE.md +234 -234
- package/vendor/Server/Skills/rn-code-check/references/CHECKLIST.md +188 -188
- package/vendor/Server/Skills/rn-code-check/references/REPORT-TEMPLATE.md +246 -246
- package/vendor/Server/Skills/rn-lib-add-example/SKILL.md +198 -198
- package/vendor/Server/Skills/rn-lib-add-example/references/APP_RENAME_GUIDE.md +40 -40
- package/vendor/Server/Skills/rn-lib-add-example/references/SHELL_ADAPTATION_CHECKLIST.md +78 -78
- package/vendor/Server/Skills/rn-lib-add-example/references/TEMPLATE_REPO_GUIDE.md +70 -70
- package/vendor/Server/Skills/rn-lib-add-example/references/VERIFICATION_GUIDE.md +47 -47
- package/vendor/Server/Skills/rn-lib-add-example/scripts/create-example.cjs +252 -252
- package/vendor/Server/Skills/rn-lib-update-doc/SKILL.md +176 -176
- package/vendor/Server/Skills/rn-lib-update-doc/config.json +5 -5
- package/vendor/Server/Skills/rn-lib-update-doc/references/changelog-template.md +35 -35
- package/vendor/Server/Skills/rn-lib-update-doc/references/format-diff.md +137 -137
- package/vendor/Server/Skills/rn-lib-update-doc/references/link-registry.json +33 -33
- package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2-overview.md +40 -40
- package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2.md +429 -429
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/detect-readme-format.cjs +105 -105
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/find-usage-doc.cjs +90 -90
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/link-verify.cjs +213 -213
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-changelog.cjs +73 -73
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-package-meta.cjs +258 -258
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-readme-links.cjs +341 -341
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/resolve-usage-docs.cjs +67 -67
- package/vendor/Server/Skills/rn-library-consistency-check/SKILL.md +299 -299
- package/vendor/Server/Skills/rn-library-consistency-check/assets/REPORT_TEMPLATE.md +293 -293
- package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_COMPONENT_CHECK_GUIDE.md +857 -857
- package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_TURBOMODULE_CHECK_GUIDE.md +856 -856
- package/vendor/Server/Skills/rn-library-consistency-check/references/CHECKLIST.md +157 -157
- package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_COMPONENT_CHECK_GUIDE.md +801 -801
- package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_TURBOMODULE_CHECK_GUIDE.md +683 -683
- package/vendor/Server/Skills/rn-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +233 -233
- package/vendor/Server/Skills/rn-library-consistency-check/references/NATIVE_COMPONENT_IDENTIFICATION.md +1373 -1373
- package/vendor/Server/Skills/rn-library-consistency-check/references/SCORING_STANDARD.md +220 -220
- package/vendor/Server/Skills/rn-library-consistency-check/scripts/validate-skill.py +245 -245
- package/vendor/Server/Skills/rn-library-documentation-quality-check/SKILL.md +263 -263
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL.md +414 -414
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL_en.md +413 -413
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +311 -311
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CHECK_CHECKLIST.md +355 -355
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CROSS_VALIDATION_GUIDE.md +115 -115
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/DOC_COLLECTION_GUIDE.md +139 -139
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/EXAMPLES.md +586 -586
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/GOTCHAS.md +57 -57
- package/vendor/Server/Skills/rn-library-documentation-quality-check/scripts/validate-skill.py +259 -259
- package/vendor/Server/Skills/rn-library-interface-analyzer/SKILL.md +301 -301
- package/vendor/Server/Skills/rn-library-interface-analyzer/assets/REPORT_TEMPLATE.md +148 -148
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/DOC_ANNOTATION_GUIDE.md +118 -118
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/SCRIPT_USAGE_GUIDE.md +168 -168
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/URL_PARSING_RULES.md +176 -176
- package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +274 -274
- package/vendor/Server/Skills/rn-library-issue-generalizer/assets/case-template.md +45 -45
- package/vendor/Server/Skills/rn-library-issue-generalizer/assets/rule-template.md +25 -25
- package/vendor/Server/Skills/rn-library-issue-generalizer/references/PR_FETCH_GUIDE.md +61 -61
- package/vendor/Server/Skills/rn-library-issue-generalizer/references/RULE_TEMPLATE_GUIDE.md +165 -165
- package/vendor/Server/Skills/rn-library-issue-generalizer/scripts/fetch-pr-info.py +239 -239
- package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +263 -263
- package/vendor/Server/Skills/rn-library-known-issue-check/assets/REPORT_TEMPLATE.md +96 -96
- package/vendor/Server/Skills/rn-library-known-issue-check/references/COMPLIANCE_CHECKLIST.md +57 -57
- package/vendor/Server/Skills/rn-library-known-issue-check/references/INSPECTION_GUIDE.md +99 -99
- package/vendor/Server/Skills/rn-library-known-issue-check/references/PRESCREEN_GUIDE.md +64 -64
- package/vendor/Server/Skills/rn-library-known-issue-check/references/SOURCE_PREP_GUIDE.md +74 -74
- package/vendor/Server/Skills/rn-library-known-issue-check/scripts/validate-known-issue-report.py +164 -164
- package/vendor/Server/Skills/rn-library-memory-leak-check/SKILL.md +356 -339
- package/vendor/Server/Skills/rn-library-memory-leak-check/assets/REPORT_TEMPLATE.md +85 -83
- package/vendor/Server/Skills/rn-library-memory-leak-check/references/CHECKLIST.md +905 -859
- package/vendor/Server/Skills/rn-library-memory-leak-check/references/HARMONY_CODE_PATTERNS.md +124 -122
- package/vendor/Server/Skills/rn-library-memory-leak-check/scripts/scan_harmony_code.py +287 -279
- package/vendor/Server/Skills/rn-library-stability-check/SKILL.md +273 -273
- package/vendor/Server/Skills/rn-library-stability-check/assets/REPORT_TEMPLATE.md +129 -129
- package/vendor/Server/Skills/rn-library-stability-check/references/CHECKLIST.md +581 -581
- package/vendor/Server/Skills/rn-library-stability-check/references/SCORING_RULES.md +138 -138
- package/vendor/Server/Skills/rn-library-stability-check/scripts/scan-harmony-code.py +168 -168
- package/vendor/Server/Skills/rn-library-test-coverage-check/SKILL.md +526 -506
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/CHECKLIST.md +321 -280
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/DEMO_LOCATION.md +221 -221
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/REPORT_TEMPLATE.md +220 -209
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/SCRIPT_USAGE.md +325 -325
- package/vendor/Server/Skills/rn-ohos-xts-generator/SKILL.md +279 -279
- package/vendor/Server/Skills/rn-ohos-xts-generator/assets/TEST_FILE_TEMPLATES.md +404 -404
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_TROUBLESHOOTING.md +185 -185
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_WORKFLOW.md +265 -265
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/COMMON_CONFIG.md +189 -189
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/CONFIG_GUIDE.md +203 -203
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/COVERAGE_ANALYZER.md +147 -147
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/DESIGN_DOC_GUIDE.md +148 -148
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_FLOW.md +165 -165
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_STRATEGY.md +195 -195
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/HARMONY_SCANNER.md +249 -249
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/JEST_FRAMEWORK.md +235 -235
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/PLATFORM_COMPAT.md +161 -161
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/RN_TEST_PATTERNS.md +413 -413
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/SOURCE_PARSER.md +235 -235
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/TEST_CONVENTIONS.md +245 -245
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/TROUBLESHOOTING.md +282 -282
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/USAGE_GUIDE.md +251 -251
- package/vendor/Server/Skills/rnoh-cptf-api-test/SKILL.md +469 -469
- package/vendor/Server/Skills/rnoh-cptf-api-test/assets/CPTF_TEST_TEMPLATE.md +310 -310
- package/vendor/Server/Skills/rnoh-cptf-api-test/assets/DEMO_PAGE_TEMPLATE.md +303 -303
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/CPTF_TEST_GENERATION_GUIDE.md +421 -421
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/DEMO_GENERATION_GUIDE.md +358 -358
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/QUALITY_CHECKLIST.md +114 -114
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/SPEC_PARSING_GUIDE.md +274 -274
- package/vendor/Server/Skills/rnoh-cptf-api-test/scripts/validate-rnoh-cptf-api-test.sh +185 -185
- package/vendor/Server/Skills/rnoh-cptf-demo-test/SKILL.md +191 -191
- package/vendor/Server/Skills/rnoh-cptf-demo-test/assets/TEST_TEMPLATE.md +216 -216
- package/vendor/Server/Skills/rnoh-cptf-demo-test/references/CPTF_SETUP.md +107 -107
- package/vendor/Server/Skills/rnoh-cptf-demo-test/references/DEMO_ANALYSIS.md +120 -120
- package/vendor/Server/Skills/rnoh-cptf-demo-test/scripts/validate-rnoh-cptf-test.sh +108 -108
- package/vendor/Server/Skills/rnoh-cptf-test-run/SKILL.md +237 -237
- package/vendor/Server/Skills/rnoh-cptf-test-run/references/DEBUG_PLAYBOOK.md +261 -261
- package/vendor/Server/Skills/rnoh-cptf-test-run/scripts/validate-run-env.sh +112 -112
- package/vendor/Server/Skills/rnoh-lib-code-adapt/SKILL.md +497 -497
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/adapt-checklist.md +270 -270
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/api-migration-checklist.md +164 -164
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/common-compile-errors.md +556 -556
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/deveco-cli-tools.md +459 -459
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/edge-cases.md +65 -65
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/har-tgz-build.md +512 -512
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/version-compat-matrix.md +132 -132
- package/vendor/Server/Skills/rnoh-lib-code-adapt/scripts/auto-integrate.sh +424 -424
- package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +137 -137
- package/vendor/Server/Skills/rnoh-lib-demo-create/SKILL.md +306 -306
- package/vendor/Server/Skills/rnoh-lib-demo-create/assets/DEMO_PAGE_TEMPLATE.md +485 -485
- package/vendor/Server/Skills/rnoh-lib-demo-create/assets/INDEX_TEMPLATE.md +172 -172
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/DEMO_CODE_RULES.md +422 -422
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/QUALITY_CHECKLIST.md +95 -95
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/SOURCE_EXPLORATION.md +169 -169
- package/vendor/Server/Skills/rnoh-lib-demo-doc/SKILL.md +554 -554
- package/vendor/Server/Skills/rnoh-lib-demo-doc/assets/DEMO_DOC_TEMPLATE.md +106 -106
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/COVERAGE_INCREMENTAL.md +216 -216
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/DEMO_DESIGN_RULES.md +413 -413
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/OUTPUT_FORMAT.md +269 -269
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/QUALITY_CHECKLIST.md +98 -98
- package/vendor/Server/Skills/rnoh-lib-func-test/SKILL.md +337 -337
- package/vendor/Server/Skills/rnoh-lib-rnt-search/SKILL.md +722 -722
- package/vendor/Server/Skills/rnoh-lib-rnt-search/assets/PORT_REPORT_TEMPLATE.md +219 -219
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/DEMO_PORTING_GUIDE.md +345 -345
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/PORT_VERIFICATION.md +269 -269
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/RNT_PROJECT_STRUCTURE.md +173 -173
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/analyze-demo-deps.cjs +267 -267
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/detect-rnoh-version.cjs +174 -174
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/find-rnt-demo.sh +111 -111
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/port-demo.sh +186 -186
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/read-lib-meta.cjs +150 -150
- package/vendor/Server/Skills/rnoh-lib-test-align/SKILL.md +296 -296
- package/vendor/Server/Skills/rnoh-lib-test-align/references/jest-troubleshooting.md +371 -371
- package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +212 -212
- package/vendor/Server/Skills/rnoh-lib-test-align/references/runtime-troubleshooting.md +345 -345
- package/vendor/Server/Skills/rnoh-lib-test-align/references/unit-test-template.md +223 -223
- package/vendor/Server/Skills/rnoh-lib-test-align/scripts/port-test-demo.sh +1053 -1053
- package/vendor/Server/Skills/rnoh-lib-version-diff/SKILL.md +295 -255
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_ADAPTATION.md +82 -77
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_API_LOOKUP.md +224 -224
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/script-reference.md +175 -174
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/detect-upstream-version.js +967 -967
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/generate-diff.js +1798 -1798
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/package.json +5 -5
- package/vendor/Server/Skills/rnoh-lib-version-diff/templates/report-template.md +180 -137
- package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +145 -145
- package/vendor/Server/Skills/skill-generator/SKILL.md +365 -365
- package/vendor/Server/Skills/skill-generator/assets/SKILL_TEMPLATE.md +183 -183
- package/vendor/Server/Skills/skill-generator/references/COMPLIANCE_CHECKLIST.md +82 -82
- package/vendor/Server/Skills/skill-generator/references/KB_QUERY_GUIDE.md +110 -110
- package/vendor/Server/Skills/skill-generator/references/MCP_TOOL_DISCOVERY.md +122 -122
- package/vendor/Server/Skills/skill-generator/references/SKILL_SPEC.md +121 -121
- package/vendor/Server/Skills/skill-generator/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/task-analysis/SKILL.md +234 -234
- package/vendor/Server/Skills/task-analysis/assets/OUTPUT_EXAMPLES.md +160 -160
- package/vendor/Server/Skills/task-analysis/references/ACCEPTANCE_CRITERIA_GUIDE.md +190 -190
- package/vendor/Server/Skills/task-analysis/references/ANALYSIS_SCHEMA.md +224 -224
- package/vendor/Server/Skills/task-analysis/references/INTEGRATION_CONTEXT.md +162 -162
- package/vendor/Server/Skills/task-analysis/references/LESSONS_LEARNED.md +55 -55
- package/vendor/Server/Skills/task-analysis/references/REPLAN_CONTEXT_GUIDE.md +126 -126
- package/vendor/Server/Skills/task-analysis/scripts/validate-analysis-output.sh +256 -256
- package/vendor/Server/Skills/task-decomposition/SKILL.md +528 -528
- package/vendor/Server/Skills/task-decomposition/assets/OUTPUT_EXAMPLES.md +451 -451
- package/vendor/Server/Skills/task-decomposition/references/ACCEPTANCE_CRITERIA_GUIDE.md +179 -179
- package/vendor/Server/Skills/task-decomposition/references/DEPENDENCY_GRAPH_GUIDE.md +152 -152
- package/vendor/Server/Skills/task-decomposition/references/INTEGRATION_CONTEXT.md +175 -175
- package/vendor/Server/Skills/task-decomposition/references/REPLAN_CONTEXT_GUIDE.md +195 -195
- package/vendor/Server/Skills/task-decomposition/references/TASK_DECOMPOSITION_TEMPLATES.md +226 -226
- package/vendor/Server/Skills/task-decomposition/scripts/list-available-skills.cjs +263 -263
- package/vendor/Server/Skills/task-decomposition/scripts/skill-blacklist.json +29 -29
- package/vendor/Server/Skills/task-decomposition/scripts/validate-decomposition-output.cjs +376 -376
- package/vendor/Server/Skills/task-decomposition/scripts/validate-param-consistency.cjs +259 -259
- package/vendor/Server/Skills/task-decomposition/scripts/validate-specified-skills.cjs +216 -216
- package/vendor/Server/Skills/task-decomposition/scripts/validate-step-graph.cjs +424 -424
- package/vendor/Server/Skills/tpc-cpp-check/SKILL.md +427 -427
- package/vendor/Server/Skills/tpc-cpp-check/references/CHECKLIST.md +214 -214
- package/vendor/Server/Skills/tpc-cpp-check/references/HPKBUILD_GUIDE.md +235 -235
- package/vendor/Server/Skills/tpc-cpp-check/references/REPORT_TEMPLATE.md +250 -250
- package/vendor/Server/TestCheck/TestCheck.js +775 -775
- package/vendor/Server/TestCheck/index.js +11 -11
- package/vendor/Server/library/McpToolGuide.js +280 -280
- package/vendor/Server/library/StatsService.js +126 -126
- package/vendor/Server/library/cstTime.js +16 -16
- package/vendor/VERSION +3 -3
- package/workflows/pr-check.mjs +105 -105
- package/workflows/pr-push.mjs +192 -192
- package/vendor/Server/Agent/SkillSelector/types.js +0 -63
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
# 接口签名预检与修复对照表
|
|
2
|
-
|
|
3
|
-
> 本文档为 SKILL.md 1.3(生成前逐接口预检)与 4.3/4.4(编译期签名错误修复)的详细参考。
|
|
4
|
-
> 核心原则:**签名以库源码为准,禁止凭记忆或场景文档字面值编写**。
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 一、生成前逐接口预检表
|
|
9
|
-
|
|
10
|
-
对当前 Demo 涉及的每一个接口,逐项检查并记录结论:
|
|
11
|
-
|
|
12
|
-
| # | 检查项 | 查询来源 | 错误示例 → 正确做法 |
|
|
13
|
-
|---|-------|---------|------------------|
|
|
14
|
-
| 1 | **类型种类** | 接口规格文档第 4 章 | `(interface)` 不可 `new`,用对象字面量 `{ ... }`;`(class)` 可 `new`;`@ObservedV2` 类不可用于 `@State`/`@Prop`/`@Link`(V1 装饰器),须改用 V2 装饰器 `@Local`/`@Param`/`@Provider`/`@Consumer`(如 `@State option: ImageKnifeOptionV2` ❌ → `@Local option: ImageKnifeOptionV2` ✅) |
|
|
15
|
-
| 2 | **签名 vs 场景报告一致性** | 场景文档「对应函数接口」列 + 库源码 `library/Index.ets` | 场景报告是规划层面描述,参数/返回类型可能与源码不一致(实测案例:`setLoopCount` 报告写传常量、源码实际收 `boolean`;`setCacheShare` 报告写 `boolean`、源码收 `string`;`seekTo` 报告写数字、源码收 `string`)。**每个接口必须 read_file 库源码确认参数类型与返回值,以源码签名为准** |
|
|
16
|
-
| 3 | **返回值守卫** | 接口规格文档签名 | 返回类型含 `\| undefined` 或 `?:` → 调用后必须 `if (result)` 判空再访问属性(`result.imageWidth` ❌ → `if (result) { result.imageWidth }` ✅) |
|
|
17
|
-
| 4 | **参数类型匹配** | 接口规格文档签名 | 参数声明为 `common.UIAbilityContext` → 传 `appContext as common.UIAbilityContext`,不可直接传 `common.Context` |
|
|
18
|
-
| 5 | **回调参数签名** | 接口规格文档第 4 章回调接口定义 | 回调的每个字段名和参数类型逐字匹配(`(errorInfo: ErrorInfo) => void` ❌ → `(err: string, imageInfo: ImageInfo) => void` ✅) |
|
|
19
|
-
| 6 | **属性名准确性** | 接口规格文档第 3 章属性列表 | 只能使用文档列出的属性名(`obj.transformationType` ❌ → `obj.type` ✅) |
|
|
20
|
-
| 7 | **组件名/类名准确性** | `library/Index.ets` 导出名 | 与导出名**逐字符一致**,禁止自行追加 "V2"/"New" 等后缀(`ImageKnifeComponentV2` ❌ → `ImageKnifeComponent` ✅) |
|
|
21
|
-
| 8 | **import 类型存在性** | `library/Index.ets` 导出链 | 代码中 `import { X }` 的每个 X 必须在导出链中;未导出类型用**对象字面量**匹配结构,禁止 import;回调签名中的衍生类型须 read_file 库源码定位定义,库源码中也找不到则降级 `Record<string, Object>` 并标注"不可用" |
|
|
22
|
-
| 9 | **组件装饰器兼容** | 库组件源码 / 接口规格文档第 5 章 | 库组件使用 `@ObjectLink`/`@Prop`/`@Link` 时,关联类必须带 `@Observed` 装饰器(SKILL.md 0.2 预检应已识别) |
|
|
23
|
-
| 10 | **结构化类型禁令** | ArkTS 严格模式 | `new Uint8Array([..]).buffer` 类型为 `ArrayBufferLike`(结构化类型),直接赋值给 `ArrayBuffer` 触发 `arkts-no-structural-typing` → 改用 `new ArrayBuffer(n)` + `new Uint8Array(buf)` 视图逐元素写入 |
|
|
24
|
-
| 11 | **系统 API 签名/枚举/权限** | MCP 工具 `script_deveco_docs`(见 [SYSTEM_API_LOOKUP.md](SYSTEM_API_LOOKUP.md)) | 系统接口的方法签名、参数/返回值、import 路径、权限、系统能力必须查证,禁止凭记忆;枚举成员不做大小写假设(`ImageFit.CONTAIN` ❌ → `ImageFit.Contain` ✅) |
|
|
25
|
-
|
|
26
|
-
> **检索边界**:库自身 API 不在系统语料中,`script_deveco_docs` 会返回"未找到",此时不检索、直接按接口规格文档/库源码编写。
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## 二、场景文档差异四类专项核对
|
|
31
|
-
|
|
32
|
-
场景文档签名与库源码存在四类系统性差异,逐接口 read_file 源码专项核对(比全量核对更聚焦):
|
|
33
|
-
|
|
34
|
-
1. **容器类型**:文档 `Array<T>` vs 源码 `JList<T>` 等 → 以源码为准
|
|
35
|
-
2. **rest 参数 vs 数组参数**:文档 `arrays: any[]` vs 源码 `...arrays` → 调用须展开为多参数 `func(...arr)`
|
|
36
|
-
3. **声明返回类型 vs 实际返回**:库 `.ts` 文件带 `@ts-nocheck` 时高发(编译器不校验)→ 按声明类型接值后用 `String(result)` 容错展示
|
|
37
|
-
4. **无条件抛异常方法**:文档预期成功、源码直接 `throw` → 按真实行为 try/catch 展示
|
|
38
|
-
|
|
39
|
-
命中任一类时以源码为准,并在 Demo 代码注释中说明差异。
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## 三、编译错误签名修正协议(修复循环每轮执行)
|
|
44
|
-
|
|
45
|
-
生成代码的接口签名错误是系统性错误(未对照预检生成)。编译报错后按以下协议批量修正:
|
|
46
|
-
|
|
47
|
-
1. `read_file` 读取每个报错文件
|
|
48
|
-
2. 对照接口规格文档 + `library/Index.ets`,按错误关键词匹配修复:
|
|
49
|
-
|
|
50
|
-
| # | 编译错误关键词 | 修复方式 |
|
|
51
|
-
|---|--------------|---------|
|
|
52
|
-
| 1 | `Property 'xxx' does not exist` | 方法名拼写错误 → 查规格/源码替换(如 `rawQuery` → `queryRaw`) |
|
|
53
|
-
| 2 | `Expected N arguments, but got M` | 参数数量不匹配 → 查签名参数表补全/删除 |
|
|
54
|
-
| 3 | `Argument of type 'X[]' is not assignable` | rest 参数当数组传 → `func(...arr)` 展开 |
|
|
55
|
-
| 4 | `Property 'xxx' does not exist on type 'Y'` | 方法归属类错误 → 补中间链(`qb.list()` → `qb.build().list()`) |
|
|
56
|
-
| 5 | `arkts-no-any-unknown` / `arkts-no-inferred-generic-params` | any/unknown 类型 → 定义具体 interface,禁 `as` |
|
|
57
|
-
| 6 | `Module has no exported member` | import 不存在 → 对照 Index.ets,改用对象字面量 |
|
|
58
|
-
| 7 | `arkts-no-structural-typing` | `TypedArray.buffer`(`ArrayBufferLike`)赋值 `ArrayBuffer` → 见预检表 #10 |
|
|
59
|
-
| 8 | `neither type sufficiently overlaps` | 接口类型 `as` 强转实现类(如 `ID3v2` → `ID3v23Tag`)→ 先 `if (!(x instanceof ImplClass)) return;` 类型收窄,再赋值给目标类型 |
|
|
60
|
-
|
|
61
|
-
3. 同文件同类错误一次性批量替换
|
|
62
|
-
4. **修复引入新类型时同步补 import**:instanceof 收窄等修复会引入新类型引用,下轮编译将报 `Cannot find name 'X'`;每轮修复后检查改动文件的 import 区是否覆盖全部新引用类型
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## 四、表外新错误
|
|
67
|
-
|
|
68
|
-
编译失败出现本表之外的错误:对照接口规格文档 + 库源码分析修复 → 记录错误模式 → 合并到本表,供下次任务复用。
|
|
1
|
+
# 接口签名预检与修复对照表
|
|
2
|
+
|
|
3
|
+
> 本文档为 SKILL.md 1.3(生成前逐接口预检)与 4.3/4.4(编译期签名错误修复)的详细参考。
|
|
4
|
+
> 核心原则:**签名以库源码为准,禁止凭记忆或场景文档字面值编写**。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、生成前逐接口预检表
|
|
9
|
+
|
|
10
|
+
对当前 Demo 涉及的每一个接口,逐项检查并记录结论:
|
|
11
|
+
|
|
12
|
+
| # | 检查项 | 查询来源 | 错误示例 → 正确做法 |
|
|
13
|
+
|---|-------|---------|------------------|
|
|
14
|
+
| 1 | **类型种类** | 接口规格文档第 4 章 | `(interface)` 不可 `new`,用对象字面量 `{ ... }`;`(class)` 可 `new`;`@ObservedV2` 类不可用于 `@State`/`@Prop`/`@Link`(V1 装饰器),须改用 V2 装饰器 `@Local`/`@Param`/`@Provider`/`@Consumer`(如 `@State option: ImageKnifeOptionV2` ❌ → `@Local option: ImageKnifeOptionV2` ✅) |
|
|
15
|
+
| 2 | **签名 vs 场景报告一致性** | 场景文档「对应函数接口」列 + 库源码 `library/Index.ets` | 场景报告是规划层面描述,参数/返回类型可能与源码不一致(实测案例:`setLoopCount` 报告写传常量、源码实际收 `boolean`;`setCacheShare` 报告写 `boolean`、源码收 `string`;`seekTo` 报告写数字、源码收 `string`)。**每个接口必须 read_file 库源码确认参数类型与返回值,以源码签名为准** |
|
|
16
|
+
| 3 | **返回值守卫** | 接口规格文档签名 | 返回类型含 `\| undefined` 或 `?:` → 调用后必须 `if (result)` 判空再访问属性(`result.imageWidth` ❌ → `if (result) { result.imageWidth }` ✅) |
|
|
17
|
+
| 4 | **参数类型匹配** | 接口规格文档签名 | 参数声明为 `common.UIAbilityContext` → 传 `appContext as common.UIAbilityContext`,不可直接传 `common.Context` |
|
|
18
|
+
| 5 | **回调参数签名** | 接口规格文档第 4 章回调接口定义 | 回调的每个字段名和参数类型逐字匹配(`(errorInfo: ErrorInfo) => void` ❌ → `(err: string, imageInfo: ImageInfo) => void` ✅) |
|
|
19
|
+
| 6 | **属性名准确性** | 接口规格文档第 3 章属性列表 | 只能使用文档列出的属性名(`obj.transformationType` ❌ → `obj.type` ✅) |
|
|
20
|
+
| 7 | **组件名/类名准确性** | `library/Index.ets` 导出名 | 与导出名**逐字符一致**,禁止自行追加 "V2"/"New" 等后缀(`ImageKnifeComponentV2` ❌ → `ImageKnifeComponent` ✅) |
|
|
21
|
+
| 8 | **import 类型存在性** | `library/Index.ets` 导出链 | 代码中 `import { X }` 的每个 X 必须在导出链中;未导出类型用**对象字面量**匹配结构,禁止 import;回调签名中的衍生类型须 read_file 库源码定位定义,库源码中也找不到则降级 `Record<string, Object>` 并标注"不可用" |
|
|
22
|
+
| 9 | **组件装饰器兼容** | 库组件源码 / 接口规格文档第 5 章 | 库组件使用 `@ObjectLink`/`@Prop`/`@Link` 时,关联类必须带 `@Observed` 装饰器(SKILL.md 0.2 预检应已识别) |
|
|
23
|
+
| 10 | **结构化类型禁令** | ArkTS 严格模式 | `new Uint8Array([..]).buffer` 类型为 `ArrayBufferLike`(结构化类型),直接赋值给 `ArrayBuffer` 触发 `arkts-no-structural-typing` → 改用 `new ArrayBuffer(n)` + `new Uint8Array(buf)` 视图逐元素写入 |
|
|
24
|
+
| 11 | **系统 API 签名/枚举/权限** | MCP 工具 `script_deveco_docs`(见 [SYSTEM_API_LOOKUP.md](SYSTEM_API_LOOKUP.md)) | 系统接口的方法签名、参数/返回值、import 路径、权限、系统能力必须查证,禁止凭记忆;枚举成员不做大小写假设(`ImageFit.CONTAIN` ❌ → `ImageFit.Contain` ✅) |
|
|
25
|
+
|
|
26
|
+
> **检索边界**:库自身 API 不在系统语料中,`script_deveco_docs` 会返回"未找到",此时不检索、直接按接口规格文档/库源码编写。
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 二、场景文档差异四类专项核对
|
|
31
|
+
|
|
32
|
+
场景文档签名与库源码存在四类系统性差异,逐接口 read_file 源码专项核对(比全量核对更聚焦):
|
|
33
|
+
|
|
34
|
+
1. **容器类型**:文档 `Array<T>` vs 源码 `JList<T>` 等 → 以源码为准
|
|
35
|
+
2. **rest 参数 vs 数组参数**:文档 `arrays: any[]` vs 源码 `...arrays` → 调用须展开为多参数 `func(...arr)`
|
|
36
|
+
3. **声明返回类型 vs 实际返回**:库 `.ts` 文件带 `@ts-nocheck` 时高发(编译器不校验)→ 按声明类型接值后用 `String(result)` 容错展示
|
|
37
|
+
4. **无条件抛异常方法**:文档预期成功、源码直接 `throw` → 按真实行为 try/catch 展示
|
|
38
|
+
|
|
39
|
+
命中任一类时以源码为准,并在 Demo 代码注释中说明差异。
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 三、编译错误签名修正协议(修复循环每轮执行)
|
|
44
|
+
|
|
45
|
+
生成代码的接口签名错误是系统性错误(未对照预检生成)。编译报错后按以下协议批量修正:
|
|
46
|
+
|
|
47
|
+
1. `read_file` 读取每个报错文件
|
|
48
|
+
2. 对照接口规格文档 + `library/Index.ets`,按错误关键词匹配修复:
|
|
49
|
+
|
|
50
|
+
| # | 编译错误关键词 | 修复方式 |
|
|
51
|
+
|---|--------------|---------|
|
|
52
|
+
| 1 | `Property 'xxx' does not exist` | 方法名拼写错误 → 查规格/源码替换(如 `rawQuery` → `queryRaw`) |
|
|
53
|
+
| 2 | `Expected N arguments, but got M` | 参数数量不匹配 → 查签名参数表补全/删除 |
|
|
54
|
+
| 3 | `Argument of type 'X[]' is not assignable` | rest 参数当数组传 → `func(...arr)` 展开 |
|
|
55
|
+
| 4 | `Property 'xxx' does not exist on type 'Y'` | 方法归属类错误 → 补中间链(`qb.list()` → `qb.build().list()`) |
|
|
56
|
+
| 5 | `arkts-no-any-unknown` / `arkts-no-inferred-generic-params` | any/unknown 类型 → 定义具体 interface,禁 `as` |
|
|
57
|
+
| 6 | `Module has no exported member` | import 不存在 → 对照 Index.ets,改用对象字面量 |
|
|
58
|
+
| 7 | `arkts-no-structural-typing` | `TypedArray.buffer`(`ArrayBufferLike`)赋值 `ArrayBuffer` → 见预检表 #10 |
|
|
59
|
+
| 8 | `neither type sufficiently overlaps` | 接口类型 `as` 强转实现类(如 `ID3v2` → `ID3v23Tag`)→ 先 `if (!(x instanceof ImplClass)) return;` 类型收窄,再赋值给目标类型 |
|
|
60
|
+
|
|
61
|
+
3. 同文件同类错误一次性批量替换
|
|
62
|
+
4. **修复引入新类型时同步补 import**:instanceof 收窄等修复会引入新类型引用,下轮编译将报 `Cannot find name 'X'`;每轮修复后检查改动文件的 import 区是否覆盖全部新引用类型
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 四、表外新错误
|
|
67
|
+
|
|
68
|
+
编译失败出现本表之外的错误:对照接口规格文档 + 库源码分析修复 → 记录错误模式 → 合并到本表,供下次任务复用。
|
|
@@ -1,184 +1,184 @@
|
|
|
1
|
-
# 编译验证操作手册
|
|
2
|
-
|
|
3
|
-
> SKILL.md 阶段四(工程迁移 → Code Linter → 编译修复循环 → ohpm 兜底 → 降级)的详细操作规程。
|
|
4
|
-
> 核心原则:**编译是验证生成代码质量的唯一方式**;源库问题也必须尝试修复(仅限机械性操作,不改业务逻辑)。
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 一、工程迁移(migrate.cjs)
|
|
9
|
-
|
|
10
|
-
### 1.1 为什么必做
|
|
11
|
-
|
|
12
|
-
鸿蒙原生库源码多为历史工程,`build-profile.json5` 的 SDK 版本配置、hvigor 文件、`oh-package.json5`、product 的 `runtimeOS`/`compatibleSdkVersion` 等经常不兼容当前构建环境。
|
|
13
|
-
|
|
14
|
-
> 🔴 **无论工程类型(OpenHarmony / HarmonyOS)、无论 `compileSdkVersion` 是否与已安装 SDK 匹配,都必须执行迁移**。禁止以"工程已是新版本""compileSdkVersion 已匹配已安装 SDK""工程为 OpenHarmony 无需切换到 HarmonyOS"等理由自行判断并跳过——即使 SDK 版本匹配,hvigor、oh-package 等配置仍可能不兼容。
|
|
15
|
-
|
|
16
|
-
### 1.2 预迁移设备探测(有设备时)
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
hdc list targets
|
|
20
|
-
hdc shell param get const.ohos.apiversion
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
记录设备 API 版本(如 `23`),作为 `--compatible-api` 参数传入迁移脚本。若无设备,跳过此步(脚本将自动探测已安装 SDK API 版本)。
|
|
24
|
-
|
|
25
|
-
> ⚠️ **compatible-api 版本上限陷阱**:`migrate.cjs` 的 API_VERSION_MAP 存在版本上限(当前最高 24)。设备 API 版本超出映射表上限(如设备 API 26)时直接传入会报 `未知 compatible-api 版本` 错误。此时读取 `DevEco-Studio.app/Contents/sdk/default/sdk-pkg.json` 的 `apiVersion` 字段获取已安装 SDK API 版本,取 **min(设备 API, 已安装 SDK API)** 作为 `--compatible-api`(编译面向已安装 SDK,实际以已安装 SDK API 为准)。
|
|
26
|
-
|
|
27
|
-
### 1.3 执行
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
# 有设备时(deviceApi 从 1.2 获取)
|
|
31
|
-
node {{skillDir}}/scripts/migrate.cjs --source {{sourcePath}} --compatible-api {deviceApi}
|
|
32
|
-
|
|
33
|
-
# 无设备时
|
|
34
|
-
node {{skillDir}}/scripts/migrate.cjs --source {{sourcePath}}
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### 1.4 执行后强制校验(未通过不得进入编译)
|
|
38
|
-
|
|
39
|
-
- 迁移脚本正常执行完成,输出以 `[migrate] 迁移完成。` 结尾
|
|
40
|
-
- 迁移日志包含 `[migrate] SDK版本: compatibleSdkVersion=..., targetSdkVersion=...` 行
|
|
41
|
-
- `{{sourcePath}}/build-profile.json5` 中每个 product 的 `runtimeOS` 已为 `HarmonyOS`
|
|
42
|
-
- `compatibleSdkVersion` 的 API 版本 ≤ 设备 API 版本(有设备时)或 = 已安装 SDK API 版本(无设备时)
|
|
43
|
-
- 任一项不满足 → 重新执行迁移脚本,直至校验通过
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## 二、Code Linter 静态检查(code-linter.cjs)
|
|
48
|
-
|
|
49
|
-
### 2.1 脚本行为
|
|
50
|
-
|
|
51
|
-
1. 探测 `devecocli --version`;不可用 → 报「构建环境不可用」退出码 1
|
|
52
|
-
2. 检测工程根 `code-linter.json5`;缺失则按推荐规则集自动创建(否则 `devecocli check lint` 会报 `--config-path does not exist`)
|
|
53
|
-
3. 执行 `devecocli check lint "<target>" --format json --output-path code-linter-raw.json`(仅传 1 个路径,满足命令路径参数限制)
|
|
54
|
-
4. 解析 `{ issues }`,按 Error / Warning 统计,输出 `{{sourcePath}}/code-linter-report.json`
|
|
55
|
-
|
|
56
|
-
### 2.2 结果判定
|
|
57
|
-
|
|
58
|
-
| 退出码 | 含义 | 处理 |
|
|
59
|
-
|-------|------|------|
|
|
60
|
-
| 0 | 0 Error | 静态检查通过,进入编译验证 |
|
|
61
|
-
| 2 | 存在 Error | 逐条修复(属生成代码的错误按第三节签名修正协议同源修复),重跑脚本直至 0 Error;计入编译修复轮次 |
|
|
62
|
-
| 1 | 环境不可用 | 标注"Code Linter 环境不可用,跳过",进入编译验证(编译同样依赖该环境,届时会暴露) |
|
|
63
|
-
|
|
64
|
-
### 2.3 Warning 处理原则
|
|
65
|
-
|
|
66
|
-
- `@hw-stylistic/file-naming-convention`:多因 `001_` 数字前缀文件名(规则要求大驼峰),**不阻塞编译**,无需强制改为大驼峰;若需零警告可调整命名,但不属于本 SKILL 阻断项
|
|
67
|
-
- `addTryCatch` / `addAsyncCatch` / 未使用变量等:P2 优化项,编译通过后按需处理,不阻塞进入编译
|
|
68
|
-
- `any`/`unknown` 说明:Linter 的 `@typescript-eslint/no-explicit-any` 仅对 `.js/.ts` 生效;`.ets` 的 any/unknown 由 ArkTS 编译器强制(`arkts-no-any-unknown`),需在编译验证中确认
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## 三、编译修复循环(5 轮)
|
|
73
|
-
|
|
74
|
-
### 3.1 执行方式
|
|
75
|
-
|
|
76
|
-
> 🔴 必须通过 build.ps1 执行:直接调用 devecocli build 会导致 session 永久阻塞(hvigor daemon 继承 Agent pipe 句柄不释放)。
|
|
77
|
-
|
|
78
|
-
```powershell
|
|
79
|
-
powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -Cmd "devecocli build clean"
|
|
80
|
-
powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -Cmd "devecocli build --modules entry"
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
**macOS/Linux(无 PowerShell)等效替代**:bash 重定向到日志文件执行:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
devecocli build --modules entry > build.log 2>&1
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
原理:daemon 继承的是文件句柄而非管道句柄,同样规避 pipe 句柄继承导致的 session 阻塞(实测多轮编译无阻塞)。构建错误从 build.log 读取。
|
|
90
|
-
|
|
91
|
-
### 3.2 每轮流程
|
|
92
|
-
|
|
93
|
-
1. 逐条读取构建日志中的错误
|
|
94
|
-
2. 判断错误来源并分级修复:
|
|
95
|
-
- **生成代码错误**(文件路径在 `entry/src/main/ets/pages/0XX_*`、`DemoIndex.ets`):执行签名修正协议(见 [API_SIGNATURE_CHECKS.md](API_SIGNATURE_CHECKS.md) 第 3 节)
|
|
96
|
-
- **源库错误**:按 3.3 修复表处理
|
|
97
|
-
- 表外新错误:分析 → 修复 → 记录到修复表
|
|
98
|
-
3. 重新编译
|
|
99
|
-
|
|
100
|
-
### 3.3 源库错误修复表
|
|
101
|
-
|
|
102
|
-
源库错误(文件路径在 `library/`、源库原有 pages/、CMakeLists.txt、hvigorfile.ts、build-profile.json5):
|
|
103
|
-
|
|
104
|
-
| 错误类型 | 修复方式 | 可修复? |
|
|
105
|
-
|---------|---------|---------|
|
|
106
|
-
| SDK 版本不匹配(compileSdkVersion) | 修正 `build-profile.json5` | ✅ |
|
|
107
|
-
| 依赖缺失(oh-package.json5) | 补充 devDependencies | ✅ |
|
|
108
|
-
| CMake 选项冲突(-D 参数覆盖) | 修改 `build-profile.json5` 的 `externalNativeOptions` | ✅ |
|
|
109
|
-
| hvigorfile.ts 缺失 | `git submodule update --init --recursive` | ✅ |
|
|
110
|
-
| 缺失头文件(如 avif.h) | 关闭对应 CMake 选项或补充子模块 | ⚠️ 尝试 |
|
|
111
|
-
| 源库 ArkTS 类型错误 | 修正类型注解/补充 @Observed | ⚠️ 仅机械性 |
|
|
112
|
-
| 源库业务逻辑错误 | 不修复,标注 | ❌ |
|
|
113
|
-
|
|
114
|
-
### 3.4 终止判定(立即退出循环)
|
|
115
|
-
|
|
116
|
-
构建日志中连续 2 轮出现的错误均为源库不可修复错误(❌ 行)→ **立即终止修复循环**,不再尝试后续轮次,直接进入代码规范自查,在报告中标注编译跳过原因和修复建议。
|
|
117
|
-
|
|
118
|
-
### 3.5 降级(5 轮仍失败 / 提前终止)
|
|
119
|
-
|
|
120
|
-
- 编译验证标注"⚠️ 已跳过",报告中列出:
|
|
121
|
-
- 生成代码未修复的错误 → 标注"需加入检查表"
|
|
122
|
-
- 源库不可修复的错误 → 标注"需源库作者修复"
|
|
123
|
-
- 项目结构迁移类错误 → 标注"需在 DevEco Studio 中使用迁移工具升级项目结构"
|
|
124
|
-
- 任务状态仍为"完成"(代码生成本身已完成,编译验证因源库问题跳过)
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## 四、ohpm 线上版本替换(源库原生编译失败兜底)
|
|
129
|
-
|
|
130
|
-
> 当源库**原生库(.so)需复杂构建**(GN/Ninja、FFmpeg、libyuv、NDK、prebuild 等)导致 `devecocli build` 失败时,用 **ohpm 线上发行版本**替换本地依赖后继续编译,避免被源库构建问题阻塞验证。
|
|
131
|
-
> 本流程由共享脚本 `ohpm-switch.cjs` 自动化完成(与 XTSCodeSkill / XTSExecutionSkill 同源)。
|
|
132
|
-
|
|
133
|
-
### 4.1 触发条件(必须全部满足,任一条不满足则跳过本分支直接走降级)
|
|
134
|
-
|
|
135
|
-
| # | 条件 | 判定方式 |
|
|
136
|
-
|---|------|---------|
|
|
137
|
-
| 1 | `ohpm` 可用 | 运行 `ohpm --version` 成功 |
|
|
138
|
-
| 2 | README 明确源码编译步骤复杂 | 读取 `README.md` / `README_zh.md`,出现以下特征词即判定命中:`.so`、`libyuv`、`FFmpeg`、`soundtouch`、`NDK`、`GN`、`Ninja`、`prebuild`、`预编译`、`编译三方依赖库`、`从源码编译` |
|
|
139
|
-
| 3 | 该库存在 ohpm 线上版本 | `ohpm info <库包名>` 有版本列表,或使用 `--version` 显式指定 |
|
|
140
|
-
| 4 | 出现在修复循环内且编译仍失败 | 首次编译失败后即可尝试;或连续 2 轮为源库不可修复错误(❌ 行)时触发 |
|
|
141
|
-
|
|
142
|
-
### 4.2 执行
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
node {{skillDir}}/scripts/ohpm-switch.cjs --source {{sourcePath}}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
若脚本定位到多个本地 file 依赖,按脚本输出的候选逐个用 `--pkg <库包名>` 指定重复执行。脚本行为:
|
|
149
|
-
|
|
150
|
-
- 扫描工程内所有 `oh-package.json5`,定位 `file:` / 相对路径依赖
|
|
151
|
-
- 匹配 `build-profile.json5` `modules[]` 中注册的同名本地模块
|
|
152
|
-
- 通过 `ohpm info <库包名>` 自动查询最新稳定版(亦可 `--version <版本号>` 显式指定,如 `--version 2.0.9`)
|
|
153
|
-
- 将 `oh-package.json5` 中该库依赖改为线上版本号(如 `"@ohos/ijkplayer": "2.0.9"`)
|
|
154
|
-
- 从工程级 `build-profile.json5` 的 `modules[]` 中**移除**该库本地模块条目,避免本地原生库模块再次参与构建触发相同失败
|
|
155
|
-
- 保留 `@ohos/hypium` 等 devDependencies 不变;不修改 `.so`/`.aar`/`.har` 等编译产物映射依赖
|
|
156
|
-
|
|
157
|
-
### 4.3 核验改动清单
|
|
158
|
-
|
|
159
|
-
脚本完成后校验 `{{sourcePath}}/ohpm-switch-report.json`,确认:依赖版本变更、build-profile modules 移除项、涉及的库包名与版本号,均与本次任务目标一致。
|
|
160
|
-
|
|
161
|
-
### 4.4 重新安装依赖并编译
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
cd {{sourcePath}} && ohpm install
|
|
165
|
-
# 然后按 3.1 的方式重新编译
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### 4.5 版本降级 API 兼容性核验(必做,踩坑核心教训)
|
|
169
|
-
|
|
170
|
-
线上最新版可能与本地源码版本不一致(如 ijkplayer 本地 `2.0.11-rc.0`,线上最新稳定版 `2.0.9`)。替换后编译通过前,必须对照 `library/index.ets` 导出链逐一确认本任务生成代码 import 的类型/常量/枚举仍存在(如 IjkMediaPlayer、MessageType、PropertiesType、LogUtils、AudioInterrupt、AudioDeviceChange、InterruptEvent):
|
|
171
|
-
|
|
172
|
-
- 全部存在 → 继续后续步骤
|
|
173
|
-
- 有缺失 → 优先用 `ohpm info <库包名>` 已列出的其他更接近版本重跑脚本(`--version <旧版本>`)
|
|
174
|
-
- 所有线上版本均不满足 → 生成代码对缺失类型降级为对象字面量/标注"需手动验证接口",并在报告备注
|
|
175
|
-
|
|
176
|
-
### 4.6 结果判定
|
|
177
|
-
|
|
178
|
-
| 情况 | 处理 |
|
|
179
|
-
|------|------|
|
|
180
|
-
| 替换后编译通过 | 编译验证记为通过,报告标注"源库本地原生编译失败,已切换 @ohos/xxx 线上版本 vX.Y.Z 后编译通过",并附 `ohpm-switch-report.json` 改动清单 |
|
|
181
|
-
| 替换后仍失败 | 归为源库不可修复,走降级路径,报告追加"已尝试 ohpm 线上替换仍失败" |
|
|
182
|
-
| 无对应 ohpm 线上版本 | 维持原流程,报告说明"未找到对应 ohpm 线上版本" |
|
|
183
|
-
|
|
184
|
-
> ⚠️ **修改保留不回滚**,但必须在最终报告中如实记录本次改动(依赖版本变更、build-profile.json5 modules 移除两项,可直接引用 `ohpm-switch-report.json`)。
|
|
1
|
+
# 编译验证操作手册
|
|
2
|
+
|
|
3
|
+
> SKILL.md 阶段四(工程迁移 → Code Linter → 编译修复循环 → ohpm 兜底 → 降级)的详细操作规程。
|
|
4
|
+
> 核心原则:**编译是验证生成代码质量的唯一方式**;源库问题也必须尝试修复(仅限机械性操作,不改业务逻辑)。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、工程迁移(migrate.cjs)
|
|
9
|
+
|
|
10
|
+
### 1.1 为什么必做
|
|
11
|
+
|
|
12
|
+
鸿蒙原生库源码多为历史工程,`build-profile.json5` 的 SDK 版本配置、hvigor 文件、`oh-package.json5`、product 的 `runtimeOS`/`compatibleSdkVersion` 等经常不兼容当前构建环境。
|
|
13
|
+
|
|
14
|
+
> 🔴 **无论工程类型(OpenHarmony / HarmonyOS)、无论 `compileSdkVersion` 是否与已安装 SDK 匹配,都必须执行迁移**。禁止以"工程已是新版本""compileSdkVersion 已匹配已安装 SDK""工程为 OpenHarmony 无需切换到 HarmonyOS"等理由自行判断并跳过——即使 SDK 版本匹配,hvigor、oh-package 等配置仍可能不兼容。
|
|
15
|
+
|
|
16
|
+
### 1.2 预迁移设备探测(有设备时)
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
hdc list targets
|
|
20
|
+
hdc shell param get const.ohos.apiversion
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
记录设备 API 版本(如 `23`),作为 `--compatible-api` 参数传入迁移脚本。若无设备,跳过此步(脚本将自动探测已安装 SDK API 版本)。
|
|
24
|
+
|
|
25
|
+
> ⚠️ **compatible-api 版本上限陷阱**:`migrate.cjs` 的 API_VERSION_MAP 存在版本上限(当前最高 24)。设备 API 版本超出映射表上限(如设备 API 26)时直接传入会报 `未知 compatible-api 版本` 错误。此时读取 `DevEco-Studio.app/Contents/sdk/default/sdk-pkg.json` 的 `apiVersion` 字段获取已安装 SDK API 版本,取 **min(设备 API, 已安装 SDK API)** 作为 `--compatible-api`(编译面向已安装 SDK,实际以已安装 SDK API 为准)。
|
|
26
|
+
|
|
27
|
+
### 1.3 执行
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 有设备时(deviceApi 从 1.2 获取)
|
|
31
|
+
node {{skillDir}}/scripts/migrate.cjs --source {{sourcePath}} --compatible-api {deviceApi}
|
|
32
|
+
|
|
33
|
+
# 无设备时
|
|
34
|
+
node {{skillDir}}/scripts/migrate.cjs --source {{sourcePath}}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 1.4 执行后强制校验(未通过不得进入编译)
|
|
38
|
+
|
|
39
|
+
- 迁移脚本正常执行完成,输出以 `[migrate] 迁移完成。` 结尾
|
|
40
|
+
- 迁移日志包含 `[migrate] SDK版本: compatibleSdkVersion=..., targetSdkVersion=...` 行
|
|
41
|
+
- `{{sourcePath}}/build-profile.json5` 中每个 product 的 `runtimeOS` 已为 `HarmonyOS`
|
|
42
|
+
- `compatibleSdkVersion` 的 API 版本 ≤ 设备 API 版本(有设备时)或 = 已安装 SDK API 版本(无设备时)
|
|
43
|
+
- 任一项不满足 → 重新执行迁移脚本,直至校验通过
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 二、Code Linter 静态检查(code-linter.cjs)
|
|
48
|
+
|
|
49
|
+
### 2.1 脚本行为
|
|
50
|
+
|
|
51
|
+
1. 探测 `devecocli --version`;不可用 → 报「构建环境不可用」退出码 1
|
|
52
|
+
2. 检测工程根 `code-linter.json5`;缺失则按推荐规则集自动创建(否则 `devecocli check lint` 会报 `--config-path does not exist`)
|
|
53
|
+
3. 执行 `devecocli check lint "<target>" --format json --output-path code-linter-raw.json`(仅传 1 个路径,满足命令路径参数限制)
|
|
54
|
+
4. 解析 `{ issues }`,按 Error / Warning 统计,输出 `{{sourcePath}}/code-linter-report.json`
|
|
55
|
+
|
|
56
|
+
### 2.2 结果判定
|
|
57
|
+
|
|
58
|
+
| 退出码 | 含义 | 处理 |
|
|
59
|
+
|-------|------|------|
|
|
60
|
+
| 0 | 0 Error | 静态检查通过,进入编译验证 |
|
|
61
|
+
| 2 | 存在 Error | 逐条修复(属生成代码的错误按第三节签名修正协议同源修复),重跑脚本直至 0 Error;计入编译修复轮次 |
|
|
62
|
+
| 1 | 环境不可用 | 标注"Code Linter 环境不可用,跳过",进入编译验证(编译同样依赖该环境,届时会暴露) |
|
|
63
|
+
|
|
64
|
+
### 2.3 Warning 处理原则
|
|
65
|
+
|
|
66
|
+
- `@hw-stylistic/file-naming-convention`:多因 `001_` 数字前缀文件名(规则要求大驼峰),**不阻塞编译**,无需强制改为大驼峰;若需零警告可调整命名,但不属于本 SKILL 阻断项
|
|
67
|
+
- `addTryCatch` / `addAsyncCatch` / 未使用变量等:P2 优化项,编译通过后按需处理,不阻塞进入编译
|
|
68
|
+
- `any`/`unknown` 说明:Linter 的 `@typescript-eslint/no-explicit-any` 仅对 `.js/.ts` 生效;`.ets` 的 any/unknown 由 ArkTS 编译器强制(`arkts-no-any-unknown`),需在编译验证中确认
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 三、编译修复循环(5 轮)
|
|
73
|
+
|
|
74
|
+
### 3.1 执行方式
|
|
75
|
+
|
|
76
|
+
> 🔴 必须通过 build.ps1 执行:直接调用 devecocli build 会导致 session 永久阻塞(hvigor daemon 继承 Agent pipe 句柄不释放)。
|
|
77
|
+
|
|
78
|
+
```powershell
|
|
79
|
+
powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -Cmd "devecocli build clean"
|
|
80
|
+
powershell -ExecutionPolicy Bypass -File "{{skillDir}}/scripts/build.ps1" -Cmd "devecocli build --modules entry"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**macOS/Linux(无 PowerShell)等效替代**:bash 重定向到日志文件执行:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
devecocli build --modules entry > build.log 2>&1
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
原理:daemon 继承的是文件句柄而非管道句柄,同样规避 pipe 句柄继承导致的 session 阻塞(实测多轮编译无阻塞)。构建错误从 build.log 读取。
|
|
90
|
+
|
|
91
|
+
### 3.2 每轮流程
|
|
92
|
+
|
|
93
|
+
1. 逐条读取构建日志中的错误
|
|
94
|
+
2. 判断错误来源并分级修复:
|
|
95
|
+
- **生成代码错误**(文件路径在 `entry/src/main/ets/pages/0XX_*`、`DemoIndex.ets`):执行签名修正协议(见 [API_SIGNATURE_CHECKS.md](API_SIGNATURE_CHECKS.md) 第 3 节)
|
|
96
|
+
- **源库错误**:按 3.3 修复表处理
|
|
97
|
+
- 表外新错误:分析 → 修复 → 记录到修复表
|
|
98
|
+
3. 重新编译
|
|
99
|
+
|
|
100
|
+
### 3.3 源库错误修复表
|
|
101
|
+
|
|
102
|
+
源库错误(文件路径在 `library/`、源库原有 pages/、CMakeLists.txt、hvigorfile.ts、build-profile.json5):
|
|
103
|
+
|
|
104
|
+
| 错误类型 | 修复方式 | 可修复? |
|
|
105
|
+
|---------|---------|---------|
|
|
106
|
+
| SDK 版本不匹配(compileSdkVersion) | 修正 `build-profile.json5` | ✅ |
|
|
107
|
+
| 依赖缺失(oh-package.json5) | 补充 devDependencies | ✅ |
|
|
108
|
+
| CMake 选项冲突(-D 参数覆盖) | 修改 `build-profile.json5` 的 `externalNativeOptions` | ✅ |
|
|
109
|
+
| hvigorfile.ts 缺失 | `git submodule update --init --recursive` | ✅ |
|
|
110
|
+
| 缺失头文件(如 avif.h) | 关闭对应 CMake 选项或补充子模块 | ⚠️ 尝试 |
|
|
111
|
+
| 源库 ArkTS 类型错误 | 修正类型注解/补充 @Observed | ⚠️ 仅机械性 |
|
|
112
|
+
| 源库业务逻辑错误 | 不修复,标注 | ❌ |
|
|
113
|
+
|
|
114
|
+
### 3.4 终止判定(立即退出循环)
|
|
115
|
+
|
|
116
|
+
构建日志中连续 2 轮出现的错误均为源库不可修复错误(❌ 行)→ **立即终止修复循环**,不再尝试后续轮次,直接进入代码规范自查,在报告中标注编译跳过原因和修复建议。
|
|
117
|
+
|
|
118
|
+
### 3.5 降级(5 轮仍失败 / 提前终止)
|
|
119
|
+
|
|
120
|
+
- 编译验证标注"⚠️ 已跳过",报告中列出:
|
|
121
|
+
- 生成代码未修复的错误 → 标注"需加入检查表"
|
|
122
|
+
- 源库不可修复的错误 → 标注"需源库作者修复"
|
|
123
|
+
- 项目结构迁移类错误 → 标注"需在 DevEco Studio 中使用迁移工具升级项目结构"
|
|
124
|
+
- 任务状态仍为"完成"(代码生成本身已完成,编译验证因源库问题跳过)
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 四、ohpm 线上版本替换(源库原生编译失败兜底)
|
|
129
|
+
|
|
130
|
+
> 当源库**原生库(.so)需复杂构建**(GN/Ninja、FFmpeg、libyuv、NDK、prebuild 等)导致 `devecocli build` 失败时,用 **ohpm 线上发行版本**替换本地依赖后继续编译,避免被源库构建问题阻塞验证。
|
|
131
|
+
> 本流程由共享脚本 `ohpm-switch.cjs` 自动化完成(与 XTSCodeSkill / XTSExecutionSkill 同源)。
|
|
132
|
+
|
|
133
|
+
### 4.1 触发条件(必须全部满足,任一条不满足则跳过本分支直接走降级)
|
|
134
|
+
|
|
135
|
+
| # | 条件 | 判定方式 |
|
|
136
|
+
|---|------|---------|
|
|
137
|
+
| 1 | `ohpm` 可用 | 运行 `ohpm --version` 成功 |
|
|
138
|
+
| 2 | README 明确源码编译步骤复杂 | 读取 `README.md` / `README_zh.md`,出现以下特征词即判定命中:`.so`、`libyuv`、`FFmpeg`、`soundtouch`、`NDK`、`GN`、`Ninja`、`prebuild`、`预编译`、`编译三方依赖库`、`从源码编译` |
|
|
139
|
+
| 3 | 该库存在 ohpm 线上版本 | `ohpm info <库包名>` 有版本列表,或使用 `--version` 显式指定 |
|
|
140
|
+
| 4 | 出现在修复循环内且编译仍失败 | 首次编译失败后即可尝试;或连续 2 轮为源库不可修复错误(❌ 行)时触发 |
|
|
141
|
+
|
|
142
|
+
### 4.2 执行
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
node {{skillDir}}/scripts/ohpm-switch.cjs --source {{sourcePath}}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
若脚本定位到多个本地 file 依赖,按脚本输出的候选逐个用 `--pkg <库包名>` 指定重复执行。脚本行为:
|
|
149
|
+
|
|
150
|
+
- 扫描工程内所有 `oh-package.json5`,定位 `file:` / 相对路径依赖
|
|
151
|
+
- 匹配 `build-profile.json5` `modules[]` 中注册的同名本地模块
|
|
152
|
+
- 通过 `ohpm info <库包名>` 自动查询最新稳定版(亦可 `--version <版本号>` 显式指定,如 `--version 2.0.9`)
|
|
153
|
+
- 将 `oh-package.json5` 中该库依赖改为线上版本号(如 `"@ohos/ijkplayer": "2.0.9"`)
|
|
154
|
+
- 从工程级 `build-profile.json5` 的 `modules[]` 中**移除**该库本地模块条目,避免本地原生库模块再次参与构建触发相同失败
|
|
155
|
+
- 保留 `@ohos/hypium` 等 devDependencies 不变;不修改 `.so`/`.aar`/`.har` 等编译产物映射依赖
|
|
156
|
+
|
|
157
|
+
### 4.3 核验改动清单
|
|
158
|
+
|
|
159
|
+
脚本完成后校验 `{{sourcePath}}/ohpm-switch-report.json`,确认:依赖版本变更、build-profile modules 移除项、涉及的库包名与版本号,均与本次任务目标一致。
|
|
160
|
+
|
|
161
|
+
### 4.4 重新安装依赖并编译
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
cd {{sourcePath}} && ohpm install
|
|
165
|
+
# 然后按 3.1 的方式重新编译
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### 4.5 版本降级 API 兼容性核验(必做,踩坑核心教训)
|
|
169
|
+
|
|
170
|
+
线上最新版可能与本地源码版本不一致(如 ijkplayer 本地 `2.0.11-rc.0`,线上最新稳定版 `2.0.9`)。替换后编译通过前,必须对照 `library/index.ets` 导出链逐一确认本任务生成代码 import 的类型/常量/枚举仍存在(如 IjkMediaPlayer、MessageType、PropertiesType、LogUtils、AudioInterrupt、AudioDeviceChange、InterruptEvent):
|
|
171
|
+
|
|
172
|
+
- 全部存在 → 继续后续步骤
|
|
173
|
+
- 有缺失 → 优先用 `ohpm info <库包名>` 已列出的其他更接近版本重跑脚本(`--version <旧版本>`)
|
|
174
|
+
- 所有线上版本均不满足 → 生成代码对缺失类型降级为对象字面量/标注"需手动验证接口",并在报告备注
|
|
175
|
+
|
|
176
|
+
### 4.6 结果判定
|
|
177
|
+
|
|
178
|
+
| 情况 | 处理 |
|
|
179
|
+
|------|------|
|
|
180
|
+
| 替换后编译通过 | 编译验证记为通过,报告标注"源库本地原生编译失败,已切换 @ohos/xxx 线上版本 vX.Y.Z 后编译通过",并附 `ohpm-switch-report.json` 改动清单 |
|
|
181
|
+
| 替换后仍失败 | 归为源库不可修复,走降级路径,报告追加"已尝试 ohpm 线上替换仍失败" |
|
|
182
|
+
| 无对应 ohpm 线上版本 | 维持原流程,报告说明"未找到对应 ohpm 线上版本" |
|
|
183
|
+
|
|
184
|
+
> ⚠️ **修改保留不回滚**,但必须在最终报告中如实记录本次改动(依赖版本变更、build-profile.json5 modules 移除两项,可直接引用 `ohpm-switch-report.json`)。
|