arkanalyzer 1.0.90 → 1.0.91

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.
Files changed (122) hide show
  1. package/config/arkanalyzer.json +0 -1
  2. package/lib/Config.d.ts +3 -0
  3. package/lib/Config.d.ts.map +1 -1
  4. package/lib/Scene.d.ts +99 -0
  5. package/lib/Scene.d.ts.map +1 -1
  6. package/lib/Scene.js +229 -13
  7. package/lib/callgraph/common/Statistics.js +2 -2
  8. package/lib/callgraph/model/CallGraph.d.ts +2 -2
  9. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  10. package/lib/callgraph/model/CallGraph.js +6 -6
  11. package/lib/callgraph/model/CallSite.d.ts +1 -1
  12. package/lib/callgraph/model/CallSite.d.ts.map +1 -1
  13. package/lib/callgraph/model/CallSite.js +2 -2
  14. package/lib/core/base/Ref.d.ts.map +1 -1
  15. package/lib/core/base/Ref.js +6 -1
  16. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  17. package/lib/core/common/ArkIRTransformer.js +5 -0
  18. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  19. package/lib/core/common/ArkValueTransformer.js +2 -1
  20. package/lib/core/common/Const.d.ts +3 -0
  21. package/lib/core/common/Const.d.ts.map +1 -1
  22. package/lib/core/common/Const.js +5 -1
  23. package/lib/core/common/DummyMainCreater.d.ts +25 -12
  24. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  25. package/lib/core/common/DummyMainCreater.js +90 -76
  26. package/lib/core/common/EtsConst.d.ts +2 -0
  27. package/lib/core/common/EtsConst.d.ts.map +1 -1
  28. package/lib/core/common/EtsConst.js +133 -125
  29. package/lib/core/common/SdkUtils.d.ts +1 -0
  30. package/lib/core/common/SdkUtils.d.ts.map +1 -1
  31. package/lib/core/common/SdkUtils.js +29 -0
  32. package/lib/core/graph/BaseExplicitGraph.d.ts +2 -0
  33. package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
  34. package/lib/core/graph/BaseExplicitGraph.js +12 -1
  35. package/lib/core/graph/BaseImplicitGraph.d.ts +16 -0
  36. package/lib/core/graph/BaseImplicitGraph.d.ts.map +1 -1
  37. package/lib/core/graph/BaseImplicitGraph.js +21 -0
  38. package/lib/core/graph/FileDepGraph.d.ts +75 -0
  39. package/lib/core/graph/FileDepGraph.d.ts.map +1 -0
  40. package/lib/core/graph/FileDepGraph.js +170 -0
  41. package/lib/core/graph/GraphTraits.d.ts +2 -0
  42. package/lib/core/graph/GraphTraits.d.ts.map +1 -1
  43. package/lib/core/graph/GraphTraits.js +1 -1
  44. package/lib/core/graph/ModuleDepGraph.d.ts +175 -0
  45. package/lib/core/graph/ModuleDepGraph.d.ts.map +1 -0
  46. package/lib/core/graph/ModuleDepGraph.js +421 -0
  47. package/lib/core/graph/Scc.d.ts +1 -3
  48. package/lib/core/graph/Scc.d.ts.map +1 -1
  49. package/lib/core/graph/Scc.js +6 -19
  50. package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
  51. package/lib/core/graph/builder/CfgBuilder.js +7 -1
  52. package/lib/core/graph/builder/TrapBuilder.d.ts +1 -0
  53. package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -1
  54. package/lib/core/graph/builder/TrapBuilder.js +27 -7
  55. package/lib/core/model/ArkBody.d.ts +1 -0
  56. package/lib/core/model/ArkBody.d.ts.map +1 -1
  57. package/lib/core/model/ArkBody.js +7 -0
  58. package/lib/core/model/ArkClass.d.ts +1 -0
  59. package/lib/core/model/ArkClass.d.ts.map +1 -1
  60. package/lib/core/model/ArkClass.js +37 -0
  61. package/lib/core/model/ArkExport.d.ts +1 -0
  62. package/lib/core/model/ArkExport.d.ts.map +1 -1
  63. package/lib/core/model/ArkExport.js +6 -0
  64. package/lib/core/model/ArkField.d.ts +1 -0
  65. package/lib/core/model/ArkField.d.ts.map +1 -1
  66. package/lib/core/model/ArkField.js +5 -0
  67. package/lib/core/model/ArkFile.d.ts +5 -0
  68. package/lib/core/model/ArkFile.d.ts.map +1 -1
  69. package/lib/core/model/ArkFile.js +30 -0
  70. package/lib/core/model/ArkImport.d.ts +1 -0
  71. package/lib/core/model/ArkImport.d.ts.map +1 -1
  72. package/lib/core/model/ArkImport.js +5 -0
  73. package/lib/core/model/ArkMethod.d.ts +8 -0
  74. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  75. package/lib/core/model/ArkMethod.js +22 -0
  76. package/lib/core/model/ArkModule.d.ts +136 -0
  77. package/lib/core/model/ArkModule.d.ts.map +1 -0
  78. package/lib/core/model/ArkModule.js +250 -0
  79. package/lib/core/model/ArkNamespace.d.ts +1 -0
  80. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  81. package/lib/core/model/ArkNamespace.js +18 -0
  82. package/lib/core/model/builder/ArkFileBuilder.d.ts +19 -0
  83. package/lib/core/model/builder/ArkFileBuilder.d.ts.map +1 -1
  84. package/lib/core/model/builder/ArkFileBuilder.js +155 -51
  85. package/lib/frontend/FrontendBuilder.d.ts +116 -0
  86. package/lib/frontend/FrontendBuilder.d.ts.map +1 -1
  87. package/lib/frontend/FrontendBuilder.js +256 -0
  88. package/lib/frontend/arktsFrontend/ArktsFrontend.d.ts +11 -0
  89. package/lib/frontend/arktsFrontend/ArktsFrontend.d.ts.map +1 -1
  90. package/lib/frontend/arktsFrontend/ArktsFrontend.js +15 -0
  91. package/lib/frontend/common/MemoryMonitor.d.ts +62 -0
  92. package/lib/frontend/common/MemoryMonitor.d.ts.map +1 -0
  93. package/lib/frontend/common/MemoryMonitor.js +108 -0
  94. package/lib/frontend/common/ModuleAnalysisConfig.d.ts +92 -0
  95. package/lib/frontend/common/ModuleAnalysisConfig.d.ts.map +1 -0
  96. package/lib/frontend/common/ModuleAnalysisConfig.js +144 -0
  97. package/lib/frontend/common/ModuleBuilder.d.ts +497 -0
  98. package/lib/frontend/common/ModuleBuilder.d.ts.map +1 -0
  99. package/lib/frontend/common/ModuleBuilder.js +1458 -0
  100. package/lib/frontend/common/ModuleCache.d.ts +119 -0
  101. package/lib/frontend/common/ModuleCache.d.ts.map +1 -0
  102. package/lib/frontend/common/ModuleCache.js +197 -0
  103. package/lib/frontend/common/ModuleDepth.d.ts +28 -0
  104. package/lib/frontend/common/ModuleDepth.d.ts.map +1 -0
  105. package/lib/frontend/common/ModuleDepth.js +45 -0
  106. package/lib/frontend/cppFrontend/CppFrontend.d.ts +5 -0
  107. package/lib/frontend/cppFrontend/CppFrontend.d.ts.map +1 -1
  108. package/lib/frontend/cppFrontend/CppFrontend.js +11 -1
  109. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts +8 -0
  110. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts.map +1 -1
  111. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.js +105 -2
  112. package/lib/index.d.ts +9 -1
  113. package/lib/index.d.ts.map +1 -1
  114. package/lib/index.js +22 -3
  115. package/lib/utils/Canonicalizer.d.ts +105 -0
  116. package/lib/utils/Canonicalizer.d.ts.map +1 -0
  117. package/lib/utils/Canonicalizer.js +520 -0
  118. package/lib/utils/ModuleUtils.js +4 -2
  119. package/lib/utils/entryMethodUtils.d.ts +23 -0
  120. package/lib/utils/entryMethodUtils.d.ts.map +1 -1
  121. package/lib/utils/entryMethodUtils.js +53 -1
  122. package/package.json +1 -1
