@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,339 +1,356 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: rn-library-memory-leak-check
|
|
3
|
-
description: 对 RN 三方库鸿蒙化代码进行内存泄露检视,聚焦 ArkTS/ETS 与 C++ NAPI 层,分析 TurboModule 生命周期、NativeComponent 资源管理、Bridge 事件监听、NAPI 引用管理、JSI 绑定泄露等内存安全问题,生成严苛评分报告(0-100分)。作为 RN 仓库检视流程第五阶段,依赖编码质量检视结果。Use when 需要对 RN 鸿蒙化库进行内存泄露风险检视或评估内存管理安全性。关键词:内存泄漏、NAPI、TurboModule、JSI、鸿蒙化、ArkTS。
|
|
4
|
-
license: Apache-2.0
|
|
5
|
-
compatibility: 需要访问 Git 仓库、分析 ohos 目录下的 ETS/C++ 源码
|
|
6
|
-
metadata:
|
|
7
|
-
version: "1.
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# RNLibraryMemoryLeakCheckSkill
|
|
11
|
-
|
|
12
|
-
对 RN 三方库的**鸿蒙化实现代码**进行内存泄露风险检视,识别 ArkTS/ETS 层与 C/C++ NAPI 绑定层代码中的潜在内存泄露问题,评估资源管理安全性。
|
|
13
|
-
|
|
14
|
-
> ⚠️ **核心定位**:本 SKILL **仅检视鸿蒙化代码**,不检视 RN JS 层或非鸿蒙化部分的代码。检视范围包括:
|
|
15
|
-
> - 鸿蒙平台特有的 ArkTS/ETS 代码(TurboModule 实现、NativeComponent 渲染、EventEmitter 等)
|
|
16
|
-
> - 鸿蒙 Native C++ 代码(NAPI 绑定、JSI HostFunction/HostObject、TurboModule C++ 层等)
|
|
17
|
-
> - 鸿蒙平台特有的 API 资源管理(如 GattClientDevice、NAPI 引用、@ohos 模块等)
|
|
18
|
-
>
|
|
19
|
-
> **重要**:目录名称不固定,需通过源码扫描识别鸿蒙化代码特征
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## 任务参数
|
|
24
|
-
|
|
25
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
26
|
-
|------|------|------|------|
|
|
27
|
-
| `repoUrl` | string | ✅ | Git 仓库地址,支持分支 `?branch=xxx` |
|
|
28
|
-
| `outputDir` | string | ✅ | 输出目录绝对路径,存放检视报告 |
|
|
29
|
-
| `interfaceDocPath` | string | ✅ | 接口规格说明文档路径 |
|
|
30
|
-
| `repoName` | string | ✅ | 仓库名称(用于报告标识) |
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## 输入依赖
|
|
35
|
-
|
|
36
|
-
本 SKILL 是 RN 仓库检视流程的**第五阶段**,依赖:
|
|
37
|
-
|
|
38
|
-
- **前置 SKILL**: `rn-library-code-quality-check`
|
|
39
|
-
- **输入文件**: `接口规格说明.md`、`编码质量检视报告.md`
|
|
40
|
-
- **仓库源码**: 已克隆到 `{outputDir}/source/`,重点分析 `ohos/` 目录
|
|
41
|
-
|
|
42
|
-
> 💡 **编码质量报告为可选参考**:若 `编码质量检视报告.md` 不存在(流程未编排编码质量检视),直接跳过该参考输入,独立完成内存泄露检视,不影响评分。
|
|
43
|
-
|
|
44
|
-
> 💡 **利用前置报告**:参考编码质量检视报告中标记的架构问题和代码规范问题,重点关注其中涉及的资源管理相关代码段。
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## 工作流程概览
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
Phase 0: 鸿蒙代码定位与范围识别
|
|
52
|
-
↓ (确认鸿蒙化实现 / 排除 RNJS 三方库)
|
|
53
|
-
Phase 1: TurboModule/NativeModule 生命周期检查
|
|
54
|
-
↓
|
|
55
|
-
Phase 2: 事件监听器管理检查
|
|
56
|
-
↓
|
|
57
|
-
Phase 3: ArkTS 内存管理检查
|
|
58
|
-
↓
|
|
59
|
-
Phase 4: C++ Native 内存检查
|
|
60
|
-
↓
|
|
61
|
-
Phase 5: 严苛评分计算与报告输出
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Phase 0:鸿蒙代码定位与范围识别
|
|
67
|
-
|
|
68
|
-
### 0.1 RN JS 三方库判定
|
|
69
|
-
|
|
70
|
-
扫描源码 ts、js 和 tsx 文件,识别是否**不包含** TurboModuleRegistry、NativeModules、codegenNativeComponent 等 RN 鸿蒙化特征。若不包含,判定为 **RNJS 三方库**,不进行后续检视,直接输出报告评分 0 分,标注"RNJS 三方库"。
|
|
71
|
-
|
|
72
|
-
### 0.2 鸿蒙代码特征识别
|
|
73
|
-
|
|
74
|
-
扫描源码文件,通过代码特征(而非仅依赖目录名称)识别鸿蒙化实现:
|
|
75
|
-
|
|
76
|
-
- **ArkTS/ETS 特征**:`@ohos` 模块导入、TurboModule 鸿蒙实现、`@Component` NativeComponent、NativeEventEmitter/DeviceEventEmitter、`.ets` 文件
|
|
77
|
-
- **C++ Native 特征**:`RNOH/CppComponentInstance.h`、`napi/native_api.h`、`ReactCommon/TurboModule.h`、NAPI 函数调用(`napi_create_reference`、`napi_wrap`)
|
|
78
|
-
|
|
79
|
-
> 详细特征模式、代码示例和目录结构参见 [鸿蒙代码特征识别模式](references/HARMONY_CODE_PATTERNS.md)
|
|
80
|
-
|
|
81
|
-
### 0.3 扫描执行
|
|
82
|
-
|
|
83
|
-
可使用辅助脚本快速扫描:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
python3 {skillDir}/scripts/scan_harmony_code.py '{"sourceDir": "{{outputDir}}/source"}'
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
> `workdir: "{{outputDir}}"`
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
|
105
|
-
|
|
106
|
-
|
|
|
107
|
-
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
###
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
|
150
|
-
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
|
176
|
-
|
|
|
177
|
-
|
|
|
178
|
-
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
|
190
|
-
|
|
191
|
-
|
|
|
192
|
-
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
|
206
|
-
|
|
|
207
|
-
|
|
|
208
|
-
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
|
219
|
-
|
|
220
|
-
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
|
230
|
-
|
|
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
|
-
|
|
1
|
+
---
|
|
2
|
+
name: rn-library-memory-leak-check
|
|
3
|
+
description: 对 RN 三方库鸿蒙化代码进行内存泄露检视,聚焦 ArkTS/ETS 与 C++ NAPI 层,分析 TurboModule 生命周期、NativeComponent 资源管理、Bridge 事件监听、NAPI 引用管理、JSI 绑定泄露等内存安全问题,生成严苛评分报告(0-100分)。作为 RN 仓库检视流程第五阶段,依赖编码质量检视结果。Use when 需要对 RN 鸿蒙化库进行内存泄露风险检视或评估内存管理安全性。关键词:内存泄漏、NAPI、TurboModule、JSI、鸿蒙化、ArkTS。
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
compatibility: 需要访问 Git 仓库、分析 ohos 目录下的 ETS/C++ 源码
|
|
6
|
+
metadata:
|
|
7
|
+
version: "1.1.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# RNLibraryMemoryLeakCheckSkill
|
|
11
|
+
|
|
12
|
+
对 RN 三方库的**鸿蒙化实现代码**进行内存泄露风险检视,识别 ArkTS/ETS 层与 C/C++ NAPI 绑定层代码中的潜在内存泄露问题,评估资源管理安全性。
|
|
13
|
+
|
|
14
|
+
> ⚠️ **核心定位**:本 SKILL **仅检视鸿蒙化代码**,不检视 RN JS 层或非鸿蒙化部分的代码。检视范围包括:
|
|
15
|
+
> - 鸿蒙平台特有的 ArkTS/ETS 代码(TurboModule 实现、NativeComponent 渲染、EventEmitter 等)
|
|
16
|
+
> - 鸿蒙 Native C++ 代码(NAPI 绑定、JSI HostFunction/HostObject、TurboModule C++ 层等)
|
|
17
|
+
> - 鸿蒙平台特有的 API 资源管理(如 GattClientDevice、NAPI 引用、@ohos 模块等)
|
|
18
|
+
>
|
|
19
|
+
> **重要**:目录名称不固定,需通过源码扫描识别鸿蒙化代码特征
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 任务参数
|
|
24
|
+
|
|
25
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
26
|
+
|------|------|------|------|
|
|
27
|
+
| `repoUrl` | string | ✅ | Git 仓库地址,支持分支 `?branch=xxx` |
|
|
28
|
+
| `outputDir` | string | ✅ | 输出目录绝对路径,存放检视报告 |
|
|
29
|
+
| `interfaceDocPath` | string | ✅ | 接口规格说明文档路径 |
|
|
30
|
+
| `repoName` | string | ✅ | 仓库名称(用于报告标识) |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 输入依赖
|
|
35
|
+
|
|
36
|
+
本 SKILL 是 RN 仓库检视流程的**第五阶段**,依赖:
|
|
37
|
+
|
|
38
|
+
- **前置 SKILL**: `rn-library-code-quality-check`
|
|
39
|
+
- **输入文件**: `接口规格说明.md`、`编码质量检视报告.md`
|
|
40
|
+
- **仓库源码**: 已克隆到 `{outputDir}/source/`,重点分析 `ohos/` 目录
|
|
41
|
+
|
|
42
|
+
> 💡 **编码质量报告为可选参考**:若 `编码质量检视报告.md` 不存在(流程未编排编码质量检视),直接跳过该参考输入,独立完成内存泄露检视,不影响评分。
|
|
43
|
+
|
|
44
|
+
> 💡 **利用前置报告**:参考编码质量检视报告中标记的架构问题和代码规范问题,重点关注其中涉及的资源管理相关代码段。
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 工作流程概览
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
Phase 0: 鸿蒙代码定位与范围识别
|
|
52
|
+
↓ (确认鸿蒙化实现 / 排除 RNJS 三方库)
|
|
53
|
+
Phase 1: TurboModule/NativeModule 生命周期检查
|
|
54
|
+
↓
|
|
55
|
+
Phase 2: 事件监听器管理检查
|
|
56
|
+
↓
|
|
57
|
+
Phase 3: ArkTS 内存管理检查
|
|
58
|
+
↓
|
|
59
|
+
Phase 4: C++ Native 内存检查
|
|
60
|
+
↓
|
|
61
|
+
Phase 5: 严苛评分计算与报告输出
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Phase 0:鸿蒙代码定位与范围识别
|
|
67
|
+
|
|
68
|
+
### 0.1 RN JS 三方库判定
|
|
69
|
+
|
|
70
|
+
扫描源码 ts、js 和 tsx 文件,识别是否**不包含** TurboModuleRegistry、NativeModules、codegenNativeComponent 等 RN 鸿蒙化特征。若不包含,判定为 **RNJS 三方库**,不进行后续检视,直接输出报告评分 0 分,标注"RNJS 三方库"。
|
|
71
|
+
|
|
72
|
+
### 0.2 鸿蒙代码特征识别
|
|
73
|
+
|
|
74
|
+
扫描源码文件,通过代码特征(而非仅依赖目录名称)识别鸿蒙化实现:
|
|
75
|
+
|
|
76
|
+
- **ArkTS/ETS 特征**:`@ohos` 模块导入、TurboModule 鸿蒙实现、`@Component` NativeComponent、NativeEventEmitter/DeviceEventEmitter、`.ets` 文件
|
|
77
|
+
- **C++ Native 特征**:`RNOH/CppComponentInstance.h`、`napi/native_api.h`、`ReactCommon/TurboModule.h`、NAPI 函数调用(`napi_create_reference`、`napi_wrap`)
|
|
78
|
+
|
|
79
|
+
> 详细特征模式、代码示例和目录结构参见 [鸿蒙代码特征识别模式](references/HARMONY_CODE_PATTERNS.md)
|
|
80
|
+
|
|
81
|
+
### 0.3 扫描执行
|
|
82
|
+
|
|
83
|
+
可使用辅助脚本快速扫描:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
python3 {skillDir}/scripts/scan_harmony_code.py '{"sourceDir": "{{outputDir}}/source"}'
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
> `workdir: "{{outputDir}}"`
|
|
90
|
+
|
|
91
|
+
> ⚠️ 脚本默认排除 `.upstream-cache`、`node_modules`、`oh_modules` 缓存/依赖目录,避免接口分析前置阶段拉取的上游 npm 包缓存被误报为"RN 鸿蒙化特征文件"(普通 JS 文件仅因含 `NativeModules` 引用即被匹配)。若手工执行 `find`/`rg` 枚举特征文件,须同样排除这些目录。
|
|
92
|
+
|
|
93
|
+
**判定规则**:
|
|
94
|
+
- 优先通过代码特征识别,而非仅依赖目录名称
|
|
95
|
+
- 扫描到鸿蒙代码特征 → 确认鸿蒙化实现,进入 Phase 1
|
|
96
|
+
- 未发现鸿蒙代码特征 → 报告评分 0 分,标注"未实现鸿蒙化"
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Phase 1:TurboModule/NativeModule 生命周期检查
|
|
101
|
+
|
|
102
|
+
### 1.1 TurboModule 生命周期绑定(致命项,20分)
|
|
103
|
+
|
|
104
|
+
| 检查项 | 问题描述 | 扣分规则 |
|
|
105
|
+
|--------|----------|----------|
|
|
106
|
+
| `__onDestroy__` 资源释放 | 是否释放**所有**资源 | 未释放扣 20 分 |
|
|
107
|
+
| Bridge 事件监听清理 | NativeEventEmitter/DeviceEventEmitter 监听是否全部移除 | 未移除扣 15 分 |
|
|
108
|
+
| Map 数据清理 | 模块级 Map(如 `mConnectedDevices`)是否清空 | 未清空扣 12 分 |
|
|
109
|
+
| 释放顺序 | 是否按正确顺序释放(先移除监听→停操作→清数据→释放资源) | 顺序错误扣 8 分 |
|
|
110
|
+
|
|
111
|
+
**关键检查**:`__onDestroy__` 必须按"移除监听 → 停止操作 → 释放系统资源 → 清空 Map → 置空回调引用"顺序执行。
|
|
112
|
+
|
|
113
|
+
> ⚠️ **无状态模块豁免**:`__onDestroy__` 未释放扣 20 分的前提是模块**持有需要释放的资源**。若模块为"零状态"(零事件监听、零系统资源句柄、零 Map/Set 容器、零回调引用、零实例字段),未重写 `__onDestroy__` 属正确最小化设计,**不扣分**,在报告中注明"无泄露面"。适用豁免前必须先完成零泄露面穷尽验证(见 [CHECKLIST.md 第 10 节](references/CHECKLIST.md#10-零泄露面穷尽验证模式集无状态库确认)),禁止仅凭"看起来没有状态"就直接豁免。
|
|
114
|
+
|
|
115
|
+
### 1.2 NativeComponent 生命周期绑定(致命项,15分)
|
|
116
|
+
|
|
117
|
+
| 检查项 | 问题描述 | 扣分规则 |
|
|
118
|
+
|--------|----------|----------|
|
|
119
|
+
| `aboutToDisappear` / `onDropViewInstance` | 视图销毁时是否释放所有关联资源 | **未释放扣 15 分(致命)** |
|
|
120
|
+
| View 级监听器清理 | 视图级事件监听是否在视图销毁时移除 | 未移除扣 12 分 |
|
|
121
|
+
| Native 侧事件发送器释放 | RCTEventEmitter 引用是否清除 | 未清除扣 10 分 |
|
|
122
|
+
| 子组件/子视图递归释放 | 自定义 View 的子 View 是否递归释放 | 未释放扣 10 分 |
|
|
123
|
+
|
|
124
|
+
**关键检查**:
|
|
125
|
+
- `aboutToDisappear` 必须释放视图持有的所有系统资源(DescriptorChangesListener、Sensor、Location、Timer 等)
|
|
126
|
+
- 组件属性缓存的实例是否释放(Controller、Operator 等)
|
|
127
|
+
- 多实例场景:同一 ViewManager 创建的多个 View 实例必须各自独立清理
|
|
128
|
+
|
|
129
|
+
> 详细代码示例(正例/反例)参见 [检查清单 - 1. TurboModule/NativeModule 生命周期管理](references/CHECKLIST.md#1-turbomodulenativemodule-生命周期管理)
|
|
130
|
+
|
|
131
|
+
### 1.3 手写/codegen 双轨 TurboModule 接线验证(观察项,0 分)
|
|
132
|
+
|
|
133
|
+
鸿蒙化库中经常同时存在**手写 C++ TurboModule 类**与 **codegen 生成的同名 TurboModule**(位于 `generated/RNOH/generated/turbo_modules/`),且两套实现方法数可能不一致。仅凭文件存在无法判断哪个真正生效,必须做接线验证:
|
|
134
|
+
|
|
135
|
+
1. 打开库的 Package 头文件(如 `BaseReactNativeXXXPackage.h`,通常由 codegen 生成)
|
|
136
|
+
2. 查看 `createTurboModule()` / 工厂方法中 `std::make_shared<XXX>` **实际实例化的类名**
|
|
137
|
+
3. 工厂只实例化 codegen 类 → 手写类为**未接线死代码**(运行期零分配零调用,无内存影响);工厂实例化手写类 → codegen 类仅是接口壳
|
|
138
|
+
|
|
139
|
+
**判定原则**:判断 C++ TurboModule 哪个生效,看 Package 工厂链路中实际创建的类名,而非文件是否存在。
|
|
140
|
+
|
|
141
|
+
**评分处理**:未接线的手写死代码、codegen 产物滞后(手写与 codegen 方法数不一致)等**内存零影响**的发现,记入泄露风险清单但标注"**观察(0 分)**",注明不扣分理由及归属阶段(编码质量/一致性检视),不计入内存扣分。
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Phase 2:事件监听器管理检查
|
|
146
|
+
|
|
147
|
+
### 2.1 RN Bridge 事件机制(致命项,20分)
|
|
148
|
+
|
|
149
|
+
| 检查项 | 问题描述 | 扣分规则 |
|
|
150
|
+
|--------|----------|----------|
|
|
151
|
+
| NativeEventEmitter addListener/removeAllListeners | 每个监听是否在适当时机移除 | **未移除扣 15 分** |
|
|
152
|
+
| DeviceEventEmitter 监听泄露 | DeviceEventEmitter.addListener 后是否在 destroy 移除 | 未移除扣 15 分 |
|
|
153
|
+
| RCTEventEmitter 强引用 | 原生侧 RCTEventEmitter 是否持有已销毁 View 引用 | 持有扣 12 分 |
|
|
154
|
+
| 事件发送器生命周期 | EventEmitter 实例是否随 TurboModule 销毁 | 未销毁扣 10 分 |
|
|
155
|
+
|
|
156
|
+
**典型泄露场景**:
|
|
157
|
+
- 每次调用都注册新监听器,destroy 时未移除
|
|
158
|
+
- Promise 回调中的监听器 resolve 后未移除
|
|
159
|
+
- RCTEventEmitter 向已销毁 View 发送事件
|
|
160
|
+
|
|
161
|
+
### 2.2 鸿蒙 API 事件订阅(致命项,20分)
|
|
162
|
+
|
|
163
|
+
| 检查项 | 问题描述 | 扣分规则 |
|
|
164
|
+
|--------|----------|----------|
|
|
165
|
+
| `on/off` 对称性 | 每个 `on()` 是否有对应 `off()` | **无对应 off 扣 20 分(致命)** |
|
|
166
|
+
| 回调参数匹配 | `off()` 是否传入正确的回调函数引用 | 参数错误扣 12 分 |
|
|
167
|
+
| 多次注册风险 | 同一事件是否可能被多次注册监听 | 存在风险扣 15 分 |
|
|
168
|
+
| TurboModule 级 vs View 级监听 | TurboModule 级监听不应在 View 销毁时取消 | 混淆扣 10 分 |
|
|
169
|
+
|
|
170
|
+
**特殊系统资源释放检查**:
|
|
171
|
+
|
|
172
|
+
| 资源类型 | 检查项 | 扣分 |
|
|
173
|
+
|----------|--------|------|
|
|
174
|
+
| GattClientDevice | 是否调用 `close()` | **未调用扣 20 分** |
|
|
175
|
+
| Sensor | 是否调用 `off()` 注销 | **未注销扣 20 分** |
|
|
176
|
+
| 数据库连接 | rdb 是否调用 `close()` | **未关闭扣 20 分** |
|
|
177
|
+
| BLE 扫描 | `ble.stopBLEScan()` 是否调用 | 未调用扣 15 分 |
|
|
178
|
+
| 地理位置 | `geoLocationManager.off()` 是否取消 | 未取消扣 15 分 |
|
|
179
|
+
| Timer | setInterval/setTimeout 是否清除 | 未清除扣 12 分 |
|
|
180
|
+
|
|
181
|
+
> 详细代码示例和常见泄露场景参见 [检查清单 - 2. RN Bridge 事件机制](references/CHECKLIST.md#2-rn-bridge-事件机制) 和 [检查清单 - 3. 鸿蒙 API 事件订阅管理](references/CHECKLIST.md#3-鸿蒙-api-事件订阅管理)
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Phase 3:ArkTS 内存管理检查
|
|
186
|
+
|
|
187
|
+
### 3.1 闭包循环引用(致命项,15分)
|
|
188
|
+
|
|
189
|
+
| 检查项 | 问题描述 | 扣分规则 |
|
|
190
|
+
|--------|----------|----------|
|
|
191
|
+
| this 捕获 | 箭头函数是否捕获 `this` 引用且未在 destroy 释放 | 捕获且未释放扣 15 分 |
|
|
192
|
+
| 闭包保留 | 闭包是否保留外部变量引用且无法释放 | 保留且无法释放扣 12 分 |
|
|
193
|
+
| RN 回调链泄露 | JS → Native → JS 回调链中的闭包引用是否正确断开 | 未断开扣 12 分 |
|
|
194
|
+
| 异步回调持有 stale context | setTimeout/Promise 回调中引用已销毁 TurboModule 上下文 | 引用扣 10 分 |
|
|
195
|
+
|
|
196
|
+
**检测要点**:
|
|
197
|
+
- 箭头函数捕获 `this` 形成循环引用链(`this.gatt → 回调 → this → this.gatt`)
|
|
198
|
+
- TurboModule 级回调持有 View 实例引用,View 销毁后回调仍持有引用
|
|
199
|
+
- 推荐在构造函数中预创建回调,destroy 时清除引用打破循环
|
|
200
|
+
|
|
201
|
+
### 3.2 Map/Set 数据清理(严苛项,10分)
|
|
202
|
+
|
|
203
|
+
| 检查项 | 问题描述 | 扣分规则 |
|
|
204
|
+
|--------|----------|----------|
|
|
205
|
+
| Map.clear() | TurboModule 的 Map 数据是否在 destroy 时调用 clear() | 未清理扣 10 分 |
|
|
206
|
+
| View 实例 Map | ViewManager 维护的 View 实例 Map 是否在 onDropViewInstance 删除 | 未删除扣 12 分 |
|
|
207
|
+
| 静态 Map 风险 | 静态 Map 是否无限累积 | **累积风险扣 15 分** |
|
|
208
|
+
| 缓存上限 | 是否设置缓存大小上限 | 无上限扣 8 分 |
|
|
209
|
+
|
|
210
|
+
> 详细代码示例参见 [检查清单 - 4. 闭包与上下文泄露](references/CHECKLIST.md#4-闭包与上下文泄露)
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Phase 4:C++ Native 内存检查
|
|
215
|
+
|
|
216
|
+
### 4.1 NAPI 引用管理(致命项,20分)
|
|
217
|
+
|
|
218
|
+
| 检查项 | 问题描述 | 扣分规则 |
|
|
219
|
+
|--------|----------|----------|
|
|
220
|
+
| `napi_ref` 释放 | 是否在 dispose/destroy 时调用 `napi_delete_reference` | **未释放扣 20 分(致命)** |
|
|
221
|
+
| Handle Scope 清理 | 是否正确关闭 `napi_handle_scope` | **未关闭扣 20 分(致命)** |
|
|
222
|
+
| finalize 回调 | `napi_wrap` 是否提供 finalize 回调释放 Native 对象 | **缺失扣 20 分(致命)** |
|
|
223
|
+
| 引用计数平衡 | `napi_create_reference` 和 `napi_delete_reference` 数量是否匹配 | 不平衡扣 18 分 |
|
|
224
|
+
| ArrayBuffer 外部资源 | `napi_create_external` 的 finalize 回调是否缺失 | 缺失扣 15 分 |
|
|
225
|
+
| 线程安全函数引用 | `napi_create_threadsafe_function` 后是否调用 `napi_release_threadsafe_function` | 未释放扣 15 分 |
|
|
226
|
+
|
|
227
|
+
### 4.2 TurboModule/JSI 绑定内存(致命项,15分)
|
|
228
|
+
|
|
229
|
+
| 检查项 | 问题描述 | 扣分规则 |
|
|
230
|
+
|--------|----------|----------|
|
|
231
|
+
| TurboModule C++ 实例释放 | C++ 实例在 JS 对象回收后是否释放 | **未释放扣 15 分(致命)** |
|
|
232
|
+
| JSI HostFunction 泄露 | HostFunction 绑定在 Runtime 销毁时是否释放 | **未释放扣 15 分** |
|
|
233
|
+
| JSI HostObject 属性回调 | HostObject 的 getter/setter 闭包持有外部引用未清理 | 未清理扣 12 分 |
|
|
234
|
+
| 跨语言回调链 | C++ 层回调引用 JS 函数的双向引用是否正确断开 | 未断开扣 12 分 |
|
|
235
|
+
| C++ 与 JS 生命周期不一致 | C++ 侧实例比 JS 侧对象存活更久,导致悬垂引用 | **不一致扣 15 分** |
|
|
236
|
+
| Codegen 生成代码资源释放 | Codegen 自动生成的代码中资源释放逻辑是否完整 | 不完整扣 10 分 |
|
|
237
|
+
|
|
238
|
+
### 4.3 Native 内存分配释放(致命项,15分)
|
|
239
|
+
|
|
240
|
+
| 检查项 | 问题描述 | 扣分规则 |
|
|
241
|
+
|--------|----------|----------|
|
|
242
|
+
| malloc/free 匹配 | 每个 `malloc` 是否有对应 `free` | **不匹配扣 15 分(致命)** |
|
|
243
|
+
| new/delete 匹配 | 每个 `new` 是否有对应 `delete` | **不匹配扣 15 分(致命)** |
|
|
244
|
+
| new[]/delete[] 匹配 | `new[]` 是否使用 `delete[]` 释放 | **误用扣 15 分** |
|
|
245
|
+
| 智能指针循环引用 | `shared_ptr` 循环引用导致引用计数永不为零 | **循环引用扣 15 分** |
|
|
246
|
+
| 异常路径释放 | 异常发生时是否释放已分配内存 | 未释放扣 12 分 |
|
|
247
|
+
| 全局/静态缓冲区增长 | 全局 vector/map 无上限增长 | 无清理扣 12 分 |
|
|
248
|
+
|
|
249
|
+
### 4.4 跨语言生命周期不一致(致命项,15分)
|
|
250
|
+
|
|
251
|
+
| 检查项 | 问题描述 | 扣分规则 |
|
|
252
|
+
|--------|----------|----------|
|
|
253
|
+
| ArkTS/C++ 不对称释放 | ArkTS 层调用 off() 但 C++ 层未释放对应资源 | **不对称扣 15 分** |
|
|
254
|
+
| Native 对象生命周期不一致 | C++ Native 对象与 ArkTS 包装对象生命周期不一致 | **不一致扣 15 分** |
|
|
255
|
+
| TurboModule 与 View 生命周期混淆 | TurboModule 级资源不应在 View 销毁时释放 | 混淆扣 12 分 |
|
|
256
|
+
| Bridge 消息队列累积 | 原生模块与 JS 之间的消息队列在模块销毁时未清空 | 未清空扣 10 分 |
|
|
257
|
+
|
|
258
|
+
> 详细代码示例(NAPI 管理、JSI 绑定、智能指针循环引用、跨语言释放不对称)参见 [检查清单 - 5~8 节](references/CHECKLIST.md#5-napi-引用管理)
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Phase 5:严苛评分计算与报告输出
|
|
263
|
+
|
|
264
|
+
### 5.1 评分规则
|
|
265
|
+
|
|
266
|
+
采用**严苛扣分制**,从 100 分开始扣减:
|
|
267
|
+
|
|
268
|
+
| 扣分类型 | 单项扣分 | 典型问题 |
|
|
269
|
+
|----------|----------|----------|
|
|
270
|
+
| 致命问题 | -20 分 | TurboModule destroy 未释放、NAPI 引用未释放、Handle Scope 未关闭、malloc/free 不匹配、鸿蒙 API 事件无对应取消、NativeEventEmitter 监听未移除、GattClientDevice/Sensor/数据库未释放 |
|
|
271
|
+
| 严重问题 | -12 分 | Bridge 事件监听未移除、闭包循环引用、Map 数据未清理、View 实例 Map 未删除、跨语言回调链泄露 |
|
|
272
|
+
| 中等问题 | -8 分 | 回调参数匹配错误、释放顺序不当、初始化不完整 |
|
|
273
|
+
| 轻微问题 | -5 分 | 订阅状态未追踪、缓存无上限 |
|
|
274
|
+
|
|
275
|
+
### 5.2 特殊规则(直接 0 分)
|
|
276
|
+
|
|
277
|
+
- 未发现鸿蒙代码特征 → 0 分
|
|
278
|
+
- 致命问题 ≥ 3 个 → 0 分
|
|
279
|
+
- 致命问题 ≥ 2 个 + 严重问题 ≥ 3 个 → 0 分
|
|
280
|
+
- 关键路径(TurboModule 注册、NAPI 绑定入口)存在致命问题 → 0 分
|
|
281
|
+
- 累计扣分超过 60 分 → 0 分
|
|
282
|
+
|
|
283
|
+
> **严苛标准**:85 分以下不建议发布,55 分以下视为严重不可用。
|
|
284
|
+
> 完整评分规则汇总参见 [检查清单 - 9. 评分规则汇总](references/CHECKLIST.md#9-评分规则汇总)
|
|
285
|
+
|
|
286
|
+
### 5.3 评分等级
|
|
287
|
+
|
|
288
|
+
| 分数区间 | 等级 | 说明 |
|
|
289
|
+
|----------|------|------|
|
|
290
|
+
| 95-100 分 | 优秀 | 资源管理完善,无任何泄露风险 |
|
|
291
|
+
| 85-94 分 | 良好 | 仅存在少量轻微风险,无严重/致命问题 |
|
|
292
|
+
| 70-84 分 | 一般 | 存在严重级别泄露,需针对性修复 |
|
|
293
|
+
| 55-69 分 | 较差 | 存在致命级别泄露风险,内存安全受威胁 |
|
|
294
|
+
| <55 分 | 严重不足 | 多个致命泄露问题,内存风险极高,不可发布 |
|
|
295
|
+
|
|
296
|
+
### 5.4 报告生成
|
|
297
|
+
|
|
298
|
+
在 `{outputDir}` 下生成 `内存泄露检视报告.md`,报告必须包含 `**综合评分:XX/100**` 格式且位于"综合评分"章节,确保可被 `_parseRNLibraryScore` 函数正确解析。
|
|
299
|
+
|
|
300
|
+
> 报告模板和评分等级对照表参见 [报告模板](assets/REPORT_TEMPLATE.md)
|
|
301
|
+
|
|
302
|
+
**报告关键要求**:
|
|
303
|
+
- 泄露风险清单必须标注 **语言层**(ArkTS/C++/RN/跨语言)
|
|
304
|
+
- 每条泄露记录包含足够的定位信息(文件路径+行号)
|
|
305
|
+
- 扣分明细表按致命/严重/中等/轻微分类汇总
|
|
306
|
+
- 泄露风险清单支持"**观察(0 分)**"严重度档位:检视中发现的对内存**零影响**的问题(如未接线的手写死代码、codegen 产物滞后、死代码单例设计隐患),记入清单但标注"观察(0 分)",须注明不扣分理由(无内存影响)及建议归属阶段(编码质量/一致性检视),防止信息丢失,同时不稀释内存评分语义
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## 输出产物
|
|
311
|
+
|
|
312
|
+
| 产物 | 文件名 | 说明 |
|
|
313
|
+
|------|--------|------|
|
|
314
|
+
| 内存泄露检视报告 | `内存泄露检视报告.md` | 综合评分 + 扣分明细 + 9维度评分 + 泄露清单 + 修复建议 |
|
|
315
|
+
|
|
316
|
+
所有产物写入 `{outputDir}` 目录。
|
|
317
|
+
|
|
318
|
+
> ⚠️ **输出文件自检**:写入结果文件前,先确认 `内存泄露检视报告.md` 已存在且内容完整(**独立文件,禁止只写入 result 执行结果文件**)。若报告内容仅在草稿中,必须先将其保存为上述独立文件。
|
|
319
|
+
|
|
320
|
+
### 结构化指标输出(必须执行)
|
|
321
|
+
|
|
322
|
+
执行环境会在任务 prompt 中下发一个**结构化指标文件输出路径**(`stepId{X}_loop{L}_meta_{N}.json`)。
|
|
323
|
+
检视完成后,**必须**将最终评分以下述 JSON 对象写入该路径:
|
|
324
|
+
|
|
325
|
+
```json
|
|
326
|
+
{
|
|
327
|
+
"memoryLeakScore": 85,
|
|
328
|
+
"scoreReason": "致命问题1处-20,资源未释放2处-16等(一句话判定依据,≤50字;触发一票否决时必须注明)"
|
|
329
|
+
}
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
| 字段 | 类型 | 说明 |
|
|
333
|
+
|------|------|------|
|
|
334
|
+
| `memoryLeakScore` | number | 内存泄露评分(0-100 整数,与报告中 `**综合评分:XX/100**` 的数值一致) |
|
|
335
|
+
| `scoreReason` | string | 评分判定依据摘要(可选,前端悬浮提示展示;0 分时强烈建议写明触发规则,如"关键路径致命问题触发归零") |
|
|
336
|
+
|
|
337
|
+
**说明**:该文件由执行框架自动收割入库(前端/历史列表直接读取评分,无需解析报告文本)。若 prompt 未下发该路径则跳过本节。
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## 评分权重
|
|
342
|
+
|
|
343
|
+
本 SKILL 在 RN 仓库检视综合评分中权重为 **20%**。
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## 与前置/后置 SKILL 的衔接
|
|
348
|
+
|
|
349
|
+
- **前置依赖**:`rn-library-code-quality-check`(第4阶段)输出的 `编码质量检视报告.md`
|
|
350
|
+
- **后置输入**:本 SKILL 输出的 `内存泄露检视报告.md` 将作为后续阶段的参考输入
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## 详细检查清单
|
|
355
|
+
|
|
356
|
+
> 完整的检查项、正例/反例代码示例和扣分细则见 [CHECKLIST.md](references/CHECKLIST.md)
|