arkanalyzer 1.0.7 → 1.0.9

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 (164) hide show
  1. package/config/arkanalyzer.json +8 -0
  2. package/lib/Config.d.ts +9 -1
  3. package/lib/Config.d.ts.map +1 -1
  4. package/lib/Config.js +24 -11
  5. package/lib/Scene.d.ts +49 -42
  6. package/lib/Scene.d.ts.map +1 -1
  7. package/lib/Scene.js +124 -93
  8. package/lib/callgraph/algorithm/AbstractAnalysis.js +1 -1
  9. package/lib/callgraph/common/Statistics.js +1 -1
  10. package/lib/callgraph/model/CallGraph.d.ts +3 -2
  11. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  12. package/lib/callgraph/model/CallGraph.js +15 -5
  13. package/lib/callgraph/model/builder/CallGraphBuilder.js +1 -1
  14. package/lib/callgraph/pointerAnalysis/Pag.d.ts +35 -8
  15. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  16. package/lib/callgraph/pointerAnalysis/Pag.js +89 -8
  17. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +32 -5
  18. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  19. package/lib/callgraph/pointerAnalysis/PagBuilder.js +378 -83
  20. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +3 -0
  21. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  22. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +71 -18
  23. package/lib/core/base/Constant.d.ts +25 -5
  24. package/lib/core/base/Constant.d.ts.map +1 -1
  25. package/lib/core/base/Constant.js +46 -8
  26. package/lib/core/base/Expr.d.ts +45 -40
  27. package/lib/core/base/Expr.d.ts.map +1 -1
  28. package/lib/core/base/Expr.js +236 -150
  29. package/lib/core/base/Local.d.ts +2 -2
  30. package/lib/core/base/Local.d.ts.map +1 -1
  31. package/lib/core/base/Local.js +2 -2
  32. package/lib/core/base/Ref.d.ts +38 -37
  33. package/lib/core/base/Ref.d.ts.map +1 -1
  34. package/lib/core/base/Ref.js +102 -70
  35. package/lib/core/base/Stmt.d.ts +4 -0
  36. package/lib/core/base/Stmt.d.ts.map +1 -1
  37. package/lib/core/base/Stmt.js +12 -1
  38. package/lib/core/base/Type.d.ts +4 -0
  39. package/lib/core/base/Type.d.ts.map +1 -1
  40. package/lib/core/base/Type.js +41 -17
  41. package/lib/core/common/ArkError.d.ts +15 -0
  42. package/lib/core/common/ArkError.d.ts.map +1 -0
  43. package/lib/core/common/ArkError.js +28 -0
  44. package/lib/core/common/ArkIRTransformer.d.ts +1 -1
  45. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  46. package/lib/core/common/ArkIRTransformer.js +24 -8
  47. package/lib/core/common/CfgBuilder.d.ts.map +1 -1
  48. package/lib/core/common/CfgBuilder.js +5 -0
  49. package/lib/core/common/Const.d.ts +15 -10
  50. package/lib/core/common/Const.d.ts.map +1 -1
  51. package/lib/core/common/Const.js +18 -11
  52. package/lib/core/common/DummyMainCreater.d.ts +2 -1
  53. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  54. package/lib/core/common/DummyMainCreater.js +28 -15
  55. package/lib/core/common/EtsConst.d.ts +1 -0
  56. package/lib/core/common/EtsConst.d.ts.map +1 -1
  57. package/lib/core/common/EtsConst.js +2 -1
  58. package/lib/core/common/IRUtils.d.ts +6 -0
  59. package/lib/core/common/IRUtils.d.ts.map +1 -1
  60. package/lib/core/common/IRUtils.js +29 -2
  61. package/lib/core/common/ModelUtils.d.ts +1 -0
  62. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  63. package/lib/core/common/ModelUtils.js +32 -32
  64. package/lib/core/common/TSConst.d.ts +10 -3
  65. package/lib/core/common/TSConst.d.ts.map +1 -1
  66. package/lib/core/common/TSConst.js +11 -4
  67. package/lib/core/common/TypeInference.d.ts +8 -2
  68. package/lib/core/common/TypeInference.d.ts.map +1 -1
  69. package/lib/core/common/TypeInference.js +218 -87
  70. package/lib/core/common/ValueUtil.d.ts +0 -4
  71. package/lib/core/common/ValueUtil.d.ts.map +1 -1
  72. package/lib/core/common/ValueUtil.js +8 -25
  73. package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -1
  74. package/lib/core/dataflow/DataflowSolver.js +2 -4
  75. package/lib/core/dataflow/TiantAnalysis.js +2 -1
  76. package/lib/core/dataflow/Util.d.ts +1 -1
  77. package/lib/core/dataflow/Util.d.ts.map +1 -1
  78. package/lib/core/dataflow/Util.js +8 -7
  79. package/lib/core/graph/BasicBlock.d.ts +41 -0
  80. package/lib/core/graph/BasicBlock.d.ts.map +1 -1
  81. package/lib/core/graph/BasicBlock.js +132 -1
  82. package/lib/core/graph/Cfg.d.ts +30 -1
  83. package/lib/core/graph/Cfg.d.ts.map +1 -1
  84. package/lib/core/graph/Cfg.js +129 -6
  85. package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
  86. package/lib/core/graph/builder/ViewTreeBuilder.js +3 -2
  87. package/lib/core/model/ArkBaseModel.d.ts +8 -0
  88. package/lib/core/model/ArkBaseModel.d.ts.map +1 -1
  89. package/lib/core/model/ArkBaseModel.js +55 -3
  90. package/lib/core/model/ArkClass.d.ts +36 -30
  91. package/lib/core/model/ArkClass.d.ts.map +1 -1
  92. package/lib/core/model/ArkClass.js +78 -39
  93. package/lib/core/model/ArkExport.d.ts +3 -0
  94. package/lib/core/model/ArkExport.d.ts.map +1 -1
  95. package/lib/core/model/ArkExport.js +10 -0
  96. package/lib/core/model/ArkField.d.ts +2 -0
  97. package/lib/core/model/ArkField.d.ts.map +1 -1
  98. package/lib/core/model/ArkField.js +3 -0
  99. package/lib/core/model/ArkFile.d.ts +4 -0
  100. package/lib/core/model/ArkFile.d.ts.map +1 -1
  101. package/lib/core/model/ArkFile.js +20 -0
  102. package/lib/core/model/ArkImport.d.ts +2 -0
  103. package/lib/core/model/ArkImport.d.ts.map +1 -1
  104. package/lib/core/model/ArkImport.js +3 -0
  105. package/lib/core/model/ArkMetadata.d.ts +20 -0
  106. package/lib/core/model/ArkMetadata.d.ts.map +1 -0
  107. package/lib/core/model/ArkMetadata.js +44 -0
  108. package/lib/core/model/ArkMethod.d.ts +156 -53
  109. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  110. package/lib/core/model/ArkMethod.js +309 -54
  111. package/lib/core/model/ArkNamespace.d.ts +4 -0
  112. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  113. package/lib/core/model/ArkNamespace.js +13 -0
  114. package/lib/core/model/ArkSignature.d.ts +11 -5
  115. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  116. package/lib/core/model/ArkSignature.js +38 -18
  117. package/lib/core/model/builder/ArkClassBuilder.d.ts +0 -1
  118. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  119. package/lib/core/model/builder/ArkClassBuilder.js +9 -34
  120. package/lib/core/model/builder/ArkExportBuilder.d.ts.map +1 -1
  121. package/lib/core/model/builder/ArkExportBuilder.js +6 -1
  122. package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -1
  123. package/lib/core/model/builder/ArkFieldBuilder.js +3 -0
  124. package/lib/core/model/builder/ArkFileBuilder.js +1 -1
  125. package/lib/core/model/builder/ArkImportBuilder.d.ts +2 -1
  126. package/lib/core/model/builder/ArkImportBuilder.d.ts.map +1 -1
  127. package/lib/core/model/builder/ArkImportBuilder.js +12 -5
  128. package/lib/core/model/builder/ArkMethodBuilder.d.ts +2 -1
  129. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  130. package/lib/core/model/builder/ArkMethodBuilder.js +87 -47
  131. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  132. package/lib/core/model/builder/ArkNamespaceBuilder.js +2 -0
  133. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  134. package/lib/core/model/builder/builderUtils.js +25 -2
  135. package/lib/save/source/SourceClass.d.ts.map +1 -1
  136. package/lib/save/source/SourceClass.js +4 -0
  137. package/lib/save/source/SourceField.d.ts.map +1 -1
  138. package/lib/save/source/SourceField.js +4 -0
  139. package/lib/save/source/SourceMethod.d.ts.map +1 -1
  140. package/lib/save/source/SourceMethod.js +7 -0
  141. package/lib/save/source/SourceModule.d.ts.map +1 -1
  142. package/lib/save/source/SourceModule.js +14 -9
  143. package/lib/save/source/SourceNamespace.d.ts.map +1 -1
  144. package/lib/save/source/SourceNamespace.js +4 -0
  145. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  146. package/lib/save/source/SourceStmt.js +15 -3
  147. package/lib/save/source/SourceTransformer.d.ts +6 -0
  148. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  149. package/lib/save/source/SourceTransformer.js +72 -41
  150. package/lib/save/source/SourceUtils.d.ts.map +1 -1
  151. package/lib/save/source/SourceUtils.js +3 -2
  152. package/lib/transformer/StaticSingleAssignmentFormer.js +1 -1
  153. package/lib/utils/CfgStructualAnalysis.d.ts +1 -0
  154. package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -1
  155. package/lib/utils/CfgStructualAnalysis.js +41 -7
  156. package/lib/utils/callGraphUtils.d.ts.map +1 -1
  157. package/lib/utils/callGraphUtils.js +7 -10
  158. package/lib/utils/crypto_utils.d.ts +6 -0
  159. package/lib/utils/crypto_utils.d.ts.map +1 -0
  160. package/lib/utils/crypto_utils.js +57 -0
  161. package/lib/utils/getAllFiles.d.ts +1 -1
  162. package/lib/utils/getAllFiles.d.ts.map +1 -1
  163. package/lib/utils/getAllFiles.js +4 -5
  164. package/package.json +3 -2
