Fix remaining problem for printer optimization

Issue: https://gitee.com/openharmony/developtools_ace_ets2bundle/issues/IB1TNU

Test: ut & arkut
Signed-off-by: dengxinyu <dengxinyu4@huawei.com>
Change-Id: Ifd1082ca5ff04e5238a843aa501ae0601c6bdecd
This commit is contained in:
dengxinyu 2024-11-06 10:57:07 +08:00
parent c00853c3f5
commit 11bc224aa2
4 changed files with 36 additions and 31 deletions

View File

@ -24,7 +24,11 @@ import {
nameCacheMap, nameCacheMap,
unobfuscationNamesObj, unobfuscationNamesObj,
performancePrinter, performancePrinter,
EventList EventList,
endFilesEvent,
endSingleFileEvent,
startFilesEvent,
startSingleFileEvent,
} from 'arkguard'; } from 'arkguard';
import { import {
OH_MODULES, OH_MODULES,
@ -514,11 +518,11 @@ export interface ModuleInfo {
export async function writeObfuscatedSourceCode(moduleInfo: ModuleInfo, logger: Object, export async function writeObfuscatedSourceCode(moduleInfo: ModuleInfo, logger: Object,
projectConfig: Object, rollupNewSourceMaps: Object = {}): Promise<void> { projectConfig: Object, rollupNewSourceMaps: Object = {}): Promise<void> {
if (compileToolIsRollUp() && projectConfig.arkObfuscator) { if (compileToolIsRollUp() && projectConfig.arkObfuscator) {
performancePrinter?.filesPrinter?.startEvent(moduleInfo.buildFilePath); startFilesEvent(moduleInfo.buildFilePath);
MemoryUtils.tryGC(); MemoryUtils.tryGC();
await writeArkguardObfuscatedSourceCode(moduleInfo, logger, projectConfig, rollupNewSourceMaps); await writeArkguardObfuscatedSourceCode(moduleInfo, logger, projectConfig, rollupNewSourceMaps);
MemoryUtils.tryGC(); MemoryUtils.tryGC();
performancePrinter?.filesPrinter?.endEvent(moduleInfo.buildFilePath, undefined, true); endFilesEvent(moduleInfo.buildFilePath, undefined, true);
return; return;
} }
mkdirsSync(path.dirname(moduleInfo.buildFilePath)); mkdirsSync(path.dirname(moduleInfo.buildFilePath));
@ -576,10 +580,10 @@ export async function writeArkguardObfuscatedSourceCode(moduleInfo: ModuleInfo,
} = { packageDir, projectRootPath, localPackageSet, useNormalized, useTsHar }; } = { packageDir, projectRootPath, localPackageSet, useNormalized, useTsHar };
let filePathObj = { buildFilePath: moduleInfo.buildFilePath, relativeFilePath: moduleInfo.relativeSourceFilePath }; let filePathObj = { buildFilePath: moduleInfo.buildFilePath, relativeFilePath: moduleInfo.relativeSourceFilePath };
try { try {
performancePrinter?.singleFilePrinter?.startEvent(EventList.OBFUSCATE, performancePrinter.timeSumPrinter, filePathObj.buildFilePath); startSingleFileEvent(EventList.OBFUSCATE, performancePrinter.timeSumPrinter, filePathObj.buildFilePath);
mixedInfo = await arkObfuscator.obfuscate(moduleInfo.content, filePathObj, previousStageSourceMap, mixedInfo = await arkObfuscator.obfuscate(moduleInfo.content, filePathObj, previousStageSourceMap,
historyNameCache, moduleInfo.originSourceFilePath, projectInfo); historyNameCache, moduleInfo.originSourceFilePath, projectInfo);
performancePrinter?.singleFilePrinter?.endEvent(EventList.OBFUSCATE, performancePrinter.timeSumPrinter); endSingleFileEvent(EventList.OBFUSCATE, performancePrinter.timeSumPrinter);
} catch (err) { } catch (err) {
logger.error(red, `ArkTS:INTERNAL ERROR: Failed to obfuscate file '${moduleInfo.relativeSourceFilePath}' with arkguard. ${err}`); logger.error(red, `ArkTS:INTERNAL ERROR: Failed to obfuscate file '${moduleInfo.relativeSourceFilePath}' with arkguard. ${err}`);
} }

View File

@ -25,7 +25,9 @@ import {
deleteLineInfoForNameString, deleteLineInfoForNameString,
mangleFilePath, mangleFilePath,
unobfuscationNamesObj, unobfuscationNamesObj,
EventList EventList,
endSingleFileEvent,
startSingleFileEvent
} from 'arkguard'; } from 'arkguard';
import type { import type {
ArkObfuscator, ArkObfuscator,
@ -149,17 +151,6 @@ function getFileNamesForScanningWhitelist(mergedObConfig: MergedConfig, allKeepF
return keepFilesAndDependencies; return keepFilesAndDependencies;
} }
/**
* Disable performance printer when the build mode is debug
*/
export function disablePerformancePrinter(): void {
if (performancePrinter !== undefined) {
performancePrinter.filesPrinter = undefined;
performancePrinter.singleFilePrinter = undefined;
performancePrinter.timeSumPrinter = undefined;
}
}
/** /**
* Get namecache by path * Get namecache by path
* *
@ -230,8 +221,8 @@ export function setUnobfuscationNames(
* Write out obfuscated files * Write out obfuscated files
*/ */
export function writeObfuscatedFile(newFilePath: string, content: string): void { export function writeObfuscatedFile(newFilePath: string, content: string): void {
performancePrinter?.singleFilePrinter?.startEvent(EventList.WRITE_FILE, performancePrinter.timeSumPrinter); startSingleFileEvent(EventList.WRITE_FILE, performancePrinter.timeSumPrinter);
mkdirsSync(path.dirname(newFilePath)); mkdirsSync(path.dirname(newFilePath));
fs.writeFileSync(newFilePath, content); fs.writeFileSync(newFilePath, content);
performancePrinter?.singleFilePrinter?.endEvent(EventList.WRITE_FILE, performancePrinter.timeSumPrinter, false, true); endSingleFileEvent(EventList.WRITE_FILE, performancePrinter.timeSumPrinter, false, true);
} }

View File

@ -20,7 +20,10 @@ import {
initObfuscationConfig, initObfuscationConfig,
readProjectPropertiesByCollectedPaths, readProjectPropertiesByCollectedPaths,
performancePrinter, performancePrinter,
EventList EventList,
blockPrinter,
endFilesEvent,
startFilesEvent,
} from 'arkguard'; } from 'arkguard';
import { import {
@ -45,7 +48,7 @@ import {
import { getArkBuildDir } from '../../../ark_utils'; import { getArkBuildDir } from '../../../ark_utils';
import { checkAotConfig } from '../../../gen_aot'; import { checkAotConfig } from '../../../gen_aot';
import { projectConfig as mainProjectConfig } from '../../../../main'; import { projectConfig as mainProjectConfig } from '../../../../main';
import { disablePerformancePrinter, type MergedConfig } from './ob_config_resolver'; import type { MergedConfig } from './ob_config_resolver';
import type { ReseverdSetForArkguard } from 'arkguard'; import type { ReseverdSetForArkguard } from 'arkguard';
type ArkConfig = { type ArkConfig = {
@ -176,12 +179,12 @@ export function initArkProjectConfig(share: Object): Object {
if (!isDebug(projectConfig)) { if (!isDebug(projectConfig)) {
arkProjectConfig.useTsHar = mainProjectConfig.useTsHar; arkProjectConfig.useTsHar = mainProjectConfig.useTsHar;
const logger: any = share.getLogger(OBFUSCATION_TOOL); const logger: any = share.getLogger(OBFUSCATION_TOOL);
performancePrinter?.filesPrinter?.startEvent(EventList.OBFUSCATION_INITIALIZATION, performancePrinter.timeSumPrinter); startFilesEvent(EventList.OBFUSCATION_INITIALIZATION, performancePrinter.timeSumPrinter);
initObfuscationConfig(projectConfig, arkProjectConfig, logger); initObfuscationConfig(projectConfig, arkProjectConfig, logger);
performancePrinter?.filesPrinter?.endEvent(EventList.OBFUSCATION_INITIALIZATION, performancePrinter.timeSumPrinter); endFilesEvent(EventList.OBFUSCATION_INITIALIZATION, performancePrinter.timeSumPrinter);
} else { } else {
// Set performance printer to undefined in case we cannot disable it without obfuscation initialization // Set performance printer to undefined in case we cannot disable it without obfuscation initialization
disablePerformancePrinter(); blockPrinter();
} }
return arkProjectConfig; return arkProjectConfig;
} }

View File

@ -66,7 +66,14 @@ import {
localPackageSet localPackageSet
} from '../../../ets_checker'; } from '../../../ets_checker';
import { projectConfig } from '../../../../main'; import { projectConfig } from '../../../../main';
import { performancePrinter, EventList } from 'arkguard'; import {
EventList,
endFilesEvent,
performancePrinter,
printTimeSumData,
printTimeSumInfo,
startFilesEvent
} from 'arkguard';
const ROLLUP_IMPORT_NODE: string = 'ImportDeclaration'; const ROLLUP_IMPORT_NODE: string = 'ImportDeclaration';
const ROLLUP_EXPORTNAME_NODE: string = 'ExportNamedDeclaration'; const ROLLUP_EXPORTNAME_NODE: string = 'ExportNamedDeclaration';
const ROLLUP_EXPORTALL_NODE: string = 'ExportAllDeclaration'; const ROLLUP_EXPORTALL_NODE: string = 'ExportAllDeclaration';
@ -305,7 +312,7 @@ export class ModuleSourceFile {
} }
collectAllFiles(undefined, rollupObject.getModuleIds(), rollupObject); collectAllFiles(undefined, rollupObject.getModuleIds(), rollupObject);
performancePrinter?.filesPrinter?.startEvent(EventList.SCAN_SOURCEFILES, performancePrinter.timeSumPrinter); startFilesEvent(EventList.SCAN_SOURCEFILES, performancePrinter.timeSumPrinter);
let sourceProjectConfig: Object = ModuleSourceFile.projectConfig; let sourceProjectConfig: Object = ModuleSourceFile.projectConfig;
// obfuscation initialization, include collect file, resolve denpendency, read source // obfuscation initialization, include collect file, resolve denpendency, read source
if (compileToolIsRollUp()) { if (compileToolIsRollUp()) {
@ -316,9 +323,9 @@ export class ModuleSourceFile {
readProjectAndLibsSource(allSourceFilePaths, obfuscationConfig, sourceProjectConfig.arkObfuscator, readProjectAndLibsSource(allSourceFilePaths, obfuscationConfig, sourceProjectConfig.arkObfuscator,
sourceProjectConfig.compileHar, keepFilesAndDependencies); sourceProjectConfig.compileHar, keepFilesAndDependencies);
} }
performancePrinter?.filesPrinter?.endEvent(EventList.SCAN_SOURCEFILES, performancePrinter.timeSumPrinter); endFilesEvent(EventList.SCAN_SOURCEFILES, performancePrinter.timeSumPrinter);
performancePrinter?.filesPrinter?.startEvent(EventList.ALL_FILES_OBFUSCATION); startFilesEvent(EventList.ALL_FILES_OBFUSCATION);
let byteCodeHar = false; let byteCodeHar = false;
if (Object.prototype.hasOwnProperty.call(sourceProjectConfig, 'byteCodeHar')) { if (Object.prototype.hasOwnProperty.call(sourceProjectConfig, 'byteCodeHar')) {
byteCodeHar = sourceProjectConfig.byteCodeHar; byteCodeHar = sourceProjectConfig.byteCodeHar;
@ -342,9 +349,9 @@ export class ModuleSourceFile {
if (compileToolIsRollUp() && rollupObject.share.arkProjectConfig.compileMode === ESMODULE) { if (compileToolIsRollUp() && rollupObject.share.arkProjectConfig.compileMode === ESMODULE) {
await mangleDeclarationFileName(ModuleSourceFile.logger, rollupObject.share.arkProjectConfig, sourceFileBelongProject); await mangleDeclarationFileName(ModuleSourceFile.logger, rollupObject.share.arkProjectConfig, sourceFileBelongProject);
} }
performancePrinter?.timeSumPrinter?.print('All files obfuscation:'); printTimeSumInfo('All files obfuscation:');
performancePrinter?.timeSumPrinter?.summarizeEventDuration(); printTimeSumData();
performancePrinter?.filesPrinter?.endEvent(EventList.ALL_FILES_OBFUSCATION); endFilesEvent(EventList.ALL_FILES_OBFUSCATION);
const eventObfuscatedCode = createAndStartEvent(parentEvent, 'write obfuscation name cache'); const eventObfuscatedCode = createAndStartEvent(parentEvent, 'write obfuscation name cache');
const needToWriteCache = compileToolIsRollUp() && sourceProjectConfig.arkObfuscator && sourceProjectConfig.obfuscationOptions; const needToWriteCache = compileToolIsRollUp() && sourceProjectConfig.arkObfuscator && sourceProjectConfig.obfuscationOptions;