@@ -31,7 +31,6 @@
31
31
  "hvigorfile.ts",
32
32
  "hvigorfile.js",
33
33
  "hvigor-wrapper.js",
34
- "build-tools",
35
34
  "build",
36
35
  ".cxx",
37
36
  ".test",
package/lib/Config.d.ts CHANGED
@@ -67,6 +67,9 @@ export interface SceneOptions {
67
67
  sdkGlobalFolders?: string[];
68
68
  /** Optional multi-language front-end section; defaults are merged in {@link SceneConfig} construction. */
69
69
  languages?: SceneLanguagesOptions;
70
+ /** Max process memory (RSS) in MB; 0 or undefined disables memory monitoring.
71
+ * Internally converted to a heapUsed limit via RSS_TO_HEAPUSED_RATIO in MemoryMonitor. */
72
+ memoryLimitMB?: number;
70
73
  [option: string]: SceneOptionsValue;
71
74
  }
72
75
  export declare class SceneConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"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"}
package/lib/Scene.d.ts CHANGED
@@ -3,11 +3,16 @@ import { VisibleValue } from './core/common/VisibleValue';
3
3
  import { ArkClass } from './core/model/ArkClass';
4
4
  import { ArkFile, Language } from './core/model/ArkFile';
5
5
  import { ArkMethod } from './core/model/ArkMethod';
6
+ import { ArkModule, ModuleID } from './core/model/ArkModule';
6
7
  import { ArkNamespace } from './core/model/ArkNamespace';
7
8
  import { ClassSignature, FileSignature, MethodSignature, NamespaceSignature } from './core/model/ArkSignature';
9
+ import { ModuleAnalysisConfig, ModuleAnalysisCallback } from './frontend/common/ModuleAnalysisConfig';
10
+ import { MemoryMonitor } from './frontend/common/MemoryMonitor';
11
+ import { ModuleCache } from './frontend/common/ModuleCache';
8
12
  import { Local } from './core/base/Local';
9
13
  import { ArkExport } from './core/model/ArkExport';