@@ -0,0 +1,8 @@
1
+ {
2
+ "enableLeadingComments": false,
3
+ "ignoreFileNames": [
4
+ "oh_modules",
5
+ "node_modules",
6
+ "hvigorfile.ts"
7
+ ]
8
+ }
package/lib/Config.d.ts CHANGED
@@ -3,6 +3,12 @@ export interface Sdk {
3
3
  path: string;
4
4
  moduleName: string;
5
5
  }
6
+ export type SceneOptionsValue = string | number | boolean | (string | number)[] | string[] | null | undefined;
7
+ export interface SceneOptions {
8
+ ignoreFileNames?: string[];
9
+ enableLeadingComments?: boolean;
10
+ [option: string]: SceneOptionsValue;
11
+ }
6
12
  export declare class SceneConfig {
7
13
  private targetProjectName;
8
14
  private targetProjectDirectory;
@@ -11,7 +17,9 @@ export declare class SceneConfig {
11
17
  private sdkFiles;
12
18
  private sdkFilesMap;
13
19
  private projectFiles;
14
- constructor();
20
+ private options;
21
+ constructor(options?: SceneOptions);
22
+ getOptions(): SceneOptions;
15
23
  /**
16
24
  * Set the scene's config,
17
25
  * such as the target project's name, the used sdks and the full path.
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,sBAAsB,CAAc;IAE5C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAa;IAE5B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,WAAW,CAAsD;IAEzE,OAAO,CAAC,YAAY,CAAgB;;IAKpC;;;;;;;OAOG;IACI,WAAW,CACd,iBAAiB,EAAE,MAAM,EACzB,sBAAsB,EAAE,MAAM,EAC9B,IAAI,EAAE,GAAG,EAAE,EACX,YAAY,CAAC,EAAE,MAAM,EAAE;IAU3B;;;;;;;;;;;OAWG;IACI,mBAAmB,CAAC,sBAAsB,EAAE,MAAM;IAMlD,aAAa,CAAC,cAAc,EAAE,MAAM;IAuCpC,oBAAoB;IAIpB,yBAAyB;IAIzB,eAAe;IAIf,WAAW;IAIX,cAAc;IAId,aAAa;IAIb,UAAU;CAGpB"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAC9G,MAAM,WAAW,YAAY;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAAC;CACvC;AAID,qBAAa,WAAW;IACpB,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,sBAAsB,CAAc;IAE5C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAa;IAE5B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,WAAW,CAAsD;IAEzE,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,CAAC,EAAE,YAAY;IAW3B,UAAU,IAAI,YAAY;IAIjC;;;;;;;OAOG;IACI,WAAW,CACd,iBAAiB,EAAE,MAAM,EACzB,sBAAsB,EAAE,MAAM,EAC9B,IAAI,EAAE,GAAG,EAAE,EACX,YAAY,CAAC,EAAE,MAAM,EAAE;IAU3B;;;;;;;;;;;OAWG;IACI,mBAAmB,CAAC,sBAAsB,EAAE,MAAM;IAMlD,aAAa,CAAC,cAAc,EAAE,MAAM;IAmCpC,oBAAoB;IAIpB,yBAAyB;IAIzB,eAAe;IAIf,WAAW;IAIX,cAAc;IAId,aAAa;IAIb,UAAU;CAGpB"}
package/lib/Config.js CHANGED
@@ -46,15 +46,29 @@ const path_1 = __importDefault(require("path"));
46
46
  const logger_1 = __importStar(require("./utils/logger"));
47
47
  const getAllFiles_1 = require("./utils/getAllFiles");
48
48
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'Config');
49
+ const CONFIG_FILENAME = 'arkanalyzer.json';
50
+ const DEFAULT_CONFIG_FILE = path_1.default.join(__dirname, '../config', CONFIG_FILENAME);
49
51
  class SceneConfig {
50
- constructor() {
51
- this.targetProjectName = "";
52
- this.targetProjectDirectory = "";
53
- this.etsSdkPath = "";
52
+ constructor(options) {
53
+ this.targetProjectName = '';
54
+ this.targetProjectDirectory = '';
55
+ this.etsSdkPath = '';
54
56
  this.sdksObj = [];
55
57
  this.sdkFiles = [];
56
58
  this.sdkFilesMap = new Map();
57
59
  this.projectFiles = [];
60
+ try {
61
+ this.options = JSON.parse(fs_1.default.readFileSync(DEFAULT_CONFIG_FILE, 'utf-8'));
62
+ }
63
+ catch (error) {
64
+ this.options = {};
65
+ }
66
+ if (options) {
67
+ this.options = Object.assign(Object.assign({}, this.options), options);
68
+ }
69
+ }
70
+ getOptions() {
71
+ return this.options;
58
72
  }
59
73
  /**
60
74
  * Set the scene's config,
@@ -87,7 +101,7 @@ class SceneConfig {
87
101
  buildFromProjectDir(targetProjectDirectory) {
88
102
  this.targetProjectDirectory = targetProjectDirectory;
89
103
  this.targetProjectName = path_1.default.basename(targetProjectDirectory);
90
- this.projectFiles = (0, getAllFiles_1.getAllFiles)(targetProjectDirectory, ['.ets', '.ts']);
104
+ this.projectFiles = (0, getAllFiles_1.getAllFiles)(targetProjectDirectory, ['.ets', '.ts'], this.options.ignoreFileNames);
91
105
  }
92
106
  buildFromJson(configJsonPath) {
93
107
  if (fs_1.default.existsSync(configJsonPath)) {
@@ -108,15 +122,14 @@ class SceneConfig {
108
122
  logger.error(`Error parsing JSON: ${error}`);
109
123
  return;
110
124
  }
111
- const targetProjectName = configurations.targetProjectName
112
- ? configurations.targetProjectName
113
- : '';
125
+ const targetProjectName = configurations.targetProjectName ? configurations.targetProjectName : '';
114
126
  const targetProjectDirectory = configurations.targetProjectDirectory
115
127
  ? configurations.targetProjectDirectory
116
128
  : '';
117
- const sdks = configurations.sdks
118
- ? configurations.sdks
119
- : [];
129
+ const sdks = configurations.sdks ? configurations.sdks : [];
130
+ if (configurations.options) {
131
+ this.options = Object.assign(Object.assign({}, this.options), configurations.options);
132
+ }
120
133
  this.buildConfig(targetProjectName, targetProjectDirectory, sdks);
121
134
  }
122
135
  else {
package/lib/Scene.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { SceneConfig, Sdk } from './Config';
1
+ import { SceneConfig, SceneOptions, Sdk } from './Config';
2
2
  import { VisibleValue } from './core/common/VisibleValue';
3
3
  import { ArkClass } from './core/model/ArkClass';
4
4
  import { ArkFile } from './core/model/ArkFile';
@@ -23,7 +23,6 @@ export declare class Scene {
23
23
  private realProjectDir;
24
24
  private moduleScenesMap;
25
25
  private modulePath2NameMap;
26
- private globalImportInfos;
27
26
  private moduleSdkMap;
28
27
  private projectSdkMap;
29
28
  private visibleValue;
@@ -37,7 +36,10 @@ export declare class Scene {
37
36
  private ohPkgFilePath;
38
37
  private ohPkgContent;
39
38
  private buildStage;
39
+ private options;
40
40
  constructor();
41
+ getOptions(): SceneOptions;
42
+ clear(): void;
41
43
  getStage(): SceneBuildStage;
42
44
  /**
43
45
  * Build scene object according to the {@link SceneConfig}. This API implements 3 functions.
@@ -47,17 +49,17 @@ export declare class Scene {
47
49
  * @example
48
50
  * 1. Build Scene object from scene config
49
51
 
50
- ```typescript
51
- // build config
52
- const projectDir = ... ...;
53
- const sceneConfig = new SceneConfig();
54
- sceneConfig.buildFromProjectDir(projectDir);
52
+ ```typescript
53
+ // build config
54
+ const projectDir = ... ...;
55
+ const sceneConfig = new SceneConfig();
56
+ sceneConfig.buildFromProjectDir(projectDir);
55
57
 
56
- // build scene
57
- const scene = new Scene();
58
- scene.buildSceneFromProjectDir(sceneConfig);
59
- ```
60
- */
58
+ // build scene
59
+ const scene = new Scene();
60
+ scene.buildSceneFromProjectDir(sceneConfig);
61
+ ```
62
+ */
61
63
  buildSceneFromProjectDir(sceneConfig: SceneConfig): void;
62
64
  /**
63
65
  * Set the basic information of the scene using a config,
@@ -102,16 +104,18 @@ export declare class Scene {
102
104
  * @example
103
105
  * 1. get ArkFile based on file signature.
104
106
 
105
- ```typescript
106
- if (...) {
107
- const fromSignature = new FileSignature();
108
- fromSignature.setProjectName(im.getDeclaringArkFile().getProjectName());
109
- fromSignature.setFileName(fileName);
110
- return scene.getFile(fromSignature);
111
- }
112
- ```
107
+ ```typescript
108
+ if (...) {
109
+ const fromSignature = new FileSignature();
110
+ fromSignature.setProjectName(im.getDeclaringArkFile().getProjectName());
111
+ fromSignature.setFileName(fileName);
112
+ return scene.getFile(fromSignature);
113
+ }
114
+ ```
113
115
  */
114
116
  getFile(fileSignature: FileSignature): ArkFile | null;
117
+ setFile(file: ArkFile): void;
118
+ hasSdkFile(fileSignature: FileSignature): boolean;
115
119
  /**
116
120
  * Get files of a {@link Scene}. Generally, a project includes several ets/ts files that define the different class. We need to generate {@link ArkFile} objects from these ets/ts files.
117
121
  * @returns The array of {@link ArkFile} from `scene.filesMap.values()`.
@@ -140,10 +144,9 @@ export declare class Scene {
140
144
  *```
141
145
  */
142
146
  getFiles(): ArkFile[];
143
- getSdkArkFilesMap(): Map<string, ArkFile>;
147
+ getSdkArkFiles(): ArkFile[];
144
148
  getModuleSdkMap(): Map<string, Sdk[]>;
145
149
  getProjectSdkMap(): Map<string, Sdk>;
146
- getFilesMap(): Map<string, ArkFile>;
147
150
  getNamespace(namespaceSignature: NamespaceSignature): ArkNamespace | null;
148
151
  private getNamespacesMap;
149
152
  getNamespaces(): ArkNamespace[];
@@ -174,16 +177,20 @@ export declare class Scene {
174
177
  * @example
175
178
  * 1. get method from getMethod.
176
179
 
177
- ```typescript
178
- const methodSignatures = this.CHA.resolveCall(xxx, yyy);
179
- for (const methodSignature of methodSignatures) {
180
- const method = this.scene.getMethod(methodSignature);
181
- ... ...
182
- }
183
- ```
180
+ ```typescript
181
+ const methodSignatures = this.CHA.resolveCall(xxx, yyy);
182
+ for (const methodSignature of methodSignatures) {
183
+ const method = this.scene.getMethod(methodSignature);
184
+ ... ...
185
+ }
186
+ ```
184
187
  */
185
188
  getMethods(refresh?: boolean): ArkMethod[];
186
189
  addToMethodsMap(method: ArkMethod): void;
190
+ removeMethod(method: ArkMethod): boolean;
191
+ removeClass(arkClass: ArkClass): boolean;
192
+ removeNamespace(namespace: ArkNamespace): boolean;
193
+ removeFile(file: ArkFile): boolean;
187
194
  hasMainMethod(): boolean;
188
195
  getEntryPoints(): never[];
189
196
  /** get values that is visible in curr scope */
@@ -203,13 +210,14 @@ export declare class Scene {
203
210
  * @example
204
211
  * 1. Infer the type of each class field and method field.
205
212
 
206
- ```typescript
207
- const scene = new Scene();
208
- scene.buildSceneFromProjectDir(sceneConfig);
209
- scene.inferTypes();
210
- ```
213
+ ```typescript
214
+ const scene = new Scene();
215
+ scene.buildSceneFromProjectDir(sceneConfig);
216
+ scene.inferTypes();
217
+ ```
211
218
  */
212
219
  inferTypes(): void;
220
+ private inferFile;
213
221
  /**
214
222
  * Iterate all assignment statements in methods,
215
223
  * and set the type of left operand based on the type of right operand
@@ -218,14 +226,13 @@ export declare class Scene {
218
226
  * @example
219
227
  * 1. Infer simple type when scene building.
220
228
 
221
- ```typescript
222
- let scene = new Scene();
223
- scene.buildSceneFromProjectDir(config);
224
- scene.inferSimpleTypes();
225
- ```
229
+ ```typescript
230
+ let scene = new Scene();
231
+ scene.buildSceneFromProjectDir(config);
232
+ scene.inferSimpleTypes();
233
+ ```
226
234
  */
227
235
  inferSimpleTypes(): void;
228
- collectProjectImportInfos(): void;
229
236
  getClassMap(): Map<FileSignature | NamespaceSignature, ArkClass[]>;
230
237
  getGlobalVariableMap(): Map<FileSignature | NamespaceSignature, Local[]>;
231
238
  getStaticInitMethods(): ArkMethod[];
@@ -239,8 +246,8 @@ export declare class ModuleScene {
239
246
  private modulePath;
240
247
  private moduleOhPkgFilePath;
241
248
  private ohPkgContent;
242
- constructor();
243
- ModuleScenBuilder(moduleName: string, modulePath: string, projectScene: Scene, recursively?: boolean): void;
249
+ constructor(projectScene: Scene);
250
+ ModuleSceneBuilder(moduleName: string, modulePath: string, recursively?: boolean): void;
244
251
  /**
245
252
  * get oh-package.json5
246
253
  */
@@ -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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"}