From 92162d376318e7506247de3fa9c7208185dd8c01 Mon Sep 17 00:00:00 2001 From: xieziang Date: Thu, 7 Aug 2025 09:38:46 +0800 Subject: [PATCH] remove dumpSrc and assertion Signed-off-by: xieziang Change-Id: I43b97bc5523a292b3fe48350cbda868b93160279 --- arkui-plugins/common/debug.ts | 33 +++++++++++++++ arkui-plugins/common/program-visitor.ts | 12 +++--- arkui-plugins/memo-plugins/index.ts | 21 ++-------- arkui-plugins/ui-plugins/index.ts | 40 +++---------------- koala-wrapper/src/arkts-api/peers/Program.ts | 22 +--------- koala-wrapper/src/arkts-api/static/global.ts | 2 + .../src/arkts-api/utilities/private.ts | 8 ++-- 7 files changed, 54 insertions(+), 84 deletions(-) diff --git a/arkui-plugins/common/debug.ts b/arkui-plugins/common/debug.ts index 467572560..35085829b 100644 --- a/arkui-plugins/common/debug.ts +++ b/arkui-plugins/common/debug.ts @@ -34,6 +34,39 @@ function mkDir(filePath: string): void { fs.mkdirSync(filePath); } +export function debugLogAstNode(message: string, node: arkts.AstNode): void { + if (!isDebugLog) { + return; + } + console.log(message); + console.log(node.dumpSrc()); +} + +export function debugDumpAstNode( + node: arkts.AstNode, + fileName: string, + cachePath: string | undefined, + programFileName: string): void { + if (!isDebugDump) { + return; + } + const currentDirectory = process.cwd(); + const modifiedFileName = programFileName.replaceAll('.', '_'); + const outputDir: string = cachePath + ? path.resolve(currentDirectory, cachePath, modifiedFileName) + : path.resolve(currentDirectory, 'dist', 'cache', modifiedFileName); + const filePath: string = path.resolve(outputDir, fileName); + if (!fs.existsSync(outputDir)) { + mkDir(outputDir); + } + try { + fs.writeFileSync(filePath, node.dumpSrc(), 'utf8'); + } catch (error) { + console.error('文件操作失败:', error); + } +} + +/** @deprecated */ export function debugDump( content: string, fileName: string, diff --git a/arkui-plugins/common/program-visitor.ts b/arkui-plugins/common/program-visitor.ts index 1b7d0eac8..20850fd5e 100644 --- a/arkui-plugins/common/program-visitor.ts +++ b/arkui-plugins/common/program-visitor.ts @@ -16,7 +16,7 @@ import * as arkts from '@koalaui/libarkts'; import { AbstractVisitor, VisitorOptions } from './abstract-visitor'; import { matchPrefix } from './arkts-utils'; -import { debugDump, debugLog, getDumpFileName } from './debug'; +import { getDumpFileName, debugDumpAstNode, debugLog } from './debug'; import { InteroperAbilityNames } from '../ui-plugins/interop/predefines'; import { PluginContext } from './plugin-context'; import { LegacyTransformer } from '../ui-plugins/interop/legacy-transformer'; @@ -126,10 +126,9 @@ export class ProgramVisitor extends AbstractVisitor { prefixName: string, extensionName: string ): void { - debugDump( - script.dumpSrc(), + debugDumpAstNode( + script, getDumpFileName(this.state, prefixName, undefined, name), - true, cachePath, extensionName ); @@ -274,10 +273,9 @@ export class ProgramVisitor extends AbstractVisitor { transformer.reset(); arkts.setAllParents(script); if (!transformer.isExternal) { - debugDump( - script.dumpSrc(), + debugDumpAstNode( + script, getDumpFileName(this.state, this.pluginName, count, transformer.constructor.name), - true, this.pluginContext?.getProjectConfig()?.cachePath, program!.fileNameWithExtension ); diff --git a/arkui-plugins/memo-plugins/index.ts b/arkui-plugins/memo-plugins/index.ts index 85bc31d24..8ae69bf05 100644 --- a/arkui-plugins/memo-plugins/index.ts +++ b/arkui-plugins/memo-plugins/index.ts @@ -21,7 +21,7 @@ import { ReturnTransformer } from './return-transformer'; import { ParameterTransformer } from './parameter-transformer'; import { ProgramVisitor } from '../common/program-visitor'; import { EXTERNAL_SOURCE_PREFIX_NAMES, EXTERNAL_SOURCE_PREFIX_NAMES_FOR_FRAMEWORK } from '../common/predefines'; -import { debugDump, debugLog, getDumpFileName } from '../common/debug'; +import { debugLog } from '../common/debug'; import { SignatureTransformer } from './signature-transformer'; import { InternalsTransformer } from './internal-transformer'; @@ -43,29 +43,14 @@ function checkedTransform(this: PluginContext): arkts.EtsScript | undefined { if (!!contextPtr) { let program = arkts.getOrUpdateGlobalContext(contextPtr).program; let script = program.astNode; - debugLog('[BEFORE MEMO SCRIPT] script: ', script.dumpSrc()); - const cachePath: string | undefined = this.getProjectConfig()?.cachePath; const isFrameworkMode = !!this.getProjectConfig()?.frameworkMode; const canSkipPhases = !isFrameworkMode && program.canSkipPhases(); - debugDump( - script.dumpSrc(), - getDumpFileName(0, 'SRC', 5, 'MEMO_AfterCheck_Begin'), - true, - cachePath, - program.fileNameWithExtension - ); + arkts.Performance.getInstance().createEvent('memo-checked'); program = checkedProgramVisit(program, this, canSkipPhases, isFrameworkMode); script = program.astNode; arkts.Performance.getInstance().stopEvent('memo-checked', true); - debugLog('[AFTER MEMO SCRIPT] script: ', script.dumpSrc()); - debugDump( - script.dumpSrc(), - getDumpFileName(0, 'SRC', 6, 'MEMO_AfterCheck_End'), - true, - cachePath, - program.fileNameWithExtension - ); + arkts.Performance.getInstance().memoryTrackerGetDelta('UIPlugin:Memo-AfterCheck'); arkts.Performance.getInstance().memoryTrackerReset(); diff --git a/arkui-plugins/ui-plugins/index.ts b/arkui-plugins/ui-plugins/index.ts index 1785e4854..c89dd6eff 100644 --- a/arkui-plugins/ui-plugins/index.ts +++ b/arkui-plugins/ui-plugins/index.ts @@ -19,7 +19,7 @@ import { CheckedTransformer } from './checked-transformer'; import { Plugins, PluginContext, ProjectConfig } from '../common/plugin-context'; import { ProgramVisitor } from '../common/program-visitor'; import { EXTERNAL_SOURCE_PREFIX_NAMES } from '../common/predefines'; -import { debugDump, debugLog, getDumpFileName } from '../common/debug'; +import { debugLog } from '../common/debug'; export function uiTransform(): Plugins { return { @@ -42,28 +42,13 @@ function parsedTransform(this: PluginContext): arkts.EtsScript | undefined { if (!!contextPtr) { let program = arkts.getOrUpdateGlobalContext(contextPtr).program; script = program.astNode; - const cachePath: string | undefined = this.getProjectConfig()?.cachePath; const canSkipPhases = program.canSkipPhases(); - debugLog('[BEFORE PARSED SCRIPT] script: ', script.dumpSrc()); - debugDump( - script.dumpSrc(), - getDumpFileName(0, 'SRC', 1, 'UI_AfterParse_Begin'), - true, - cachePath, - program.fileNameWithExtension - ); + arkts.Performance.getInstance().createEvent('ui-parsed'); program = parsedProgramVisit(program, this, canSkipPhases); script = program.astNode; arkts.Performance.getInstance().stopEvent('ui-parsed', true); - debugLog('[AFTER PARSED SCRIPT] script: ', script.dumpSrc()); - debugDump( - script.dumpSrc(), - getDumpFileName(0, 'SRC', 2, 'UI_AfterParse_End'), - true, - cachePath, - program.fileNameWithExtension - ); + this.setArkTSAst(script); arkts.Performance.getInstance().memoryTrackerGetDelta('UIPlugin:AfterParse'); arkts.Performance.getInstance().memoryTrackerReset(); @@ -110,28 +95,13 @@ function checkedTransform(this: PluginContext): arkts.EtsScript | undefined { if (!!contextPtr) { let program = arkts.getOrUpdateGlobalContext(contextPtr).program; script = program.astNode; - const cachePath: string | undefined = this.getProjectConfig()?.cachePath; const canSkipPhases = program.canSkipPhases(); - debugLog('[BEFORE STRUCT SCRIPT] script: ', script.dumpSrc()); - debugDump( - script.dumpSrc(), - getDumpFileName(0, 'SRC', 3, 'UI_AfterCheck_Begin'), - true, - cachePath, - program.fileNameWithExtension - ); + arkts.Performance.getInstance().createEvent('ui-checked'); program = checkedProgramVisit(program, this, canSkipPhases); script = program.astNode; arkts.Performance.getInstance().stopEvent('ui-checked', true); - debugLog('[AFTER STRUCT SCRIPT] script: ', script.dumpSrc()); - debugDump( - script.dumpSrc(), - getDumpFileName(0, 'SRC', 4, 'UI_AfterCheck_End'), - true, - cachePath, - program.fileNameWithExtension - ); + this.setArkTSAst(script); arkts.Performance.getInstance().memoryTrackerGetDelta('UIPlugin:UI-AfterCheck'); arkts.Performance.getInstance().stopMemRecord('Node:UIPlugin:UI-AfterCheck'); diff --git a/koala-wrapper/src/arkts-api/peers/Program.ts b/koala-wrapper/src/arkts-api/peers/Program.ts index 6cdcc883b..9d11c7662 100644 --- a/koala-wrapper/src/arkts-api/peers/Program.ts +++ b/koala-wrapper/src/arkts-api/peers/Program.ts @@ -19,18 +19,9 @@ import { acceptNativeObjectArrayResult, unpackString } from "../utilities/privat import { KNativePointer } from "@koalaui/interop" import { EtsScript } from "../types" -enum SkipPhaseResult { - NOT_COMPUTED, - CAN_SKIP, - CANNOT_SKIP, -} - export class Program extends ArktsObject { - private canSkipPhaseResult: SkipPhaseResult; - constructor(peer: KNativePointer) { super(peer); - this.canSkipPhaseResult = SkipPhaseResult.NOT_COMPUTED; } get astNode(): EtsScript { @@ -83,18 +74,7 @@ export class Program extends ArktsObject { } canSkipPhases(): boolean { - if (this.canSkipPhaseResult === SkipPhaseResult.CAN_SKIP) { - return true; - } else if (this.canSkipPhaseResult === SkipPhaseResult.CANNOT_SKIP) { - return false; - } - if (global.es2panda._ProgramCanSkipPhases(global.context, this.peer)) { - this.canSkipPhaseResult = SkipPhaseResult.CAN_SKIP; - return true; - } else { - this.canSkipPhaseResult = SkipPhaseResult.CANNOT_SKIP; - return false; - } + return global.es2panda._ProgramCanSkipPhases(global.context, this.peer); } } diff --git a/koala-wrapper/src/arkts-api/static/global.ts b/koala-wrapper/src/arkts-api/static/global.ts index 8daf1adb8..f35fea30f 100644 --- a/koala-wrapper/src/arkts-api/static/global.ts +++ b/koala-wrapper/src/arkts-api/static/global.ts @@ -80,4 +80,6 @@ export class global { global._config = undefined; global.configObj = undefined; } + + public static validatePeerTypes = false; } diff --git a/koala-wrapper/src/arkts-api/utilities/private.ts b/koala-wrapper/src/arkts-api/utilities/private.ts index c343fb8e2..bab346fc8 100644 --- a/koala-wrapper/src/arkts-api/utilities/private.ts +++ b/koala-wrapper/src/arkts-api/utilities/private.ts @@ -41,9 +41,11 @@ export function assertValidPeer(peer: KPtr, expectedKind: Es2pandaAstNodeType): if (peer === nullptr) { throwError(`invalid peer`); } - const peerType = global.generatedEs2panda._AstNodeTypeConst(global.context, peer); - if (peerType !== expectedKind) { - throwError(`expected: ${Es2pandaAstNodeType[expectedKind]}, got: ${Es2pandaAstNodeType[peerType]}`); + if (global.validatePeerTypes) { + const peerType = global.generatedEs2panda._AstNodeTypeConst(global.context, peer); + if (peerType !== expectedKind) { + throwError(`expected: ${Es2pandaAstNodeType[expectedKind]}, got: ${Es2pandaAstNodeType[peerType]}`); + } } } -- Gitee