10
14
  import { CallGraph } from './callgraph/model/CallGraph';
15
+ import { ModuleDepGraph } from './core/graph/ModuleDepGraph';
11
16
  export declare enum SceneBuildStage {
12
17
  BUILD_INIT = 0,
13
18
  SDK_INFERRED = 1,
@@ -49,6 +54,18 @@ export declare class Scene {
49
54
  private buildStage;
50
55
  private fileLanguages;
51
56
  private options;
57
+ /** The SceneConfig used to build this scene, retained for later queries (e.g. SDK list). */
58
+ private sceneConfig?;
59
+ /** Maps ArkModule objects to dense integer ModuleIDs via the objectIdentity strategy. */
60
+ private moduleCanonicalizer;
61
+ /** Module dependency graph, used for SCCDetection. Built during dependency analysis. */
62
+ private moduleDepGraph?;
63
+ /** Whether module preparation has completed (prepareModules + analyzeModuleDependencies, idempotent). */
64
+ private modulesRegistered;
65
+ /** Persistent module cache for cross-call module reuse. */
66
+ private moduleCache?;
67
+ /** Persistent memory monitor for cache eviction. */
68
+ private memoryMonitor?;
52
69
  private unhandledFilePaths;
53
70
  private unhandledSdkFilePaths;
54
71
  constructor();
@@ -59,6 +76,13 @@ export declare class Scene {
59
76
  getOverRideDependencyMap(): Map<string, unknown>;
60
77
  clear(): void;
61
78
  getStage(): SceneBuildStage;
79
+ /**
80
+ * Set the current {@link SceneBuildStage}. Used by module-level builders (e.g.
81
+ * {@link FrontendBuilder.buildModuleMethodBody}) to temporarily open the
82
+ * {@link buildClassDone} gate so that nested/anonymous method bodies are built
83
+ * immediately during body construction, then restore the previous stage.
84
+ */
85
+ setBuildStage(stage: SceneBuildStage): void;
62
86
  /**
63
87
  * Build scene object according to the {@link SceneConfig}. This API implements 3 functions.
64
88
  * First is to build scene object from {@link SceneConfig}, second is to generate {@link ArkFile}s,
@@ -148,6 +172,62 @@ export declare class Scene {
148
172
  ```
149
173
  */
150
174
  getRealProjectDir(): string;
175
+ /**
176
+ * Returns the {@link SceneConfig} used to build this scene, or undefined before
177
+ * {@link buildBasicInfo} has been called.
178
+ */
179
+ getSceneConfig(): SceneConfig | undefined;
180
+ /**
181
+ * Save the {@link SceneConfig} into the scene for later module-level analysis.
182
+ * Unlike {@link buildBasicInfo}, this method only stores the config (and derives
183
+ * the real project directory) without building ArkFiles or performing type inference.
184
+ * This is the lightweight entry point for {@link analyseByModule}.
185
+ */
186
+ config(sceneConfig: SceneConfig): void;
187
+ /**
188
+ * Returns all registered {@link ArkModule} objects.
189
+ */
190
+ getModules(): ArkModule[];
191
+ /** The module dependency graph, or undefined before dependency analysis. */
192
+ getModuleDepGraph(): ModuleDepGraph | undefined;
193
+ /** Whether module preparation has completed. */
194
+ isModulesRegistered(): boolean;
195
+ getModuleCache(): ModuleCache | undefined;
196
+ setModuleCache(cache: ModuleCache): void;
197
+ getMemoryMonitor(): MemoryMonitor | undefined;
198
+ setMemoryMonitor(monitor: MemoryMonitor): void;
199
+ /** Get a registered module by its ModuleID. Returns undefined when the id is out of bounds. */
200
+ getModule(id: ModuleID): ArkModule | undefined;
201
+ /** Get the ModuleID assigned to a registered ArkModule. */
202
+ getModuleId(module: ArkModule): ModuleID;
203
+ /** Total number of registered modules. */
204
+ getModuleCount(): number;
205
+ /** Create a {@link ModuleDepGraph} sharing the internal module canonicalizer. */
206
+ createModuleDepGraph(): ModuleDepGraph;
207
+ setModuleDepGraph(graph: ModuleDepGraph): void;
208
+ setModulesRegistered(value: boolean): void;
209
+ /**
210
+ * Perform module-level analysis by iterating modules in topological order and invoking
211
+ * the callback for each module.
212
+ *
213
+ * Flow: prepareModules → analyzeModuleDependencies → buildSdkModules (SDK files parsed +
214
+ * inferred first) → resolveTargetModuleIds → computeModuleClosureByIds → iterate topoOrder
215
+ * → loadModule → callback.
216
+ * Each step is idempotent; repeated calls do not repeat preprocessing.
217
+ *
218
+ * - SDK modules are registered and built in one fused step by {@link ModuleBuilder.buildSdkModules}
219
+ * before the topoOrder loop, so that global APIs are available when project/oh_modules modules
220
+ * are loaded. SDK modules are not in the module dependency graph and thus never appear in the
221
+ * topoOrder or callback.
222
+ * - Target modules are resolved from the config's type filter, explicit include IDs, and
223
+ * explicit exclude IDs. The transitive closure (targets + dependencies) determines which
224
+ * modules are loaded. The callback is invoked only for target modules, not their dependencies.
225
+ * - By default (no explicit selection), all PROJECT and OH_MODULES modules are targets.
226
+ *
227
+ * @param callback - Invoked for each target module with the module and the scene.
228
+ * @param config - Optional configuration for target module selection and load levels.
229
+ */
230
+ analyseByModule(callback: ModuleAnalysisCallback, config?: ModuleAnalysisConfig): void;
151
231
  /**
152
232
  * Returns the **string** name of the project.
153
233
  * @returns The name of the project.
@@ -180,6 +260,11 @@ export declare class Scene {
180
260
  addUnhandledFilePath(filePath: string): void;
181
261
  getUnhandledSdkFilePaths(): string[];
182
262
  setFile(file: ArkFile): void;
263
+ /**
264
+ * Add an SDK ArkFile to the scene's `sdkArkFilesMap`, keyed by its file signature.
265
+ * Used by {@link ModuleBuilder.parseAndRegisterSdkFile} during SDK file registration.
266
+ */
267
+ addSdkArkFile(arkFile: ArkFile): void;
183
268
  hasSdkFile(fileSignature: FileSignature): boolean;
184
269
  /**
185
270
  * Get files of a {@link Scene}. Generally, a project includes several ets/ts files that define the different
@@ -259,6 +344,20 @@ export declare class Scene {
259
344
  removeClass(arkClass: ArkClass): boolean;
260
345
  removeNamespace(namespace: ArkNamespace): boolean;
261
346
  removeFile(file: ArkFile): boolean;
347
+ /**
348
+ * Dispose a module's data from all global indices.
349
+ *
350
+ * Removes the module's ArkFiles, ArkClasses, ArkMethods, and ArkNamespaces from the Scene's
351
+ * global maps (filesMap, sdkArkFilesMap, classesMap, methodsMap, namespacesMap) and clears
352
+ * the oh-package.json5 content cache. After this call, the module's heavy data is no longer
353
+ * reachable via Scene's global indices and can be garbage-collected.
354
+ *
355
+ * The global sdkGlobalMap is NOT cleaned (its keys are flat global names that cannot be
356
+ * reverse-mapped to a module). SDK modules should not be disposed.
357
+ *
358
+ * @param module - The module whose data should be removed from global indices.
359
+ */
360
+ disposeModule(module: ArkModule): void;
262
361
  hasMainMethod(): boolean;
263
362
  getEntryPoints(): MethodSignature[];
264
363
  /** get values that is visible in curr scope */
@@ -1 +1 @@
1
- {"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../src/Scene.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../src/Scene.ts"],"names":[],"mappings":"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"}
package/lib/Scene.js CHANGED
@@ -49,6 +49,8 @@ const VisibleValue_1 = require("./core/common/VisibleValue");
49
49
  const ArkFile_1 = require("./core/model/ArkFile");
50
50
  const ArkNamespace_1 = require("./core/model/ArkNamespace");
51
51
  const ArkSignature_1 = require("./core/model/ArkSignature");
52
+ const ModuleAnalysisConfig_1 = require("./frontend/common/ModuleAnalysisConfig");
53
+ const ModuleBuilder_1 = require("./frontend/common/ModuleBuilder");
52
54
  const logger_1 = __importStar(require("./utils/logger"));
53
55
  const json5parser_1 = require("./utils/json5parser");
54
56
  const getAllFiles_1 = require("./utils/getAllFiles");
@@ -72,6 +74,8 @@ const Inference_1 = require("./core/inference/Inference");
72
74
  const IRInference_2 = require("./core/common/IRInference");
73
75
  const ModuleUtils_1 = require("./utils/ModuleUtils");
74
76
  const DependenciesSort_1 = require("./utils/DependenciesSort");
77
+ const Canonicalizer_1 = require("./utils/Canonicalizer");
78
+ const ModuleDepGraph_1 = require("./core/graph/ModuleDepGraph");
75
79
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'Scene');
76
80
  var SceneBuildStage;
77
81
  (function (SceneBuildStage) {
@@ -116,6 +120,10 @@ class Scene {
116
120
  this.overRideDependencyMap = new Map();
117
121
  this.buildStage = SceneBuildStage.BUILD_INIT;
118
122
  this.fileLanguages = new Map();
123
+ /** Maps ArkModule objects to dense integer ModuleIDs via the objectIdentity strategy. */
124
+ this.moduleCanonicalizer = new Canonicalizer_1.Canonicalizer();
125
+ /** Whether module preparation has completed (prepareModules + analyzeModuleDependencies, idempotent). */
126
+ this.modulesRegistered = false;
119
127
  this.unhandledFilePaths = new Set();
120
128
  this.unhandledSdkFilePaths = [];
121
129
  }
@@ -129,6 +137,8 @@ class Scene {
129
137
  ValueUtil_1.ValueUtil.dispose();
130
138
  ModelUtils_1.ModelUtils.dispose();
131
139
  (0, builderUtils_1.clearCxxTypeStringCache)();
140
+ this.moduleCache = undefined;
141
+ this.memoryMonitor = undefined;
132
142
  }
133
143
  getOptions() {
134
144
  return this.options;
@@ -143,6 +153,7 @@ class Scene {
143
153
  return this.overRideDependencyMap;
144
154
  }
145
155
  clear() {
156
+ var _a;
146
157
  this.projectFiles = [];
147
158
  this.moduleScenesMap.clear();
148
159
  this.modulePath2NameMap.clear();
@@ -156,10 +167,20 @@ class Scene {
156
167
  this.sdkGlobalMap.clear();
157
168
  this.ohPkgContentMap.clear();
158
169
  this.ohPkgContent = {};
170
+ (_a = this.moduleCache) === null || _a === void 0 ? void 0 : _a.clear();
159
171
  }
160
172
  getStage() {
161
173
  return this.buildStage;
162
174
  }
175
+ /**
176
+ * Set the current {@link SceneBuildStage}. Used by module-level builders (e.g.
177
+ * {@link FrontendBuilder.buildModuleMethodBody}) to temporarily open the
178
+ * {@link buildClassDone} gate so that nested/anonymous method bodies are built
179
+ * immediately during body construction, then restore the previous stage.
180
+ */
181
+ setBuildStage(stage) {
182
+ this.buildStage = stage;
183
+ }
163
184
  /**
164
185
  * Build scene object according to the {@link SceneConfig}. This API implements 3 functions.
165
186
  * First is to build scene object from {@link SceneConfig}, second is to generate {@link ArkFile}s,
@@ -194,6 +215,7 @@ class Scene {
194
215
  */
195
216
  buildBasicInfo(sceneConfig) {
196
217
  var _a;
218
+ this.sceneConfig = sceneConfig;
197
219
  this.options = sceneConfig.getOptions();
198
220
  this.projectName = sceneConfig.getTargetProjectName();
199
221
  this.realProjectDir = fs_1.default.realpathSync(sceneConfig.getTargetProjectDirectory());
@@ -305,8 +327,9 @@ class Scene {
305
327
  }
306
328
  findTsConfigInfoDeeply(tsConfigObj, tsConfigFilePath) {
307
329
  if (tsConfigObj.extends) {
308
- const extTsConfigObj = (0, json5parser_1.fetchDependenciesFromFile)(path_1.default.join(path_1.default.dirname(tsConfigFilePath), tsConfigObj.extends));
309
- this.findTsConfigInfoDeeply(extTsConfigObj, tsConfigFilePath);
330
+ const extTsConfigFilePath = path_1.default.join(path_1.default.dirname(tsConfigFilePath), tsConfigObj.extends);
331
+ const extTsConfigObj = (0, json5parser_1.fetchDependenciesFromFile)(extTsConfigFilePath);
332
+ this.findTsConfigInfoDeeply(extTsConfigObj, extTsConfigFilePath);
310
333
  if (!this.baseUrl && !this.globalModule2PathMapping) {
311
334
  this.addTsConfigInfo(extTsConfigObj);
312
335
  }
@@ -566,8 +589,7 @@ class Scene {
566
589
  }
567
590
  }
568
591
  findDependenciesByRule(originPath) {
569
- if (!this.findFilesByPathArray(originPath) &&
570
- !this.findFilesByExtNameArray(originPath, this.options.supportFileExts)) {
592
+ if (!this.findFilesByPathArray(originPath) && !this.findFilesByExtNameArray(originPath, this.options.supportFileExts)) {
571
593
  logger.trace(originPath + 'module mapperInfo is not found!');
572
594
  }
573
595
  }
@@ -666,7 +688,7 @@ class Scene {
666
688
  */
667
689
  buildSdk(sdkName, sdkPath) {
668
690
  const allFiles = this.collectSdkFiles(sdkName, sdkPath);
669
- allFiles.forEach((file) => {
691
+ allFiles.forEach(file => {
670
692
  if (FileUtils_1.FileUtils.getFileLanguage(file, this.fileLanguages) === ArkFile_1.Language.CXX) {
671
693
  return;
672
694
  }
@@ -682,6 +704,7 @@ class Scene {
682
704
  }
683
705
  return builtInFiles;
684
706
  }
707
+ SdkUtils_1.SdkUtils.loadSystemComponentsFromSdk(sdkPath);
685
708
  return (0, getAllFiles_1.getAllFiles)(sdkPath, this.options.supportFileExts, this.options.ignoreFileNames);
686
709
  }
687
710
  parseAndRegisterSdkFile(file, sdkPath, sdkName) {
@@ -811,6 +834,154 @@ class Scene {
811
834
  getRealProjectDir() {
812
835
  return this.realProjectDir;
813
836
  }
837
+ /**
838
+ * Returns the {@link SceneConfig} used to build this scene, or undefined before
839
+ * {@link buildBasicInfo} has been called.
840
+ */
841
+ getSceneConfig() {
842
+ return this.sceneConfig;
843
+ }
844
+ /**
845
+ * Save the {@link SceneConfig} into the scene for later module-level analysis.
846
+ * Unlike {@link buildBasicInfo}, this method only stores the config (and derives
847
+ * the real project directory) without building ArkFiles or performing type inference.
848
+ * This is the lightweight entry point for {@link analyseByModule}.
849
+ */
850
+ config(sceneConfig) {
851
+ this.sceneConfig = sceneConfig;
852
+ this.options = sceneConfig.getOptions();
853
+ this.projectName = sceneConfig.getTargetProjectName();
854
+ const dir = sceneConfig.getTargetProjectDirectory();
855
+ if (dir) {
856
+ this.realProjectDir = fs_1.default.realpathSync(dir);
857
+ }
858
+ this.fileLanguages = sceneConfig.getFileLanguages();
859
+ }
860
+ /**
861
+ * Returns all registered {@link ArkModule} objects.
862
+ */
863
+ getModules() {
864
+ const result = [];
865
+ for (let i = 0; i < this.moduleCanonicalizer.size(); i++) {
866
+ const m = this.moduleCanonicalizer.get(i);
867
+ if (m) {
868
+ result.push(m);
869
+ }
870
+ }
871
+ return result;
872
+ }
873
+ // --- Module query methods (Scene is a lightweight result container) ---
874
+ /** The module dependency graph, or undefined before dependency analysis. */
875
+ getModuleDepGraph() {
876
+ return this.moduleDepGraph;
877
+ }
878
+ /** Whether module preparation has completed. */
879
+ isModulesRegistered() {
880
+ return this.modulesRegistered;
881
+ }
882
+ // --- Module cache management (persistent across analyseByModule calls) ---
883
+ getModuleCache() {
884
+ return this.moduleCache;
885
+ }
886
+ setModuleCache(cache) {
887
+ this.moduleCache = cache;
888
+ }
889
+ getMemoryMonitor() {
890
+ return this.memoryMonitor;
891
+ }
892
+ setMemoryMonitor(monitor) {
893
+ this.memoryMonitor = monitor;
894
+ }
895
+ // --- Internal accessors used by ModuleBuilder to read/write persistent state ---
896
+ /** Get a registered module by its ModuleID. Returns undefined when the id is out of bounds. */
897
+ getModule(id) {
898
+ return this.moduleCanonicalizer.get(id);
899
+ }
900
+ /** Get the ModuleID assigned to a registered ArkModule. */
901
+ getModuleId(module) {
902
+ return this.moduleCanonicalizer.getId(module);
903
+ }
904
+ /** Total number of registered modules. */
905
+ getModuleCount() {
906
+ return this.moduleCanonicalizer.size();
907
+ }
908
+ /** Create a {@link ModuleDepGraph} sharing the internal module canonicalizer. */
909
+ createModuleDepGraph() {
910
+ return new ModuleDepGraph_1.ModuleDepGraph(this.moduleCanonicalizer);
911
+ }
912
+ setModuleDepGraph(graph) {
913
+ this.moduleDepGraph = graph;
914
+ }
915
+ setModulesRegistered(value) {
916
+ this.modulesRegistered = value;
917
+ }
918
+ /**
919
+ * Perform module-level analysis by iterating modules in topological order and invoking
920
+ * the callback for each module.
921
+ *
922
+ * Flow: prepareModules → analyzeModuleDependencies → buildSdkModules (SDK files parsed +
923
+ * inferred first) → resolveTargetModuleIds → computeModuleClosureByIds → iterate topoOrder
924
+ * → loadModule → callback.
925
+ * Each step is idempotent; repeated calls do not repeat preprocessing.
926
+ *
927
+ * - SDK modules are registered and built in one fused step by {@link ModuleBuilder.buildSdkModules}
928
+ * before the topoOrder loop, so that global APIs are available when project/oh_modules modules
929
+ * are loaded. SDK modules are not in the module dependency graph and thus never appear in the
930
+ * topoOrder or callback.
931
+ * - Target modules are resolved from the config's type filter, explicit include IDs, and
932
+ * explicit exclude IDs. The transitive closure (targets + dependencies) determines which
933
+ * modules are loaded. The callback is invoked only for target modules, not their dependencies.
934
+ * - By default (no explicit selection), all PROJECT and OH_MODULES modules are targets.
935
+ *
936
+ * @param callback - Invoked for each target module with the module and the scene.
937
+ * @param config - Optional configuration for target module selection and load levels.
938
+ */
939
+ analyseByModule(callback, config) {
940
+ const builder = new ModuleBuilder_1.ModuleBuilder(this);
941
+ // 1. Prepare modules + analyze dependencies (merged, guarded by modulesRegistered)
942
+ if (!this.isModulesRegistered()) {
943
+ builder.prepareModules();
944
+ builder.analyzeModuleDependencies();
945
+ this.setModulesRegistered(true);
946
+ }
947
+ // 2. Build SDK modules — fused registration + building (idempotent). SDK loaded FIRST so
948
+ // that global APIs are available when project/oh_modules modules are loaded.
949
+ builder.buildSdkModules();
950
+ // 3. Resolve target modules and compute closure (unified flow, no branching)
951
+ const effectiveConfig = config !== null && config !== void 0 ? config : new ModuleAnalysisConfig_1.ModuleAnalysisConfig();
952
+ const targetIds = builder.resolveTargetModuleIds(effectiveConfig);
953
+ const closure = builder.computeModuleClosureByIds(targetIds);
954
+ const topoOrder = builder.getFilteredTopoOrder(closure);
955
+ // 4. Initialize / update cache management (persistent ModuleCache + MemoryMonitor in Scene)
956
+ builder.initCacheManagement(this.getOptions(), topoOrder, effectiveConfig.getDependencyLoadLevel());
957
+ // 5. Pre-call cleanup: unload cached modules not in current topoOrder
958
+ const cache = this.getModuleCache();
959
+ if (cache) {
960
+ const currentTopoSet = new Set(topoOrder);
961
+ for (const moduleId of cache.getLoadedModules()) {
962
+ if (!currentTopoSet.has(moduleId)) {
963
+ builder.unload(moduleId);
964
+ cache.unregister(moduleId);
965
+ }
966
+ }
967
+ }
968
+ // 6. Iterate topoOrder: loadModule internally handles cache eviction and registration
969
+ const targetLevel = effectiveConfig.getLoadLevel();
970
+ const depLevel = effectiveConfig.getDependencyLoadLevel();
971
+ for (const moduleId of topoOrder) {
972
+ const isTarget = targetIds.test(moduleId);
973
+ builder.loadModule(moduleId, isTarget ? targetLevel : depLevel);
974
+ if (!isTarget) {
975
+ continue;
976
+ }
977
+ const module = builder.getModule(moduleId);
978
+ if (!module) {
979
+ continue;
980
+ }
981
+ callback(module, this);
982
+ }
983
+ // 7. No unload, no dispose — modules persist in cache for cross-call reuse
984
+ }
814
985
  /**
815
986
  * Returns the **string** name of the project.
816
987
  * @returns The name of the project.
@@ -872,6 +1043,13 @@ class Scene {
872
1043
  setFile(file) {
873
1044
  this.filesMap.set(file.getFileSignature().toMapKey(), file);
874
1045
  }
1046
+ /**
1047
+ * Add an SDK ArkFile to the scene's `sdkArkFilesMap`, keyed by its file signature.
1048
+ * Used by {@link ModuleBuilder.parseAndRegisterSdkFile} during SDK file registration.
1049
+ */
1050
+ addSdkArkFile(arkFile) {
1051
+ this.sdkArkFilesMap.set(arkFile.getFileSignature().toMapKey(), arkFile);
1052
+ }
875
1053
  hasSdkFile(fileSignature) {
876
1054
  return this.sdkArkFilesMap.has(fileSignature.toMapKey());
877
1055
  }
@@ -1080,6 +1258,48 @@ class Scene {
1080
1258
  removeFile(file) {
1081
1259
  return this.filesMap.delete(file.getFileSignature().toMapKey());
1082
1260
  }
1261
+ /**
1262
+ * Dispose a module's data from all global indices.
1263
+ *
1264
+ * Removes the module's ArkFiles, ArkClasses, ArkMethods, and ArkNamespaces from the Scene's
1265
+ * global maps (filesMap, sdkArkFilesMap, classesMap, methodsMap, namespacesMap) and clears
1266
+ * the oh-package.json5 content cache. After this call, the module's heavy data is no longer
1267
+ * reachable via Scene's global indices and can be garbage-collected.
1268
+ *
1269
+ * The global sdkGlobalMap is NOT cleaned (its keys are flat global names that cannot be
1270
+ * reverse-mapped to a module). SDK modules should not be disposed.
1271
+ *
1272
+ * @param module - The module whose data should be removed from global indices.
1273
+ */
1274
+ disposeModule(module) {
1275
+ for (const arkFile of module.getFilesMap().values()) {
1276
+ const key = arkFile.getFileSignature().toMapKey();
1277
+ this.filesMap.delete(key);
1278
+ this.sdkArkFilesMap.delete(key);
1279
+ for (const ns of ModelUtils_1.ModelUtils.getAllNamespacesInFile(arkFile)) {
1280
+ this.namespacesMap.delete(ns.getNamespaceSignature().toMapKey());
1281
+ }
1282
+ for (const cls of ModelUtils_1.ModelUtils.getAllClassesInFile(arkFile)) {
1283
+ this.classesMap.delete(cls.getSignature().toMapKey());
1284
+ for (const mtd of cls.getMethods()) {
1285
+ this.methodsMap.delete(mtd.getSignature().toMapKey());
1286
+ // Release heavy per-method IR (ArkBody/CFG/Stmt/Locals + ViewTree) so it can
1287
+ // be GC'd on eviction, even if the ArkMethod/ArkFile skeleton is still referenced
1288
+ // by residual back-edges. Bodies/viewTrees are rebuilt on reload.
1289
+ mtd.clearBodyAndSupplementary();
1290
+ }
1291
+ // Sever back-references: remove this class from its base classes' extendedClasses,
1292
+ // otherwise base classes (e.g. SDK) keep evicted project classes alive (memory leak).
1293
+ for (const base of cls.getAllHeritageClasses()) {
1294
+ base.getExtendedClasses().delete(cls.getName());
1295
+ }
1296
+ }
1297
+ // Release the TS AST (SourceFile) and cached source text; getCode() re-reads from disk.
1298
+ arkFile.setAST(null);
1299
+ arkFile.clearSourceCode();
1300
+ }
1301
+ this.ohPkgContentMap.delete(module.getOhPkgPath());
1302
+ }
1083
1303
  hasMainMethod() {
1084
1304
  return false;
1085
1305
  }
@@ -1276,8 +1496,7 @@ class Scene {
1276
1496
  const importNameSpaceClasses = classMap.get(importNameSpace.getNamespaceSignature());
1277
1497
  importClasses.push(...importNameSpaceClasses.filter(c => !importClasses.includes(c) && c.getName() !== Const_1.DEFAULT_ARK_CLASS_NAME));
1278
1498
  }
1279
- catch (_a) {
1280
- }
1499
+ catch (_a) { }
1281
1500
  }
1282
1501
  }
1283
1502
  const fileClasses = classMap.get(file.getFileSignature());
@@ -1329,8 +1548,7 @@ class Scene {
1329
1548
  while (namespaceStack.length > 0) {
1330
1549
  const ns = namespaceStack.shift();
1331
1550
  const nsGlobalLocals = [];
1332
- (_a = ns
1333
- .getDefaultClass()
1551
+ (_a = ns.getDefaultClass()
1334
1552
  .getDefaultArkMethod()
1335
1553
  .getBody()) === null || _a === void 0 ? void 0 : _a.getLocals().forEach(local => {
1336
1554
  if (local.getDeclaringStmt() && local.getName() !== 'this' && local.getName()[0] !== '$') {
@@ -1398,8 +1616,7 @@ class Scene {
1398
1616
  const importNameSpaceClasses = globalVariableMap.get(importNameSpace.getNamespaceSignature());
1399
1617
  importLocals.push(...importNameSpaceClasses.filter(c => !importLocals.includes(c) && c.getName() !== Const_1.DEFAULT_ARK_CLASS_NAME));
1400
1618
  }
1401
- catch (_a) {
1402
- }
1619
+ catch (_a) { }
1403
1620
  }
1404
1621
  }
1405
1622
  const fileLocals = globalVariableMap.get(file.getFileSignature());
@@ -1441,8 +1658,7 @@ class Scene {
1441
1658
  const parentMap = new Map();
1442
1659
  const finalNamespaces = [];
1443
1660
  const globalLocals = [];
1444
- (_b = (_a = file
1445
- .getDefaultClass()) === null || _a === void 0 ? void 0 : _a.getDefaultArkMethod().getBody()) === null || _b === void 0 ? void 0 : _b.getLocals().forEach(local => {
1661
+ (_b = (_a = file.getDefaultClass()) === null || _a === void 0 ? void 0 : _a.getDefaultArkMethod().getBody()) === null || _b === void 0 ? void 0 : _b.getLocals().forEach(local => {
1446
1662
  if (local.getDeclaringStmt() && local.getName() !== 'this' && local.getName()[0] !== '$') {
1447
1663
  globalLocals.push(local);
1448
1664
  }
@@ -218,7 +218,7 @@ exports.PAGStat = PAGStat;
218
218
  class CGStat extends StatTraits {
219
219
  constructor() {
220
220
  super(...arguments);
221
- //real, vitual, intrinsic, constructor
221
+ //real, virtual, intrinsic, constructor
222
222
  this.numTotalNode = 0;
223
223
  this.numReal = 0;
224
224
  this.numVirtual = 0;
@@ -249,7 +249,7 @@ class CGStat extends StatTraits {
249
249
  case CallGraph_1.CallGraphNodeKind.real:
250
250
  this.numReal++;
251
251
  break;
252
- case CallGraph_1.CallGraphNodeKind.vitual:
252
+ case CallGraph_1.CallGraphNodeKind.virtual:
253
253
  this.numVirtual++;
254
254
  break;
255
255
  case CallGraph_1.CallGraphNodeKind.constructor:
@@ -9,7 +9,7 @@ export type FuncID = number;
9
9
  export { CallSite, DynCallSite, ICallSite };
10
10
  export declare enum CallGraphNodeKind {
11
11
  real = 0,
12
- vitual = 1,
12
+ virtual = 1,
13
13
  intrinsic = 2,
14
14
  constructor = 3,
15
15
  blank = 4
@@ -56,7 +56,7 @@ export declare class CallGraph extends BaseExplicitGraph {
56
56
  getCallGraphNodeByMethod(method: Method): CallGraphNode;
57
57
  addDirectOrSpecialCallEdge(caller: Method, callee: Method, callStmt: Stmt, isDirectCall?: boolean): void;
58
58
  removeCallGraphEdge(nodeID: NodeID): void;
59
- addDynamicCallInfo(callStmt: Stmt, caller: Method, protentialCallee?: Method): void;
59
+ addDynamicCallInfo(callStmt: Stmt, caller: Method, potentialCallee?: Method): void;
60
60
  addDynamicCallEdge(callerID: NodeID, calleeID: NodeID, callStmt: Stmt): void;
61
61
  getDynCallSiteByStmt(stmt: Stmt): DynCallSite | undefined;
62
62
  addStmtToCallSiteMap(stmt: Stmt, cs: CallSite): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"CallGraph.d.ts","sourceRoot":"","sources":["../../../src/callgraph/model/CallGraph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CallGraph.d.ts","sourceRoot":"","sources":["../../../src/callgraph/model/CallGraph.ts"],"names":[],"mappings":"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"}