@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.
- package/README.md +244 -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,506 +1,526 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: rn-library-test-coverage-check
|
|
3
|
-
description: 通过脚本自动化分析 RN 三方库鸿蒙化代码的用例覆盖度,执行接口提取、测试覆盖率分析、Demo 覆盖率分析三步脚本流水线,AI 基于脚本输出解读评分规则并生成严苛评分报告(0-100分)。作为 RN 仓库检视流程的第七阶段(最终阶段)。Use when 需要评估 RN 鸿蒙化库的测试用例覆盖情况、测试质量或生成覆盖度评分报告。
|
|
4
|
-
license: Apache-2.0
|
|
5
|
-
compatibility: 需要Node.js环境、Git ≥ 2.25.0(Sparse Checkout)、访问鸿蒙化仓库源码目录。AST 匹配模式需 TypeScript 模块(由 MCP 目录的 node_modules 提供,缺失时在 MCP 目录执行 `npm install`,参见 Phase 0)。脚本统一使用相对路径引用 `{SKILL_DIR}/../../../MCP/scripts/` 下的共享脚本,本 SKILL 不维护脚本副本
|
|
6
|
-
metadata:
|
|
7
|
-
version: "1.
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# RNLibraryTestCoverageCheckSkill
|
|
11
|
-
|
|
12
|
-
通过**脚本自动化**对 RN 三方库鸿蒙化代码进行用例覆盖度检视。三步脚本流水线(接口提取 → 测试覆盖率 → Demo 覆盖率)完成覆盖数据的精确采集,AI 基于脚本输出解读评分规则并生成最终报告。
|
|
13
|
-
|
|
14
|
-
> ⚠️ **核心定位**:覆盖率分析由脚本(AST/正则双层匹配)完成,AI 负责**评分解读**和**质量评估**(边界场景、测试框架规范),而非手动扫描代码。检视范围:
|
|
15
|
-
> - 鸿蒙化仓库 `source/ohos/` 下的测试代码
|
|
16
|
-
> - Demo 代码(RNTDEMO 工程或仓库自动查找的 example/tester/demo 目录)
|
|
17
|
-
> - TurboModule/NAPI 桥接层接口覆盖
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## 任务参数
|
|
22
|
-
|
|
23
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
24
|
-
|------|------|------|------|
|
|
25
|
-
| `repoUrl` | string | ✅ | 鸿蒙化仓库地址 |
|
|
26
|
-
| `outputDir` | string | ✅ | 输出目录绝对路径 |
|
|
27
|
-
| `interfaceDocPath` | string | ❌ | 接口规格说明文档路径(由 rn-library-interface-analyzer 生成,可选,脚本会自行提取接口规格) |
|
|
28
|
-
| `repoName` | string | ✅ | 仓库名称(用于报告标识) |
|
|
29
|
-
| `rnRntUrl` | string | ❌ | 测试用例 demo 地址(可选)。格式为 `{rnRntGitUrl}/tree/{branch}/{projectPath}/{demoPath}`。若不传入,脚本自动从仓库 `example/`/`tester/`/`demo/` 目录查找。详见 [DEMO_LOCATION.md](references/DEMO_LOCATION.md) |
|
|
30
|
-
| `upstreamVersion` | string | ❌ | 上游 npm 版本号(如 "2.2.0"),不传则自动推断 |
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## 输入依赖
|
|
35
|
-
|
|
36
|
-
本 SKILL 是 RN 仓库检视流程的**第七阶段(最终阶段)**,依赖:
|
|
37
|
-
|
|
38
|
-
- **前置 SKILL**: `rn-library-documentation-quality-check`(文档质量检视已完成)
|
|
39
|
-
- **输入文件**: `文档质量检视报告.md`(位于 outputDir,可选参考)
|
|
40
|
-
- **仓库源码**: 已克隆到 `{outputDir}/source/ohos/`
|
|
41
|
-
|
|
42
|
-
> 💡 **接口规格自提取**:本 SKILL 通过 `rn-extract-interfaces.cjs` 脚本自动从鸿蒙化仓库提取接口规格(JSON),不强制依赖前置 SKILL 的接口文档。若 `interfaceDocPath` 已提供,可交叉验证。
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## 目录结构约定
|
|
47
|
-
|
|
48
|
-
> ⚠️ **关键约定**:所有新增文件必须存放在 `{outputDir}` 内,禁止写入系统临时目录。
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
{outputDir}/
|
|
52
|
-
├── 接口规格说明.md # 前置 SKILL 输出(可选)
|
|
53
|
-
├── 文档质量检视报告.md # 前置 SKILL 输出(可选)
|
|
54
|
-
├── clone-info.json # 双仓库克隆元信息
|
|
55
|
-
├── interface-spec.json # 脚本生成的接口规格(Phase 2 产出)
|
|
56
|
-
├── test-coverage-report.md # 测试覆盖率报告(Phase 3 产出)
|
|
57
|
-
├── demo-coverage-report.md # Demo 覆盖率报告(Phase 4 产出)
|
|
58
|
-
├── 用例覆盖度检视报告.md # 最终统一报告(Phase 6 产出)
|
|
59
|
-
└── source/
|
|
60
|
-
├── RN/ # 上游原库源码
|
|
61
|
-
├── ohos/ # 鸿蒙化仓库源码
|
|
62
|
-
└── RNTDEMO/ # RN 测试 demo 工程(仅情况 A)
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## 工作流程概览
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
Phase 0: 环境准备(检查 MCP 目录的 TypeScript 依赖)
|
|
71
|
-
↓
|
|
72
|
-
Phase 1: 仓库获取与 demo 代码定位
|
|
73
|
-
↓
|
|
74
|
-
Phase 2: 接口规格提取(rn-extract-interfaces.cjs)
|
|
75
|
-
↓
|
|
76
|
-
Phase 3: 测试覆盖率分析(rn-analyze-test-coverage.cjs)
|
|
77
|
-
↓
|
|
78
|
-
Phase 4: Demo 覆盖率分析(rn-analyze-demo-coverage.cjs)
|
|
79
|
-
↓
|
|
80
|
-
Phase 5: 覆盖度评分计算(AI 解读脚本输出)
|
|
81
|
-
↓
|
|
82
|
-
Phase 6: 报告生成
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Phase 0:环境准备(TypeScript 依赖检查)
|
|
88
|
-
|
|
89
|
-
> 覆盖率分析脚本默认使用 AST 模式(基于 TypeScript Compiler API 语义分析),精度远高于正则降级模式。脚本统一从 `{SKILL_DIR}/../../../MCP/scripts/` 引用(本 SKILL 不维护脚本副本,与 MCP Gateway 共享同一份脚本)。
|
|
90
|
-
|
|
91
|
-
### 0.1 检查 TypeScript 模块
|
|
92
|
-
|
|
93
|
-
脚本中的 `loadTypeScript()` 按以下顺序查找 TypeScript 模块(相对于**脚本所在目录**,即 `MCP/scripts/`):
|
|
94
|
-
|
|
95
|
-
1. 环境变量 `TYPESCRIPT_PATH` 指定的路径
|
|
96
|
-
2. `MCP/node_modules/typescript`(`npm install` 安装位置,默认命中)
|
|
97
|
-
3. `MCP/scripts/node_modules/typescript`
|
|
98
|
-
4. 全局 `require('typescript')`
|
|
99
|
-
|
|
100
|
-
检查默认位置是否存在:
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
ls {SKILL_DIR}/../../../MCP/node_modules/typescript/package.json
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
若不存在,在 MCP 目录执行安装:
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
npm install
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
> `workdir: "{SKILL_DIR}/../../../MCP"`
|
|
113
|
-
|
|
114
|
-
若以上路径均未找到,脚本自动降级为正则模式并输出警告 `TypeScript 模块不可用,降级到正则模式`。
|
|
115
|
-
|
|
116
|
-
### 0.2 AST 模式 vs 正则模式
|
|
117
|
-
|
|
118
|
-
| 维度 | AST 模式(推荐) | 正则模式(降级) |
|
|
119
|
-
|------|-----------------|-----------------|
|
|
120
|
-
| 匹配精度 | 语义级,通过 TypeChecker 推断变量类型和属性访问 | 字符串正则匹配,存在假阳性 |
|
|
121
|
-
| 误报率 | 低 | 高(同名方法/属性可能被误判为覆盖) |
|
|
122
|
-
| 依赖 | 需要 `typescript` npm 包 | 无额外依赖 |
|
|
123
|
-
| 启用条件 | `npm install` 后自动启用 | TypeScript 模块不可用时自动降级 |
|
|
124
|
-
|
|
125
|
-
> ⚠️ **正则模式会产生假阳性**:宽松的 `.memberName(` 正则会把同名但无关的方法调用也计入覆盖,导致覆盖率虚高。务必确保 AST 模式可用以获得准确评分。
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## Phase 1:仓库获取与 demo 代码定位
|
|
130
|
-
|
|
131
|
-
> 获取 demo 代码,为后续脚本分析提供 demo 目录路径。根据是否传入 `rnRntUrl` 分两种情况。
|
|
132
|
-
|
|
133
|
-
### 1.1 判断 demo 来源
|
|
134
|
-
|
|
135
|
-
**情况 A(rnRntUrl 已传入)**:解析 URL 并 Sparse Checkout 克隆 demo 工程。
|
|
136
|
-
|
|
137
|
-
解析格式:`{rnRntGitUrl}/tree/{branch}/{projectPath}/{demoPath}`
|
|
138
|
-
|
|
139
|
-
> ⚠️ projectPath 或 demoPath 为空时停止检查,评分 0 分。详细解析规则和错误处理参见 [DEMO_LOCATION.md](references/DEMO_LOCATION.md)
|
|
140
|
-
|
|
141
|
-
**情况 B(rnRntUrl 未传入)**:从 `{outputDir}/source/RN/` 和 `{outputDir}/source/ohos/` 自动查找 `example/`/`examples/`/`tester/`/`demo/` 目录。
|
|
142
|
-
|
|
143
|
-
### 1.2 获取 demo 代码
|
|
144
|
-
|
|
145
|
-
**情况 A**:
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
mkdir -p {outputDir}/source/RNTDEMO
|
|
149
|
-
cd {outputDir}/source/RNTDEMO
|
|
150
|
-
git init && git config core.sparseCheckout true
|
|
151
|
-
git remote add origin {rnRntGitUrl}
|
|
152
|
-
git sparse-checkout set {projectPath}/{demoPath}
|
|
153
|
-
git fetch origin {branch} --depth=1
|
|
154
|
-
git checkout {branch}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
> `workdir: "{outputDir}"`
|
|
158
|
-
|
|
159
|
-
**情况 B**:无需额外操作,demo 代码已在已克隆仓库中。
|
|
160
|
-
|
|
161
|
-
### 1.3 确定分析路径
|
|
162
|
-
|
|
163
|
-
| 情况 | demoRoot(demo 目录路径) | libRoot(库根目录) |
|
|
164
|
-
|------|--------------------------|-------------------|
|
|
165
|
-
| A | `{outputDir}/source/RNTDEMO/{projectPath}/{demoPath}` | `{outputDir}/source/ohos` |
|
|
166
|
-
| B | `{outputDir}/source/RN/{demoDir}` 或 `{outputDir}/source/ohos/{demoDir}` | `{outputDir}/source/ohos` |
|
|
167
|
-
|
|
168
|
-
> 详细路径确定逻辑和失败处理参见 [DEMO_LOCATION.md](references/DEMO_LOCATION.md)
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## Phase 2:接口规格提取(脚本执行)
|
|
173
|
-
|
|
174
|
-
> 运行 `rn-extract-interfaces.cjs` 从鸿蒙化仓库提取完整接口规格,生成 JSON 中间件供后续覆盖率分析使用。
|
|
175
|
-
|
|
176
|
-
### 2.1 执行脚本
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
node {SKILL_DIR}/../../../MCP/scripts/rn-extract-interfaces.cjs \
|
|
180
|
-
--repoDir {outputDir}/source/ohos \
|
|
181
|
-
--output {outputDir}/interface-spec.json \
|
|
182
|
-
--version {upstreamVersion}
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
> `workdir: "{outputDir}"`
|
|
186
|
-
|
|
187
|
-
### 2.2 验证产出
|
|
188
|
-
|
|
189
|
-
脚本产出 `{outputDir}/interface-spec.json`,包含:
|
|
190
|
-
|
|
191
|
-
| 字段 | 说明 |
|
|
192
|
-
|------|------|
|
|
193
|
-
| `libraryName` | 库完整名称 |
|
|
194
|
-
| `libraryAlias` | 库别名(用于 import 匹配) |
|
|
195
|
-
| `interfaces[]` | 接口列表(每个含 className、memberName、fullName、kind、signature、params、returnType) |
|
|
196
|
-
| `summary` | 统计摘要(S=类数, N=接口数, M=方法数) |
|
|
197
|
-
|
|
198
|
-
### 2.3 失败处理
|
|
199
|
-
|
|
200
|
-
| 错误 | 处理 |
|
|
201
|
-
|------|------|
|
|
202
|
-
| npm pack 失败(网络问题) | 脚本自动降级到 latest 版本;若仍失败,报告标注错误,评分 0 分 |
|
|
203
|
-
| 目录不存在 | 报告标注"源码目录不可访问",评分 0 分(归零规则 5) |
|
|
204
|
-
| 无有效接口提取 | 报告标注"未发现鸿蒙化代码",评分 0 分(归零规则 4) |
|
|
205
|
-
|
|
206
|
-
> 脚本参数详情和输出结构参见 [SCRIPT_USAGE.md](references/SCRIPT_USAGE.md)
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
## Phase 3:测试覆盖率分析(脚本执行)
|
|
211
|
-
|
|
212
|
-
> 运行 `rn-analyze-test-coverage.cjs` 扫描测试源码目录,执行 AST/正则双层匹配,生成测试覆盖率报告。
|
|
213
|
-
|
|
214
|
-
### 3.1 执行脚本
|
|
215
|
-
|
|
216
|
-
```bash
|
|
217
|
-
node {SKILL_DIR}/../../../MCP/scripts/rn-analyze-test-coverage.cjs \
|
|
218
|
-
--spec {outputDir}/interface-spec.json \
|
|
219
|
-
--libroot {outputDir}/source/ohos \
|
|
220
|
-
--output {outputDir}/test-coverage-report.md \
|
|
221
|
-
--mode auto
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
> `workdir: "{outputDir}"`
|
|
225
|
-
|
|
226
|
-
### 3.2 脚本行为
|
|
227
|
-
|
|
228
|
-
- 自动检测测试目录:`example/src/test`、`example/__tests__`、`__tests__`、`test`、`tests` 等
|
|
229
|
-
- 扫描 `*.ts`/`*.tsx`/`*.js`/`*.jsx`/`*.ets` 文件
|
|
230
|
-
- AST 模式优先(需 TypeScript 模块,参见 Phase 0),失败自动降级正则模式
|
|
231
|
-
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
| `
|
|
239
|
-
| `
|
|
240
|
-
| `
|
|
241
|
-
| `
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
|
249
|
-
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
--
|
|
265
|
-
--
|
|
266
|
-
--
|
|
267
|
-
--
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
--
|
|
276
|
-
--
|
|
277
|
-
--
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
-
|
|
288
|
-
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
|
310
|
-
|
|
311
|
-
|
|
|
312
|
-
|
|
|
313
|
-
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
|
332
|
-
|
|
333
|
-
|
|
|
334
|
-
|
|
|
335
|
-
|
|
|
336
|
-
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
>
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
|
400
|
-
|
|
401
|
-
|
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
>
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
1
|
|
421
|
-
2
|
|
422
|
-
3
|
|
423
|
-
4
|
|
424
|
-
5
|
|
425
|
-
6
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
|
477
|
-
|
|
478
|
-
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
1
|
+
---
|
|
2
|
+
name: rn-library-test-coverage-check
|
|
3
|
+
description: 通过脚本自动化分析 RN 三方库鸿蒙化代码的用例覆盖度,执行接口提取、测试覆盖率分析、Demo 覆盖率分析三步脚本流水线,AI 基于脚本输出解读评分规则并生成严苛评分报告(0-100分)。作为 RN 仓库检视流程的第七阶段(最终阶段)。Use when 需要评估 RN 鸿蒙化库的测试用例覆盖情况、测试质量或生成覆盖度评分报告。
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
compatibility: 需要Node.js环境、Git ≥ 2.25.0(Sparse Checkout)、访问鸿蒙化仓库源码目录。AST 匹配模式需 TypeScript 模块(由 MCP 目录的 node_modules 提供,缺失时在 MCP 目录执行 `npm install`,参见 Phase 0)。脚本统一使用相对路径引用 `{SKILL_DIR}/../../../MCP/scripts/` 下的共享脚本,本 SKILL 不维护脚本副本
|
|
6
|
+
metadata:
|
|
7
|
+
version: "1.1.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# RNLibraryTestCoverageCheckSkill
|
|
11
|
+
|
|
12
|
+
通过**脚本自动化**对 RN 三方库鸿蒙化代码进行用例覆盖度检视。三步脚本流水线(接口提取 → 测试覆盖率 → Demo 覆盖率)完成覆盖数据的精确采集,AI 基于脚本输出解读评分规则并生成最终报告。
|
|
13
|
+
|
|
14
|
+
> ⚠️ **核心定位**:覆盖率分析由脚本(AST/正则双层匹配)完成,AI 负责**评分解读**和**质量评估**(边界场景、测试框架规范),而非手动扫描代码。检视范围:
|
|
15
|
+
> - 鸿蒙化仓库 `source/ohos/` 下的测试代码
|
|
16
|
+
> - Demo 代码(RNTDEMO 工程或仓库自动查找的 example/tester/demo 目录)
|
|
17
|
+
> - TurboModule/NAPI 桥接层接口覆盖
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 任务参数
|
|
22
|
+
|
|
23
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
24
|
+
|------|------|------|------|
|
|
25
|
+
| `repoUrl` | string | ✅ | 鸿蒙化仓库地址 |
|
|
26
|
+
| `outputDir` | string | ✅ | 输出目录绝对路径 |
|
|
27
|
+
| `interfaceDocPath` | string | ❌ | 接口规格说明文档路径(由 rn-library-interface-analyzer 生成,可选,脚本会自行提取接口规格) |
|
|
28
|
+
| `repoName` | string | ✅ | 仓库名称(用于报告标识) |
|
|
29
|
+
| `rnRntUrl` | string | ❌ | 测试用例 demo 地址(可选)。格式为 `{rnRntGitUrl}/tree/{branch}/{projectPath}/{demoPath}`。若不传入,脚本自动从仓库 `example/`/`tester/`/`demo/` 目录查找。详见 [DEMO_LOCATION.md](references/DEMO_LOCATION.md) |
|
|
30
|
+
| `upstreamVersion` | string | ❌ | 上游 npm 版本号(如 "2.2.0"),不传则自动推断 |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 输入依赖
|
|
35
|
+
|
|
36
|
+
本 SKILL 是 RN 仓库检视流程的**第七阶段(最终阶段)**,依赖:
|
|
37
|
+
|
|
38
|
+
- **前置 SKILL**: `rn-library-documentation-quality-check`(文档质量检视已完成)
|
|
39
|
+
- **输入文件**: `文档质量检视报告.md`(位于 outputDir,可选参考)
|
|
40
|
+
- **仓库源码**: 已克隆到 `{outputDir}/source/ohos/`
|
|
41
|
+
|
|
42
|
+
> 💡 **接口规格自提取**:本 SKILL 通过 `rn-extract-interfaces.cjs` 脚本自动从鸿蒙化仓库提取接口规格(JSON),不强制依赖前置 SKILL 的接口文档。若 `interfaceDocPath` 已提供,可交叉验证。
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 目录结构约定
|
|
47
|
+
|
|
48
|
+
> ⚠️ **关键约定**:所有新增文件必须存放在 `{outputDir}` 内,禁止写入系统临时目录。
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
{outputDir}/
|
|
52
|
+
├── 接口规格说明.md # 前置 SKILL 输出(可选)
|
|
53
|
+
├── 文档质量检视报告.md # 前置 SKILL 输出(可选)
|
|
54
|
+
├── clone-info.json # 双仓库克隆元信息
|
|
55
|
+
├── interface-spec.json # 脚本生成的接口规格(Phase 2 产出)
|
|
56
|
+
├── test-coverage-report.md # 测试覆盖率报告(Phase 3 产出)
|
|
57
|
+
├── demo-coverage-report.md # Demo 覆盖率报告(Phase 4 产出)
|
|
58
|
+
├── 用例覆盖度检视报告.md # 最终统一报告(Phase 6 产出)
|
|
59
|
+
└── source/
|
|
60
|
+
├── RN/ # 上游原库源码
|
|
61
|
+
├── ohos/ # 鸿蒙化仓库源码
|
|
62
|
+
└── RNTDEMO/ # RN 测试 demo 工程(仅情况 A)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 工作流程概览
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
Phase 0: 环境准备(检查 MCP 目录的 TypeScript 依赖)
|
|
71
|
+
↓
|
|
72
|
+
Phase 1: 仓库获取与 demo 代码定位
|
|
73
|
+
↓
|
|
74
|
+
Phase 2: 接口规格提取(rn-extract-interfaces.cjs)
|
|
75
|
+
↓
|
|
76
|
+
Phase 3: 测试覆盖率分析(rn-analyze-test-coverage.cjs)
|
|
77
|
+
↓
|
|
78
|
+
Phase 4: Demo 覆盖率分析(rn-analyze-demo-coverage.cjs)
|
|
79
|
+
↓
|
|
80
|
+
Phase 5: 覆盖度评分计算(AI 解读脚本输出)
|
|
81
|
+
↓
|
|
82
|
+
Phase 6: 报告生成
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Phase 0:环境准备(TypeScript 依赖检查)
|
|
88
|
+
|
|
89
|
+
> 覆盖率分析脚本默认使用 AST 模式(基于 TypeScript Compiler API 语义分析),精度远高于正则降级模式。脚本统一从 `{SKILL_DIR}/../../../MCP/scripts/` 引用(本 SKILL 不维护脚本副本,与 MCP Gateway 共享同一份脚本)。
|
|
90
|
+
|
|
91
|
+
### 0.1 检查 TypeScript 模块
|
|
92
|
+
|
|
93
|
+
脚本中的 `loadTypeScript()` 按以下顺序查找 TypeScript 模块(相对于**脚本所在目录**,即 `MCP/scripts/`):
|
|
94
|
+
|
|
95
|
+
1. 环境变量 `TYPESCRIPT_PATH` 指定的路径
|
|
96
|
+
2. `MCP/node_modules/typescript`(`npm install` 安装位置,默认命中)
|
|
97
|
+
3. `MCP/scripts/node_modules/typescript`
|
|
98
|
+
4. 全局 `require('typescript')`
|
|
99
|
+
|
|
100
|
+
检查默认位置是否存在:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
ls {SKILL_DIR}/../../../MCP/node_modules/typescript/package.json
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
若不存在,在 MCP 目录执行安装:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npm install
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
> `workdir: "{SKILL_DIR}/../../../MCP"`
|
|
113
|
+
|
|
114
|
+
若以上路径均未找到,脚本自动降级为正则模式并输出警告 `TypeScript 模块不可用,降级到正则模式`。
|
|
115
|
+
|
|
116
|
+
### 0.2 AST 模式 vs 正则模式
|
|
117
|
+
|
|
118
|
+
| 维度 | AST 模式(推荐) | 正则模式(降级) |
|
|
119
|
+
|------|-----------------|-----------------|
|
|
120
|
+
| 匹配精度 | 语义级,通过 TypeChecker 推断变量类型和属性访问 | 字符串正则匹配,存在假阳性 |
|
|
121
|
+
| 误报率 | 低 | 高(同名方法/属性可能被误判为覆盖) |
|
|
122
|
+
| 依赖 | 需要 `typescript` npm 包 | 无额外依赖 |
|
|
123
|
+
| 启用条件 | `npm install` 后自动启用 | TypeScript 模块不可用时自动降级 |
|
|
124
|
+
|
|
125
|
+
> ⚠️ **正则模式会产生假阳性**:宽松的 `.memberName(` 正则会把同名但无关的方法调用也计入覆盖,导致覆盖率虚高。务必确保 AST 模式可用以获得准确评分。
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Phase 1:仓库获取与 demo 代码定位
|
|
130
|
+
|
|
131
|
+
> 获取 demo 代码,为后续脚本分析提供 demo 目录路径。根据是否传入 `rnRntUrl` 分两种情况。
|
|
132
|
+
|
|
133
|
+
### 1.1 判断 demo 来源
|
|
134
|
+
|
|
135
|
+
**情况 A(rnRntUrl 已传入)**:解析 URL 并 Sparse Checkout 克隆 demo 工程。
|
|
136
|
+
|
|
137
|
+
解析格式:`{rnRntGitUrl}/tree/{branch}/{projectPath}/{demoPath}`
|
|
138
|
+
|
|
139
|
+
> ⚠️ projectPath 或 demoPath 为空时停止检查,评分 0 分。详细解析规则和错误处理参见 [DEMO_LOCATION.md](references/DEMO_LOCATION.md)
|
|
140
|
+
|
|
141
|
+
**情况 B(rnRntUrl 未传入)**:从 `{outputDir}/source/RN/` 和 `{outputDir}/source/ohos/` 自动查找 `example/`/`examples/`/`tester/`/`demo/` 目录。
|
|
142
|
+
|
|
143
|
+
### 1.2 获取 demo 代码
|
|
144
|
+
|
|
145
|
+
**情况 A**:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
mkdir -p {outputDir}/source/RNTDEMO
|
|
149
|
+
cd {outputDir}/source/RNTDEMO
|
|
150
|
+
git init && git config core.sparseCheckout true
|
|
151
|
+
git remote add origin {rnRntGitUrl}
|
|
152
|
+
git sparse-checkout set {projectPath}/{demoPath}
|
|
153
|
+
git fetch origin {branch} --depth=1
|
|
154
|
+
git checkout {branch}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
> `workdir: "{outputDir}"`
|
|
158
|
+
|
|
159
|
+
**情况 B**:无需额外操作,demo 代码已在已克隆仓库中。
|
|
160
|
+
|
|
161
|
+
### 1.3 确定分析路径
|
|
162
|
+
|
|
163
|
+
| 情况 | demoRoot(demo 目录路径) | libRoot(库根目录) |
|
|
164
|
+
|------|--------------------------|-------------------|
|
|
165
|
+
| A | `{outputDir}/source/RNTDEMO/{projectPath}/{demoPath}` | `{outputDir}/source/ohos` |
|
|
166
|
+
| B | `{outputDir}/source/RN/{demoDir}` 或 `{outputDir}/source/ohos/{demoDir}` | `{outputDir}/source/ohos` |
|
|
167
|
+
|
|
168
|
+
> 详细路径确定逻辑和失败处理参见 [DEMO_LOCATION.md](references/DEMO_LOCATION.md)
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Phase 2:接口规格提取(脚本执行)
|
|
173
|
+
|
|
174
|
+
> 运行 `rn-extract-interfaces.cjs` 从鸿蒙化仓库提取完整接口规格,生成 JSON 中间件供后续覆盖率分析使用。
|
|
175
|
+
|
|
176
|
+
### 2.1 执行脚本
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
node {SKILL_DIR}/../../../MCP/scripts/rn-extract-interfaces.cjs \
|
|
180
|
+
--repoDir {outputDir}/source/ohos \
|
|
181
|
+
--output {outputDir}/interface-spec.json \
|
|
182
|
+
--version {upstreamVersion}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
> `workdir: "{outputDir}"`
|
|
186
|
+
|
|
187
|
+
### 2.2 验证产出
|
|
188
|
+
|
|
189
|
+
脚本产出 `{outputDir}/interface-spec.json`,包含:
|
|
190
|
+
|
|
191
|
+
| 字段 | 说明 |
|
|
192
|
+
|------|------|
|
|
193
|
+
| `libraryName` | 库完整名称 |
|
|
194
|
+
| `libraryAlias` | 库别名(用于 import 匹配) |
|
|
195
|
+
| `interfaces[]` | 接口列表(每个含 className、memberName、fullName、kind、signature、params、returnType) |
|
|
196
|
+
| `summary` | 统计摘要(S=类数, N=接口数, M=方法数) |
|
|
197
|
+
|
|
198
|
+
### 2.3 失败处理
|
|
199
|
+
|
|
200
|
+
| 错误 | 处理 |
|
|
201
|
+
|------|------|
|
|
202
|
+
| npm pack 失败(网络问题) | 脚本自动降级到 latest 版本;若仍失败,报告标注错误,评分 0 分 |
|
|
203
|
+
| 目录不存在 | 报告标注"源码目录不可访问",评分 0 分(归零规则 5) |
|
|
204
|
+
| 无有效接口提取 | 报告标注"未发现鸿蒙化代码",评分 0 分(归零规则 4) |
|
|
205
|
+
|
|
206
|
+
> 脚本参数详情和输出结构参见 [SCRIPT_USAGE.md](references/SCRIPT_USAGE.md)
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Phase 3:测试覆盖率分析(脚本执行)
|
|
211
|
+
|
|
212
|
+
> 运行 `rn-analyze-test-coverage.cjs` 扫描测试源码目录,执行 AST/正则双层匹配,生成测试覆盖率报告。
|
|
213
|
+
|
|
214
|
+
### 3.1 执行脚本
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
node {SKILL_DIR}/../../../MCP/scripts/rn-analyze-test-coverage.cjs \
|
|
218
|
+
--spec {outputDir}/interface-spec.json \
|
|
219
|
+
--libroot {outputDir}/source/ohos \
|
|
220
|
+
--output {outputDir}/test-coverage-report.md \
|
|
221
|
+
--mode auto
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
> `workdir: "{outputDir}"`
|
|
225
|
+
|
|
226
|
+
### 3.2 脚本行为
|
|
227
|
+
|
|
228
|
+
- 自动检测测试目录:`example/src/test`、`example/__tests__`、`__tests__`、`test`、`tests` 等
|
|
229
|
+
- 扫描 `*.ts`/`*.tsx`/`*.js`/`*.jsx`/`*.ets` 文件
|
|
230
|
+
- AST 模式优先(需 TypeScript 模块,参见 Phase 0),失败自动降级正则模式
|
|
231
|
+
- ⚠️ 已知假阴性局限:AST 匹配器不处理方括号索引访问(`ElementAccessExpression`),索引签名 `[key: string]: T` 提取出的伪成员(如 `X.key`)必然报未覆盖——由 Phase 5.3 交叉验证兜底(Demo 覆盖率分析同理)
|
|
232
|
+
- 输出 Markdown 报告 + 覆盖率数据
|
|
233
|
+
|
|
234
|
+
### 3.3 关键输出指标
|
|
235
|
+
|
|
236
|
+
| 指标 | 说明 |
|
|
237
|
+
|------|------|
|
|
238
|
+
| `coverageRateMethodLevel` | 方法级覆盖率(百分比) |
|
|
239
|
+
| `coveredMethodCount` / `totalInterfacesMethodLevel` | 已覆盖/总接口数 |
|
|
240
|
+
| `covered[]` | 已覆盖接口列表(含覆盖文件) |
|
|
241
|
+
| `uncovered[]` | 未覆盖接口列表 |
|
|
242
|
+
| `classCoverage[]` | 按类的覆盖率统计 |
|
|
243
|
+
|
|
244
|
+
### 3.4 失败处理
|
|
245
|
+
|
|
246
|
+
| 错误 | 处理 |
|
|
247
|
+
|------|------|
|
|
248
|
+
| 测试目录不存在 | 脚本输出空报告(0%覆盖率),标注"无测试目录",触发归零规则 3 |
|
|
249
|
+
| 无测试文件 | 覆盖率 0%,触发归零规则 3 |
|
|
250
|
+
| TypeScript 模块不可用 | 在 MCP 目录(`{SKILL_DIR}/../../../MCP`)执行 `npm install` 安装依赖后重新运行;若仍失败则降级正则模式,报告中标注 |
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Phase 4:Demo 覆盖率分析(脚本执行)
|
|
255
|
+
|
|
256
|
+
> 运行 `rn-analyze-demo-coverage.cjs` 扫描 Demo 源码目录,分析 Demo 对接口的覆盖情况。
|
|
257
|
+
|
|
258
|
+
### 4.1 执行脚本
|
|
259
|
+
|
|
260
|
+
**情况 A(demoRoot 为 RNTDEMO 目录)**:
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
node {SKILL_DIR}/../../../MCP/scripts/rn-analyze-demo-coverage.cjs \
|
|
264
|
+
--spec {outputDir}/interface-spec.json \
|
|
265
|
+
--libroot {outputDir}/source/ohos \
|
|
266
|
+
--src {demoRoot} \
|
|
267
|
+
--output {outputDir}/demo-coverage-report.md \
|
|
268
|
+
--mode auto
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
**情况 B(demoRoot 为仓库内 demo 目录)**:
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
node {SKILL_DIR}/../../../MCP/scripts/rn-analyze-demo-coverage.cjs \
|
|
275
|
+
--spec {outputDir}/interface-spec.json \
|
|
276
|
+
--libroot {outputDir}/source/ohos \
|
|
277
|
+
--output {outputDir}/demo-coverage-report.md \
|
|
278
|
+
--mode auto
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
> `workdir: "{outputDir}"`
|
|
282
|
+
|
|
283
|
+
> 💡 情况 A 需通过 `--src` 指定 demo 目录路径(因为 demo 代码在 RNTDEMO 而非 libroot 下);情况 B 脚本自动检测 `example/src`/`demo/src` 等目录。
|
|
284
|
+
|
|
285
|
+
### 4.2 脚本行为
|
|
286
|
+
|
|
287
|
+
- 扫描 `*.ts`/`*.tsx`/`*.js`/`*.jsx` 文件(排除 `__tests__`/`test`/`tests`)
|
|
288
|
+
- AST 模式优先,失败降级正则模式
|
|
289
|
+
- ⚠️ 已知假阴性局限:同 Phase 3.2(不处理方括号索引访问,索引签名伪成员必假阴性),由 Phase 5.3 交叉验证兜底
|
|
290
|
+
- 输出 Markdown 报告 + 覆盖率数据
|
|
291
|
+
|
|
292
|
+
### 4.3 失败处理
|
|
293
|
+
|
|
294
|
+
| 错误 | 处理 |
|
|
295
|
+
|------|------|
|
|
296
|
+
| demo 目录不存在 | 脚本输出空报告,标注"未找到 demo 代码",仅靠 test 目录覆盖评估 |
|
|
297
|
+
| demo 目录无 TS/JS 文件 | 覆盖率 0%,仅靠 test 目录覆盖评估 |
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Phase 5:覆盖度评分计算(AI 解读脚本输出)
|
|
302
|
+
|
|
303
|
+
> AI 读取 Phase 3/4 的脚本报告,提取覆盖率数据,应用评分规则计算最终得分。
|
|
304
|
+
|
|
305
|
+
### 5.1 提取覆盖率数据
|
|
306
|
+
|
|
307
|
+
从 `test-coverage-report.md` 和 `demo-coverage-report.md` 中提取:
|
|
308
|
+
|
|
309
|
+
| 数据项 | 来源 |
|
|
310
|
+
|--------|------|
|
|
311
|
+
| test 覆盖率 | `test-coverage-report.md` 的"方法级覆盖率" |
|
|
312
|
+
| demo 覆盖率 | `demo-coverage-report.md` 的"方法级覆盖率" |
|
|
313
|
+
| 综合接口覆盖率 | `max(test覆盖率, demo覆盖率)` |
|
|
314
|
+
| 已覆盖接口列表 | 两份报告的 `covered[]` 合并去重 |
|
|
315
|
+
| 未覆盖接口列表(原始) | 两份报告的 `uncovered[]` 交集(两个来源都未覆盖才算未覆盖) |
|
|
316
|
+
|
|
317
|
+
### 5.2 平台特有接口过滤(关键步骤)
|
|
318
|
+
|
|
319
|
+
> ⚠️ **核心规则**:其他平台(Android/iOS)特有的接口**不算未覆盖**,不计入扣分,不触发归零规则。因为鸿蒙化移植无需覆盖原平台专属接口。
|
|
320
|
+
|
|
321
|
+
AI 需从 `uncovered[]`(原始未覆盖列表)中识别并排除平台特有接口,得到**有效未覆盖列表**:
|
|
322
|
+
|
|
323
|
+
```
|
|
324
|
+
有效未覆盖列表 = 原始未覆盖列表 - 平台特有接口列表
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
#### 平台特有接口识别依据
|
|
328
|
+
|
|
329
|
+
AI 通过以下特征识别平台特有接口(满足任一即判定):
|
|
330
|
+
|
|
331
|
+
| # | 识别特征 | 示例 |
|
|
332
|
+
|---|----------|------|
|
|
333
|
+
| 1 | 接口名/类名包含平台关键词 | `getAndroidId`、`iOSVersion`、`AndroidPermission`、`isIOSNotch` |
|
|
334
|
+
| 2 | 接口源文件位于 `android/` 或 `ios/` 目录 | `source: "./android/..."` |
|
|
335
|
+
| 3 | 接口签名或描述明确标注平台限定 | `@platform android`、`(iOS only)`、`Android-specific` |
|
|
336
|
+
| 4 | TurboModule 方法仅在原生 Android/iOS 代码中实现,鸿蒙侧无对应实现 | 鸿蒙化仓库 `source/ohos/` 中无该方法的 NAPI/TurboModule 实现 |
|
|
337
|
+
| 5 | 接口涉及平台专有 API | `Activity`、`Context`(Android);`UIView`、`UIApplicationDelegate`(iOS) |
|
|
338
|
+
| 6 | 接口名含 `NativeAndroid`/`NativeIOS` 等前缀 | `NativeAndroidXxxModule`、`NativeIOSXxxSpec` |
|
|
339
|
+
|
|
340
|
+
> ⚠️ **判据优先级**:特征 3(上游 d.ts 平台限定注释,如 `// Android only`)**仅为线索,不能单独作为排除依据**;特征 4(鸿蒙侧 TurboModule/ArkTS/C++ 均无实现)是**决定性判据**。反例:`removeSessionCookies`(上游标注 Android only)与 `clearByName`(上游标注 iOS only)鸿蒙侧 TurboModule 均有实现,若按注释机械排除,会把鸿蒙侧真实存在的接口移出有效分母(过度排除,掩盖真实覆盖缺口)。建议三条证据齐备才排除:① 上游平台标注(线索)+ ② 鸿蒙 JS 入口平台门控(如仅 `Platform.OS === 'android'` 时调原生,鸿蒙为 no-op)+ ③ 鸿蒙侧无任何实现(决定性)。
|
|
341
|
+
|
|
342
|
+
#### 判定流程
|
|
343
|
+
|
|
344
|
+
1. 遍历 `uncovered[]` 中的每个接口
|
|
345
|
+
2. 检查接口名/类名是否包含平台关键词(`android`/`ios`/`Android`/`iOS`/`AndroidOnly`/`iOSOnly`)
|
|
346
|
+
3. 检查 `interface-spec.json` 中该接口的 `source` 字段是否指向 `android/` 或 `ios/` 目录
|
|
347
|
+
4. 检查鸿蒙化仓库 `source/ohos/` 中是否存在该接口的鸿蒙侧实现(若无原生实现,则该接口本身就是平台特有的,不应要求测试覆盖)
|
|
348
|
+
5. 满足任一特征 → 标记为「平台特有」,从有效未覆盖列表中移除
|
|
349
|
+
6. 边界情况:接口名同时包含多平台关键词(如 `getPlatformInfo`)且非任一平台专属 → 不排除,正常计入未覆盖
|
|
350
|
+
|
|
351
|
+
> ⚠️ **保守判定原则**:当无法确定接口是否为平台特有时,**不排除**该接口(按正常未覆盖处理),避免遗漏真实未覆盖的接口。只有明确证据表明是 Android/iOS 专属时才排除。
|
|
352
|
+
|
|
353
|
+
#### 有效覆盖率重新计算
|
|
354
|
+
|
|
355
|
+
排除平台特有接口后,需重新计算有效覆盖率:
|
|
356
|
+
|
|
357
|
+
```
|
|
358
|
+
有效总接口数 = 总接口数 - 平台特有接口数
|
|
359
|
+
有效已覆盖数 = 已覆盖接口数(平台特有接口不在已覆盖列表中,无需调整)
|
|
360
|
+
有效覆盖率 = (有效已覆盖数 / 有效总接口数) × 100%
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
> 💡 归零规则 6 中的"综合接口覆盖率 < 100%"使用**有效覆盖率**而非原始覆盖率判定。
|
|
364
|
+
|
|
365
|
+
### 5.3 未覆盖列表交叉验证(评分前强制对账)
|
|
366
|
+
|
|
367
|
+
> ⚠️ **强制步骤**:任何基于脚本 `uncovered[]` 列表的扣分或归零判定(尤其归零规则 6),必须先完成本节交叉验证。归零规则 6 的放大效应使**单个脚本假阴性即可翻转整个评分**(实例:95 ↔ 0)。脚本存在已知假阴性:接口提取会把索引签名 `[key: string]: T` 提取为伪字段(如 `Cookies.key`),而覆盖率 AST 匹配器不处理方括号索引访问(`obj["xxx"]` / `obj[k]`),此类成员**必然**报未覆盖。
|
|
368
|
+
|
|
369
|
+
对账流程:
|
|
370
|
+
|
|
371
|
+
1. 对有效未覆盖列表逐项检查可疑信号:memberName 为"类型签名参数名"风格的通用词(`key`/`value`/`index`)、宿主为纯类型接口(kind=field、layer=js、type=type-decl)、测试代码中有该类型显式标注的变量
|
|
372
|
+
2. 对疑似伪成员,在测试与 Demo 源码中 grep 宿主变量的所有访问形式:方括号访问 `varName[`(字面量键/变量键/计算键三种形式)+ 点访问 `varName.`(任意属性名,变量类型为该接口即可)
|
|
373
|
+
3. 命中且语义上使用了该接口 → 判定为脚本假阴性,修正为已覆盖(标注来源 test/demo/both),重新计算有效覆盖率
|
|
374
|
+
4. 对账全部完成后,才能执行 5.4~5.7 的维度扣分与归零判定
|
|
375
|
+
|
|
376
|
+
> ⚠️ **归零边缘警觉**:排除平台特有接口后有效覆盖率恰好差 1-2 项达到 100%,是伪成员/假阴性的**高发信号**,此时必须逐项核验而非直接套用归零规则 6。
|
|
377
|
+
|
|
378
|
+
> 详细可疑信号表、grep 对账方法与报告标注要求参见 [CHECKLIST.md](references/CHECKLIST.md)
|
|
379
|
+
|
|
380
|
+
### 5.4 维度评分规则
|
|
381
|
+
|
|
382
|
+
| 维度 | 权重 | 基础分 | 扣分上限 | 检查项 |
|
|
383
|
+
|------|------|--------|----------|--------|
|
|
384
|
+
| 公开接口覆盖率 | 70% | 70 | -70 | RTC-01,RTC-02,RTC-04~RTC-06 |
|
|
385
|
+
| 测试质量 | 30% | 30 | -30 | RTC-03,RTC-07 |
|
|
386
|
+
|
|
387
|
+
**维度得分** = max(0, 基础分 - 该维度累计扣分)
|
|
388
|
+
|
|
389
|
+
**综合评分** = Σ(各维度得分),范围 0-100
|
|
390
|
+
|
|
391
|
+
### 5.5 公开接口覆盖率扣分(维度 1,基于脚本输出)
|
|
392
|
+
|
|
393
|
+
> 以下扣分基于 **5.2 过滤并经 5.3 交叉验证后的有效未覆盖列表**,平台特有接口不参与扣分。
|
|
394
|
+
|
|
395
|
+
| # | 检查项 | 扣分 | 数据来源 |
|
|
396
|
+
|---|--------|------|----------|
|
|
397
|
+
| RTC-01 | 核心接口未覆盖 | **-20** | 有效未覆盖列表中标注为 required/核心的接口 |
|
|
398
|
+
| RTC-02 | 重要接口未覆盖 | **-15** | 有效未覆盖列表中的重要公开接口 |
|
|
399
|
+
| RTC-04 | 可选接口未覆盖 | **-3** | 有效未覆盖列表中的可选/次要接口 |
|
|
400
|
+
| RTC-05 | 接口参数组合未覆盖 | **-5** | AI 分析已覆盖接口的参数组合情况 |
|
|
401
|
+
| RTC-06 | 回调/事件接口未覆盖 | **-8** | 有效未覆盖列表中 `isEvent=true` 的接口 |
|
|
402
|
+
|
|
403
|
+
> ⚠️ **归零规则 6**:有效综合接口覆盖率(排除平台特有接口并经 5.3 交叉验证修正后)未达到 100% 时,综合评分直接为 0 分。
|
|
404
|
+
|
|
405
|
+
### 5.6 测试质量扣分(维度 2,AI 评估)
|
|
406
|
+
|
|
407
|
+
| # | 检查项 | 扣分 | 评估方法 |
|
|
408
|
+
|---|--------|------|----------|
|
|
409
|
+
| RTC-03 | 边界场景缺失 | **-5**/项 | AI 逐接口分析是否需要边界场景,上限 -15 分 |
|
|
410
|
+
| RTC-07 | 测试框架覆盖度 | **-5**/项 | AI 检查 `@rnoh/testerino` 框架规范,上限 -15 分 |
|
|
411
|
+
|
|
412
|
+
> RTC-03 和 RTC-07 仅针对**有效接口列表**(已排除平台特有接口)进行评估。详细判定规则参见 [CHECKLIST.md](references/CHECKLIST.md)
|
|
413
|
+
|
|
414
|
+
### 5.7 零容忍归零规则
|
|
415
|
+
|
|
416
|
+
> 以下归零规则基于**有效接口列表**(排除平台特有接口并完成 5.3 交叉验证后)判定。
|
|
417
|
+
|
|
418
|
+
| 规则 | 条件 | 结果 |
|
|
419
|
+
|------|------|------|
|
|
420
|
+
| 归零 1 | 核心接口完全无测试(有效未覆盖列表包含所有核心接口) | **0 分** |
|
|
421
|
+
| 归零 2 | 有效公开接口覆盖率 < 10% | **0 分** |
|
|
422
|
+
| 归零 3 | 仓库无任何测试文件(脚本报告显示 0 个源文件) | **0 分** |
|
|
423
|
+
| 归零 4 | 未发现鸿蒙化代码(接口提取失败) | **0 分** |
|
|
424
|
+
| 归零 5 | 源码目录不可访问 | **0 分** |
|
|
425
|
+
| 归零 6 | 有效综合接口覆盖率 < 100%(test 和 demo 均未达 100%,排除平台特有接口并经 5.3 交叉验证后) | **0 分** |
|
|
426
|
+
|
|
427
|
+
> 完整评分规则和检查清单参见 [CHECKLIST.md](references/CHECKLIST.md)
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## Phase 6:报告生成
|
|
432
|
+
|
|
433
|
+
在 `{outputDir}` 下生成 `用例覆盖度检视报告.md`,合并脚本输出和 AI 评分结果。
|
|
434
|
+
|
|
435
|
+
> 报告格式模板参见 [REPORT_TEMPLATE.md](references/REPORT_TEMPLATE.md)
|
|
436
|
+
|
|
437
|
+
### 6.1 报告关键内容
|
|
438
|
+
|
|
439
|
+
1. **检视概览**:接口总数、有效接口数、覆盖率(test/demo/综合有效)、测试文件数
|
|
440
|
+
2. **平台特有接口排除清单**:被识别为平台特有而从未覆盖列表中排除的接口及判定依据
|
|
441
|
+
3. **脚本假阴性修正清单**:经 5.3 交叉验证由未覆盖修正为已覆盖的接口及 grep 证据(无修正时标注「无」)
|
|
442
|
+
4. **综合评分**:`**综合评分:{score}/100**` + 维度评分表
|
|
443
|
+
5. **脚本执行记录**:三步脚本的执行参数和产出文件
|
|
444
|
+
6. **检视维度明细**:RTC-01~07 扣分明细
|
|
445
|
+
7. **覆盖度明细**:每个接口的覆盖状态(来源:test/demo/两者/平台特有排除)
|
|
446
|
+
8. **未覆盖接口清单**:有效未覆盖接口(已排除平台特有),按严重度排序
|
|
447
|
+
9. **改进建议**:P0/P1/P2 优先级
|
|
448
|
+
|
|
449
|
+
### 6.2 评分格式要求
|
|
450
|
+
|
|
451
|
+
> ⚠️ 报告必须包含 `**综合评分:XX/100**` 格式(粗体标记、中文冒号),以便后端 `_parseRNLibraryScore` 正确解析。每个维度必须包含 `**维度评分:XX/100**` 格式。
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
455
|
+
## 特殊情况处理
|
|
456
|
+
|
|
457
|
+
| 情况 | 处理方式 | 评分 |
|
|
458
|
+
|------|----------|------|
|
|
459
|
+
| 接口提取脚本失败 | 报告标注"接口提取失败" | 0 分(归零 4) |
|
|
460
|
+
| 测试目录不存在 | 脚本输出空报告,标注"无测试目录" | 0 分(归零 3) |
|
|
461
|
+
| demo 目录不存在 | 跳过 demo 覆盖率,仅靠 test 评估 | 按维度扣分 |
|
|
462
|
+
| test 和 demo 均为 0% | 标注"接口覆盖极低" | 0 分(归零 2) |
|
|
463
|
+
| 有效覆盖率 < 100%(排除平台特有并交叉验证后) | 标注"有效接口覆盖率未达 100%" | 0 分(归零 6) |
|
|
464
|
+
| 未覆盖列表全部为平台特有接口 | 标注"未覆盖接口均为平台特有,已排除",有效覆盖率 100% | 正常评分(不触发归零 6) |
|
|
465
|
+
| rnRntUrl 格式不正确 | 停止检查,标注错误 | 0 分 |
|
|
466
|
+
| TypeScript 模块不可用 | 在 MCP 目录(`{SKILL_DIR}/../../../MCP`)执行 `npm install` 后重新运行;若仍失败则降级正则模式,报告中标注(正则模式存在假阳性,评分可能偏高) |
|
|
467
|
+
| 仅原平台测试无鸿蒙测试 | 标注"仅有原平台测试" | 0-30 分 |
|
|
468
|
+
|
|
469
|
+
---
|
|
470
|
+
|
|
471
|
+
## 输出产物
|
|
472
|
+
|
|
473
|
+
| 产物 | 文件名 | 来源 | 说明 |
|
|
474
|
+
|------|--------|------|------|
|
|
475
|
+
| 接口规格 | `interface-spec.json` | Phase 2 脚本 | JSON 中间件 |
|
|
476
|
+
| 测试覆盖率报告 | `test-coverage-report.md` | Phase 3 脚本 | 脚本自动生成 |
|
|
477
|
+
| Demo 覆盖率报告 | `demo-coverage-report.md` | Phase 4 脚本 | 脚本自动生成 |
|
|
478
|
+
| 用例覆盖度检视报告 | `用例覆盖度检视报告.md` | Phase 6 AI | 最终统一报告 |
|
|
479
|
+
|
|
480
|
+
所有产物写入 `{outputDir}` 目录。
|
|
481
|
+
|
|
482
|
+
> ⚠️ **输出文件自检**:写入结果文件前,先确认 `用例覆盖度检视报告.md` 已存在且内容完整(**独立文件,禁止只写入 result 执行结果文件**);同时核对脚本产出清单(`interface-spec.json` / `test-coverage-report.md` / `demo-coverage-report.md`,demo 报告仅在执行 Demo 覆盖率分析后存在)。若报告内容仅在草稿中,必须先将其保存为上述独立文件。
|
|
483
|
+
|
|
484
|
+
### 结构化指标输出(必须执行)
|
|
485
|
+
|
|
486
|
+
执行环境会在任务 prompt 中下发一个**结构化指标文件输出路径**(`stepId{X}_loop{L}_meta_{N}.json`)。
|
|
487
|
+
检视完成后,**必须**将最终评分以下述 JSON 对象写入该路径:
|
|
488
|
+
|
|
489
|
+
```json
|
|
490
|
+
{
|
|
491
|
+
"testCoverageScore": 85,
|
|
492
|
+
"scoreReason": "有效接口覆盖率62%扣18,未覆盖接口38个扣17等(一句话判定依据,≤50字;触发一票否决时必须注明)"
|
|
493
|
+
}
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
| 字段 | 类型 | 说明 |
|
|
497
|
+
|------|------|------|
|
|
498
|
+
| `testCoverageScore` | number | 用例覆盖度评分(0-100 整数,与报告中 `**综合评分:XX/100**` 的数值一致) |
|
|
499
|
+
| `scoreReason` | string | 评分判定依据摘要(可选,前端悬浮提示展示;0 分时强烈建议写明触发规则,如"有效接口覆盖率<10% 触发归零") |
|
|
500
|
+
|
|
501
|
+
**说明**:该文件由执行框架自动收割入库(前端/历史列表直接读取评分,无需解析报告文本)。若 prompt 未下发该路径则跳过本节。
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
## 评分权重
|
|
506
|
+
|
|
507
|
+
本 SKILL 在 RN 仓库检视综合评分中权重为 **15%**。
|
|
508
|
+
|
|
509
|
+
---
|
|
510
|
+
|
|
511
|
+
## 与前置/后置 SKILL 的衔接
|
|
512
|
+
|
|
513
|
+
- **前置依赖**:`rn-library-documentation-quality-check`(第6阶段)
|
|
514
|
+
- **本 SKILL 是最终阶段**,输出的 `用例覆盖度检视报告.md` 作为综合评分输入
|
|
515
|
+
- 确保报告中的问题清单包含定位信息(接口名+文件路径),便于综合报告汇总
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
## 详细参考文档
|
|
520
|
+
|
|
521
|
+
| 文档 | 内容 |
|
|
522
|
+
|------|------|
|
|
523
|
+
| [CHECKLIST.md](references/CHECKLIST.md) | 完整检查清单 + 评分规则 + RTC-03/RTC-07 判定规则 |
|
|
524
|
+
| [SCRIPT_USAGE.md](references/SCRIPT_USAGE.md) | 三步脚本参数详解 + 输出结构 + 执行示例 |
|
|
525
|
+
| [DEMO_LOCATION.md](references/DEMO_LOCATION.md) | rnRntUrl 解析 + Sparse Checkout + demo 自动查找逻辑 |
|
|
526
|
+
| [REPORT_TEMPLATE.md](references/REPORT_TEMPLATE.md) | 最终报告格式模板 |
|