arkanalyzer 1.0.20 → 1.0.21

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 (279) hide show
  1. package/lib/Config.d.ts +70 -70
  2. package/lib/Config.js +198 -198
  3. package/lib/Scene.d.ts +316 -316
  4. package/lib/Scene.js +1316 -1316
  5. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +28 -28
  6. package/lib/callgraph/algorithm/AbstractAnalysis.js +144 -144
  7. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts +10 -10
  8. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +69 -69
  9. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts +15 -15
  10. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +146 -146
  11. package/lib/callgraph/common/Statistics.d.ts +57 -57
  12. package/lib/callgraph/common/Statistics.js +228 -228
  13. package/lib/callgraph/model/CallGraph.d.ts +96 -96
  14. package/lib/callgraph/model/CallGraph.js +354 -354
  15. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +15 -15
  16. package/lib/callgraph/model/builder/CallGraphBuilder.js +106 -106
  17. package/lib/callgraph/pointerAnalysis/Context.d.ts +37 -37
  18. package/lib/callgraph/pointerAnalysis/Context.js +155 -155
  19. package/lib/callgraph/pointerAnalysis/DummyCallCreator.d.ts +22 -22
  20. package/lib/callgraph/pointerAnalysis/DummyCallCreator.js +104 -104
  21. package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts +5 -5
  22. package/lib/callgraph/pointerAnalysis/PTAUtils.js +46 -46
  23. package/lib/callgraph/pointerAnalysis/Pag.d.ts +261 -261
  24. package/lib/callgraph/pointerAnalysis/Pag.js +930 -930
  25. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +157 -157
  26. package/lib/callgraph/pointerAnalysis/PagBuilder.js +1399 -1399
  27. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +72 -72
  28. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +573 -573
  29. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +15 -15
  30. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +81 -81
  31. package/lib/callgraph/pointerAnalysis/PtsDS.d.ts +80 -80
  32. package/lib/callgraph/pointerAnalysis/PtsDS.js +308 -308
  33. package/lib/core/base/Constant.d.ts +48 -48
  34. package/lib/core/base/Constant.js +103 -103
  35. package/lib/core/base/Decorator.d.ts +15 -15
  36. package/lib/core/base/Decorator.js +46 -46
  37. package/lib/core/base/DefUseChain.d.ts +8 -8
  38. package/lib/core/base/DefUseChain.js +25 -25
  39. package/lib/core/base/Expr.d.ts +340 -340
  40. package/lib/core/base/Expr.js +917 -917
  41. package/lib/core/base/Local.d.ts +104 -104
  42. package/lib/core/base/Local.js +176 -176
  43. package/lib/core/base/Position.d.ts +30 -30
  44. package/lib/core/base/Position.js +147 -147
  45. package/lib/core/base/Ref.d.ts +173 -173
  46. package/lib/core/base/Ref.js +374 -374
  47. package/lib/core/base/Stmt.d.ts +237 -237
  48. package/lib/core/base/Stmt.js +525 -525
  49. package/lib/core/base/Trap.d.ts +8 -8
  50. package/lib/core/base/Trap.js +30 -30
  51. package/lib/core/base/Type.d.ts +308 -308
  52. package/lib/core/base/Type.js +639 -639
  53. package/lib/core/base/TypeExpr.d.ts +71 -71
  54. package/lib/core/base/TypeExpr.js +155 -155
  55. package/lib/core/base/Value.d.ts +32 -32
  56. package/lib/core/base/Value.js +16 -16
  57. package/lib/core/common/ArkError.d.ts +14 -14
  58. package/lib/core/common/ArkError.js +28 -28
  59. package/lib/core/common/ArkIRTransformer.d.ts +67 -67
  60. package/lib/core/common/ArkIRTransformer.js +690 -690
  61. package/lib/core/common/ArkValueTransformer.d.ts +89 -89
  62. package/lib/core/common/ArkValueTransformer.js +1478 -1478
  63. package/lib/core/common/Builtin.d.ts +36 -36
  64. package/lib/core/common/Builtin.js +81 -81
  65. package/lib/core/common/Const.d.ts +21 -21
  66. package/lib/core/common/Const.js +43 -43
  67. package/lib/core/common/DummyMainCreater.d.ts +46 -46
  68. package/lib/core/common/DummyMainCreater.js +319 -319
  69. package/lib/core/common/EtsConst.d.ts +73 -73
  70. package/lib/core/common/EtsConst.js +1021 -1021
  71. package/lib/core/common/ExprUseReplacer.d.ts +21 -21
  72. package/lib/core/common/ExprUseReplacer.js +124 -124
  73. package/lib/core/common/IRInference.d.ts +36 -36
  74. package/lib/core/common/IRInference.d.ts.map +1 -1
  75. package/lib/core/common/IRInference.js +651 -648
  76. package/lib/core/common/IRUtils.d.ts +18 -18
  77. package/lib/core/common/IRUtils.js +141 -141
  78. package/lib/core/common/ModelUtils.d.ts +70 -70
  79. package/lib/core/common/ModelUtils.js +712 -712
  80. package/lib/core/common/RefUseReplacer.d.ts +13 -13
  81. package/lib/core/common/RefUseReplacer.js +52 -52
  82. package/lib/core/common/SdkUtils.d.ts +8 -8
  83. package/lib/core/common/SdkUtils.js +105 -105
  84. package/lib/core/common/StmtDefReplacer.d.ts +12 -12
  85. package/lib/core/common/StmtDefReplacer.js +41 -41
  86. package/lib/core/common/StmtUseReplacer.d.ts +16 -16
  87. package/lib/core/common/StmtUseReplacer.js +108 -108
  88. package/lib/core/common/TSConst.d.ts +18 -18
  89. package/lib/core/common/TSConst.js +36 -36
  90. package/lib/core/common/TypeInference.d.ts +102 -102
  91. package/lib/core/common/TypeInference.js +748 -748
  92. package/lib/core/common/ValueUtil.d.ts +12 -12
  93. package/lib/core/common/ValueUtil.js +54 -54
  94. package/lib/core/common/VisibleValue.d.ts +36 -36
  95. package/lib/core/common/VisibleValue.js +212 -212
  96. package/lib/core/dataflow/DataflowProblem.d.ts +20 -20
  97. package/lib/core/dataflow/DataflowProblem.js +20 -20
  98. package/lib/core/dataflow/DataflowResult.d.ts +7 -7
  99. package/lib/core/dataflow/DataflowResult.js +26 -26
  100. package/lib/core/dataflow/DataflowSolver.d.ts +43 -43
  101. package/lib/core/dataflow/DataflowSolver.js +307 -307
  102. package/lib/core/dataflow/Edge.d.ts +11 -11
  103. package/lib/core/dataflow/Edge.js +31 -31
  104. package/lib/core/dataflow/Fact.d.ts +6 -6
  105. package/lib/core/dataflow/Fact.js +24 -24
  106. package/lib/core/dataflow/GenericDataFlow.d.ts +142 -142
  107. package/lib/core/dataflow/GenericDataFlow.js +109 -109
  108. package/lib/core/dataflow/ReachingDef.d.ts +62 -62
  109. package/lib/core/dataflow/ReachingDef.js +168 -168
  110. package/lib/core/dataflow/UndefinedVariable.d.ts +45 -45
  111. package/lib/core/dataflow/UndefinedVariable.js +288 -288
  112. package/lib/core/dataflow/Util.d.ts +9 -9
  113. package/lib/core/dataflow/Util.js +64 -64
  114. package/lib/core/graph/BaseExplicitGraph.d.ts +58 -58
  115. package/lib/core/graph/BaseExplicitGraph.js +157 -157
  116. package/lib/core/graph/BaseImplicitGraph.d.ts +77 -77
  117. package/lib/core/graph/BaseImplicitGraph.js +78 -78
  118. package/lib/core/graph/BasicBlock.d.ts +104 -104
  119. package/lib/core/graph/BasicBlock.js +280 -280
  120. package/lib/core/graph/Cfg.d.ts +59 -59
  121. package/lib/core/graph/Cfg.js +282 -282
  122. package/lib/core/graph/DependsGraph.d.ts +35 -35
  123. package/lib/core/graph/DependsGraph.js +87 -87
  124. package/lib/core/graph/DominanceFinder.d.ts +15 -15
  125. package/lib/core/graph/DominanceFinder.js +121 -121
  126. package/lib/core/graph/DominanceTree.d.ts +12 -12
  127. package/lib/core/graph/DominanceTree.js +70 -70
  128. package/lib/core/graph/GraphTraits.d.ts +7 -7
  129. package/lib/core/graph/GraphTraits.js +16 -16
  130. package/lib/core/graph/Scc.d.ts +61 -61
  131. package/lib/core/graph/Scc.js +222 -222
  132. package/lib/core/graph/ViewTree.d.ts +114 -114
  133. package/lib/core/graph/ViewTree.js +16 -16
  134. package/lib/core/graph/builder/CfgBuilder.d.ts +176 -176
  135. package/lib/core/graph/builder/CfgBuilder.js +1139 -1139
  136. package/lib/core/graph/builder/ConditionBuilder.d.ts +15 -15
  137. package/lib/core/graph/builder/ConditionBuilder.js +252 -252
  138. package/lib/core/graph/builder/LoopBuilder.d.ts +20 -20
  139. package/lib/core/graph/builder/LoopBuilder.js +251 -251
  140. package/lib/core/graph/builder/SwitchBuilder.d.ts +11 -11
  141. package/lib/core/graph/builder/SwitchBuilder.js +152 -152
  142. package/lib/core/graph/builder/TrapBuilder.d.ts +16 -16
  143. package/lib/core/graph/builder/TrapBuilder.js +272 -272
  144. package/lib/core/graph/builder/ViewTreeBuilder.d.ts +203 -203
  145. package/lib/core/graph/builder/ViewTreeBuilder.js +1055 -1055
  146. package/lib/core/model/ArkBaseModel.d.ts +59 -59
  147. package/lib/core/model/ArkBaseModel.js +274 -274
  148. package/lib/core/model/ArkBody.d.ts +24 -24
  149. package/lib/core/model/ArkBody.js +65 -65
  150. package/lib/core/model/ArkClass.d.ts +206 -206
  151. package/lib/core/model/ArkClass.js +439 -439
  152. package/lib/core/model/ArkExport.d.ts +72 -72
  153. package/lib/core/model/ArkExport.js +147 -147
  154. package/lib/core/model/ArkField.d.ts +62 -62
  155. package/lib/core/model/ArkField.js +113 -113
  156. package/lib/core/model/ArkFile.d.ts +131 -131
  157. package/lib/core/model/ArkFile.js +267 -267
  158. package/lib/core/model/ArkImport.d.ts +44 -44
  159. package/lib/core/model/ArkImport.js +108 -108
  160. package/lib/core/model/ArkMetadata.d.ts +31 -31
  161. package/lib/core/model/ArkMetadata.js +55 -55
  162. package/lib/core/model/ArkMethod.d.ts +261 -261
  163. package/lib/core/model/ArkMethod.js +592 -592
  164. package/lib/core/model/ArkNamespace.d.ts +66 -66
  165. package/lib/core/model/ArkNamespace.js +209 -209
  166. package/lib/core/model/ArkSignature.d.ts +162 -162
  167. package/lib/core/model/ArkSignature.js +379 -379
  168. package/lib/core/model/builder/ArkClassBuilder.d.ts +12 -12
  169. package/lib/core/model/builder/ArkClassBuilder.js +454 -454
  170. package/lib/core/model/builder/ArkExportBuilder.d.ts +24 -24
  171. package/lib/core/model/builder/ArkExportBuilder.js +210 -210
  172. package/lib/core/model/builder/ArkFieldBuilder.d.ts +8 -8
  173. package/lib/core/model/builder/ArkFieldBuilder.js +193 -193
  174. package/lib/core/model/builder/ArkFileBuilder.d.ts +9 -9
  175. package/lib/core/model/builder/ArkFileBuilder.js +165 -165
  176. package/lib/core/model/builder/ArkImportBuilder.d.ts +4 -4
  177. package/lib/core/model/builder/ArkImportBuilder.js +128 -128
  178. package/lib/core/model/builder/ArkMethodBuilder.d.ts +63 -63
  179. package/lib/core/model/builder/ArkMethodBuilder.js +486 -486
  180. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts +5 -5
  181. package/lib/core/model/builder/ArkNamespaceBuilder.js +205 -205
  182. package/lib/core/model/builder/ArkSignatureBuilder.d.ts +8 -8
  183. package/lib/core/model/builder/ArkSignatureBuilder.js +40 -40
  184. package/lib/core/model/builder/BodyBuilder.d.ts +55 -30
  185. package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
  186. package/lib/core/model/builder/BodyBuilder.js +542 -371
  187. package/lib/core/model/builder/builderUtils.d.ts +18 -18
  188. package/lib/core/model/builder/builderUtils.js +558 -558
  189. package/lib/index.d.ts +82 -80
  190. package/lib/index.d.ts.map +1 -1
  191. package/lib/index.js +201 -196
  192. package/lib/save/ArkStream.d.ts +23 -23
  193. package/lib/save/ArkStream.js +83 -83
  194. package/lib/save/DotPrinter.d.ts +43 -43
  195. package/lib/save/DotPrinter.js +170 -170
  196. package/lib/save/GraphPrinter.d.ts +16 -16
  197. package/lib/save/GraphPrinter.js +134 -134
  198. package/lib/save/JsonPrinter.d.ts +30 -30
  199. package/lib/save/JsonPrinter.js +580 -580
  200. package/lib/save/Printer.d.ts +12 -12
  201. package/lib/save/Printer.js +27 -27
  202. package/lib/save/PrinterBuilder.d.ts +53 -53
  203. package/lib/save/PrinterBuilder.js +145 -145
  204. package/lib/save/ViewTreePrinter.d.ts +14 -14
  205. package/lib/save/ViewTreePrinter.js +123 -123
  206. package/lib/save/arkir/ArkIRClassPrinter.d.ts +13 -13
  207. package/lib/save/arkir/ArkIRClassPrinter.js +92 -92
  208. package/lib/save/arkir/ArkIRFieldPrinter.d.ts +11 -11
  209. package/lib/save/arkir/ArkIRFieldPrinter.js +64 -64
  210. package/lib/save/arkir/ArkIRFilePrinter.d.ts +12 -12
  211. package/lib/save/arkir/ArkIRFilePrinter.js +54 -54
  212. package/lib/save/arkir/ArkIRMethodPrinter.d.ts +16 -16
  213. package/lib/save/arkir/ArkIRMethodPrinter.js +159 -159
  214. package/lib/save/arkir/ArkIRNamespacePrinter.d.ts +11 -11
  215. package/lib/save/arkir/ArkIRNamespacePrinter.js +66 -66
  216. package/lib/save/base/BasePrinter.d.ts +23 -23
  217. package/lib/save/base/BasePrinter.js +70 -70
  218. package/lib/save/base/ExportPrinter.d.ts +8 -8
  219. package/lib/save/base/ExportPrinter.js +67 -67
  220. package/lib/save/base/ImportPrinter.d.ts +9 -9
  221. package/lib/save/base/ImportPrinter.js +92 -92
  222. package/lib/save/base/PrinterUtils.d.ts +24 -24
  223. package/lib/save/base/PrinterUtils.js +208 -208
  224. package/lib/save/serializeArkIR.d.ts +8 -8
  225. package/lib/save/serializeArkIR.js +294 -294
  226. package/lib/save/source/SourceBase.d.ts +22 -22
  227. package/lib/save/source/SourceBase.js +64 -64
  228. package/lib/save/source/SourceBody.d.ts +58 -58
  229. package/lib/save/source/SourceBody.js +296 -296
  230. package/lib/save/source/SourceClass.d.ts +25 -25
  231. package/lib/save/source/SourceClass.js +187 -187
  232. package/lib/save/source/SourceField.d.ts +13 -13
  233. package/lib/save/source/SourceField.js +73 -73
  234. package/lib/save/source/SourceFilePrinter.d.ts +12 -12
  235. package/lib/save/source/SourceFilePrinter.js +69 -69
  236. package/lib/save/source/SourceMethod.d.ts +22 -22
  237. package/lib/save/source/SourceMethod.d.ts.map +1 -1
  238. package/lib/save/source/SourceMethod.js +196 -193
  239. package/lib/save/source/SourceNamespace.d.ts +11 -11
  240. package/lib/save/source/SourceNamespace.js +83 -83
  241. package/lib/save/source/SourceStmt.d.ts +178 -178
  242. package/lib/save/source/SourceStmt.js +838 -838
  243. package/lib/save/source/SourceTransformer.d.ts +46 -46
  244. package/lib/save/source/SourceTransformer.js +446 -446
  245. package/lib/transformer/FunctionTransformer.d.ts +2 -2
  246. package/lib/transformer/FunctionTransformer.js +17 -17
  247. package/lib/transformer/SceneTransformer.d.ts +2 -2
  248. package/lib/transformer/SceneTransformer.js +17 -17
  249. package/lib/transformer/StaticSingleAssignmentFormer.d.ts +12 -12
  250. package/lib/transformer/StaticSingleAssignmentFormer.js +259 -259
  251. package/lib/transformer/Transformer.d.ts +6 -6
  252. package/lib/transformer/Transformer.js +22 -22
  253. package/lib/utils/AstTreeUtils.d.ts +4 -4
  254. package/lib/utils/AstTreeUtils.js +26 -26
  255. package/lib/utils/CfgStructualAnalysis.d.ts +110 -110
  256. package/lib/utils/CfgStructualAnalysis.js +1277 -1277
  257. package/lib/utils/FileUtils.d.ts +18 -18
  258. package/lib/utils/FileUtils.js +135 -135
  259. package/lib/utils/SparseBitVector.d.ts +100 -100
  260. package/lib/utils/SparseBitVector.js +445 -445
  261. package/lib/utils/callGraphUtils.d.ts +30 -30
  262. package/lib/utils/callGraphUtils.js +205 -205
  263. package/lib/utils/crypto_utils.d.ts +5 -5
  264. package/lib/utils/crypto_utils.js +57 -57
  265. package/lib/utils/entryMethodUtils.d.ts +13 -13
  266. package/lib/utils/entryMethodUtils.js +110 -110
  267. package/lib/utils/getAllFiles.d.ts +9 -9
  268. package/lib/utils/getAllFiles.js +90 -90
  269. package/lib/utils/json5parser.d.ts +6 -6
  270. package/lib/utils/json5parser.js +146 -146
  271. package/lib/utils/logger.d.ts +18 -18
  272. package/lib/utils/logger.d.ts.map +1 -1
  273. package/lib/utils/logger.js +97 -90
  274. package/lib/utils/pathTransfer.d.ts +1 -1
  275. package/lib/utils/pathTransfer.js +25 -25
  276. package/node_modules/json5/lib/cli.js +0 -0
  277. package/node_modules/ohos-typescript/bin/tsc +0 -0
  278. package/node_modules/ohos-typescript/bin/tsserver +0 -0
  279. package/package.json +3 -3
package/lib/Scene.d.ts CHANGED
@@ -1,317 +1,317 @@
1
- import { SceneConfig, SceneOptions, Sdk } from './Config';
2
- import { VisibleValue } from './core/common/VisibleValue';
3
- import { ArkClass } from './core/model/ArkClass';
4
- import { ArkFile } from './core/model/ArkFile';
5
- import { ArkMethod } from './core/model/ArkMethod';
6
- import { ArkNamespace } from './core/model/ArkNamespace';
7
- import { ClassSignature, FileSignature, MethodSignature, NamespaceSignature } from './core/model/ArkSignature';
8
- import { Local } from './core/base/Local';
9
- import { ArkExport } from './core/model/ArkExport';
10
- import { CallGraph } from './callgraph/model/CallGraph';
11
- declare enum SceneBuildStage {
12
- BUILD_INIT = 0,
13
- CLASS_DONE = 1,
14
- METHOD_DONE = 2,
15
- CLASS_COLLECTED = 3,
16
- METHOD_COLLECTED = 4,
17
- SDK_INFERRED = 5,
18
- TYPE_INFERRED = 6
19
- }
20
- /**
21
- * The Scene class includes everything in the analyzed project.
22
- * We should be able to re-generate the project's code based on this class.
23
- */
24
- export declare class Scene {
25
- private projectName;
26
- private projectFiles;
27
- private realProjectDir;
28
- private moduleScenesMap;
29
- private modulePath2NameMap;
30
- private moduleSdkMap;
31
- private projectSdkMap;
32
- private visibleValue;
33
- private filesMap;
34
- private namespacesMap;
35
- private classesMap;
36
- private methodsMap;
37
- private sdkArkFilesMap;
38
- private sdkGlobalMap;
39
- private ohPkgContentMap;
40
- private ohPkgFilePath;
41
- private ohPkgContent;
42
- private overRides;
43
- private overRideDependencyMap;
44
- private globalModule2PathMapping?;
45
- private baseUrl?;
46
- private buildStage;
47
- private options;
48
- private indexPathArray;
49
- private unhandledFilePaths;
50
- private unhandledSdkFilePaths;
51
- constructor();
52
- getOptions(): SceneOptions;
53
- getOverRides(): Map<string, string>;
54
- getOverRideDependencyMap(): Map<string, unknown>;
55
- clear(): void;
56
- getStage(): SceneBuildStage;
57
- /**
58
- * Build scene object according to the {@link SceneConfig}. This API implements 3 functions.
59
- * First is to build scene object from {@link SceneConfig}, second is to generate {@link ArkFile}s,
60
- * and the last is to collect project import infomation.
61
- * @param sceneConfig - a sceneConfig object, which is usally defined by user or Json file.
62
- * @example
63
- * 1. Build Scene object from scene config
64
-
65
- ```typescript
66
- // build config
67
- const projectDir = ... ...;
68
- const sceneConfig = new SceneConfig();
69
- sceneConfig.buildFromProjectDir(projectDir);
70
-
71
- // build scene
72
- const scene = new Scene();
73
- scene.buildSceneFromProjectDir(sceneConfig);
74
- ```
75
- */
76
- buildSceneFromProjectDir(sceneConfig: SceneConfig): void;
77
- buildSceneFromFiles(sceneConfig: SceneConfig): void;
78
- /**
79
- * Set the basic information of the scene using a config,
80
- * such as the project's name, real path and files.
81
- * @param sceneConfig - the config used to set the basic information of scene.
82
- */
83
- buildBasicInfo(sceneConfig: SceneConfig): void;
84
- private parseBuildProfile;
85
- private parseOhPackage;
86
- private findTsConfigInfoDeeply;
87
- private addTsConfigInfo;
88
- private addDefaultConstructors;
89
- private buildAllMethodBody;
90
- private genArkFiles;
91
- private getFilesOrderByDependency;
92
- private getDependencyFilesDeeply;
93
- private isRepeatBuildFile;
94
- private addArkFile2ModuleScene;
95
- private findDependencyFiles;
96
- private parseFrom;
97
- private findDependenciesByTsConfig;
98
- private parseTsConfigParms;
99
- private processFuzzyMapping;
100
- private findDependenciesByRule;
101
- private findFilesByPathArray;
102
- private findFilesByExtNameArray;
103
- private findRelativeDependenciesByOhPkg;
104
- private findDependenciesByOhPkg;
105
- private getDependenciesMapping;
106
- private getOriginPath;
107
- private addFileNode2DependencyGrap;
108
- private buildSdk;
109
- /**
110
- * Build the scene for harmony project. It resolves the file path of the project first, and then fetches
111
- * dependencies from this file. Next, build a `ModuleScene` for this project to generate {@link ArkFile}. Finally,
112
- * it build bodies of all methods, generate extended classes, and add DefaultConstructors.
113
- */
114
- buildScene4HarmonyProject(): void;
115
- private buildOhPkgContentMap;
116
- buildModuleScene(moduleName: string, modulePath: string, supportFileExts: string[]): void;
117
- private processModuleOhPkgContent;
118
- /**
119
- * Get the absolute path of current project.
120
- * @returns The real project's directiory.
121
- * @example
122
- * 1. get real project directory, such as:
123
- ```typescript
124
- let projectDir = projectScene.getRealProjectDir();
125
- ```
126
- */
127
- getRealProjectDir(): string;
128
- /**
129
- * Returns the **string** name of the project.
130
- * @returns The name of the project.
131
- */
132
- getProjectName(): string;
133
- getProjectFiles(): string[];
134
- getSdkGlobal(globalName: string): ArkExport | null;
135
- /**
136
- * Returns the file based on its signature.
137
- * If no file can be found according to the input signature, **null** will be returned.
138
- * A typical {@link ArkFile} contains: file's name (i.e., its relative path), project's name,
139
- * project's dir, file's signature etc.
140
- * @param fileSignature - the signature of file.
141
- * @returns a file defined by ArkAnalyzer. **null** will be returned if no file could be found.
142
- * @example
143
- * 1. get ArkFile based on file signature.
144
-
145
- ```typescript
146
- if (...) {
147
- const fromSignature = new FileSignature();
148
- fromSignature.setProjectName(im.getDeclaringArkFile().getProjectName());
149
- fromSignature.setFileName(fileName);
150
- return scene.getFile(fromSignature);
151
- }
152
- ```
153
- */
154
- getFile(fileSignature: FileSignature): ArkFile | null;
155
- getUnhandledFilePaths(): string[];
156
- getUnhandledSdkFilePaths(): string[];
157
- setFile(file: ArkFile): void;
158
- hasSdkFile(fileSignature: FileSignature): boolean;
159
- /**
160
- * Get files of a {@link Scene}. Generally, a project includes several ets/ts files that define the different
161
- * class. We need to generate {@link ArkFile} objects from these ets/ts files.
162
- * @returns The array of {@link ArkFile} from `scene.filesMap.values()`.
163
- * @example
164
- * 1. In inferSimpleTypes() to check arkClass and arkMethod.
165
- * ```typescript
166
- * public inferSimpleTypes() {
167
- * for (let arkFile of this.getFiles()) {
168
- * for (let arkClass of arkFile.getClasses()) {
169
- * for (let arkMethod of arkClass.getMethods()) {
170
- * // ... ...;
171
- * }
172
- * }
173
- * }
174
- * }
175
- * ```
176
- * 2. To iterate each method
177
- * ```typescript
178
- * for (const file of this.getFiles()) {
179
- * for (const cls of file.getClasses()) {
180
- * for (const method of cls.getMethods()) {
181
- * // ... ...
182
- * }
183
- * }
184
- * }
185
- *```
186
- */
187
- getFiles(): ArkFile[];
188
- getSdkArkFiles(): ArkFile[];
189
- getModuleSdkMap(): Map<string, Sdk[]>;
190
- getProjectSdkMap(): Map<string, Sdk>;
191
- getNamespace(namespaceSignature: NamespaceSignature): ArkNamespace | null;
192
- private getNamespaceBySignature;
193
- private getNamespacesMap;
194
- getNamespaces(): ArkNamespace[];
195
- /**
196
- * Returns the class according to the input class signature.
197
- * @param classSignature - signature of the class to be obtained.
198
- * @returns A class.
199
- */
200
- getClass(classSignature: ClassSignature): ArkClass | null;
201
- private getClassesMap;
202
- getClasses(): ArkClass[];
203
- getMethod(methodSignature: MethodSignature, refresh?: boolean): ArkMethod | null;
204
- private getMethodsMap;
205
- /**
206
- * Returns the method associated with the method signature.
207
- * If no method is associated with this signature, **null** will be returned.
208
- * An {@link ArkMethod} includes:
209
- * - Name: the **string** name of method.
210
- * - Code: the **string** code of the method.
211
- * - Line: a **number** indicating the line location, initialized as -1.
212
- * - Column: a **number** indicating the column location, initialized as -1.
213
- * - Parameters & Types of parameters: the parameters of method and their types.
214
- * - View tree: the view tree of the method.
215
- * - ...
216
- *
217
- * @param methodSignature - the signature of method.
218
- * @returns The method associated with the method signature.
219
- * @example
220
- * 1. get method from getMethod.
221
-
222
- ```typescript
223
- const methodSignatures = this.CHA.resolveCall(xxx, yyy);
224
- for (const methodSignature of methodSignatures) {
225
- const method = this.scene.getMethod(methodSignature);
226
- ... ...
227
- }
228
- ```
229
- */
230
- getMethods(): ArkMethod[];
231
- addToMethodsMap(method: ArkMethod): void;
232
- removeMethod(method: ArkMethod): boolean;
233
- removeClass(arkClass: ArkClass): boolean;
234
- removeNamespace(namespace: ArkNamespace): boolean;
235
- removeFile(file: ArkFile): boolean;
236
- hasMainMethod(): boolean;
237
- getEntryPoints(): never[];
238
- /** get values that is visible in curr scope */
239
- getVisibleValue(): VisibleValue;
240
- getOhPkgContent(): {
241
- [k: string]: unknown;
242
- };
243
- getOhPkgContentMap(): Map<string, {
244
- [k: string]: unknown;
245
- }>;
246
- getOhPkgFilePath(): string;
247
- makeCallGraphCHA(entryPoints: MethodSignature[]): CallGraph;
248
- makeCallGraphRTA(entryPoints: MethodSignature[]): CallGraph;
249
- /**
250
- * Infer type for each non-default method. It infers the type of each field/local/reference.
251
- * For example, the statement `let b = 5;`, the type of local `b` is `NumberType`; and for the statement `let s =
252
- * 'hello';`, the type of local `s` is `StringType`. The detailed types are defined in the Type.ts file.
253
- * @example
254
- * 1. Infer the type of each class field and method field.
255
- ```typescript
256
- const scene = new Scene();
257
- scene.buildSceneFromProjectDir(sceneConfig);
258
- scene.inferTypes();
259
- ```
260
- */
261
- inferTypes(): void;
262
- /**
263
- * Iterate all assignment statements in methods,
264
- * and set the type of left operand based on the type of right operand
265
- * if the left operand is a local variable as well as an unknown.
266
- * @Deprecated
267
- * @example
268
- * 1. Infer simple type when scene building.
269
-
270
- ```typescript
271
- let scene = new Scene();
272
- scene.buildSceneFromProjectDir(config);
273
- scene.inferSimpleTypes();
274
- ```
275
- */
276
- inferSimpleTypes(): void;
277
- getClassMap(): Map<FileSignature | NamespaceSignature, ArkClass[]>;
278
- getGlobalVariableMap(): Map<FileSignature | NamespaceSignature, Local[]>;
279
- getStaticInitMethods(): ArkMethod[];
280
- buildClassDone(): boolean;
281
- getModuleScene(moduleName: string): ModuleScene | undefined;
282
- getModuleSceneMap(): Map<string, ModuleScene>;
283
- getGlobalModule2PathMapping(): {
284
- [k: string]: string[];
285
- } | undefined;
286
- getbaseUrl(): string | undefined;
287
- }
288
- export declare class ModuleScene {
289
- private projectScene;
290
- private moduleName;
291
- private modulePath;
292
- private moduleFileMap;
293
- private moduleOhPkgFilePath;
294
- private ohPkgContent;
295
- constructor(projectScene: Scene);
296
- ModuleSceneBuilder(moduleName: string, modulePath: string, supportFileExts: string[], recursively?: boolean): void;
297
- ModuleScenePartiallyBuilder(moduleName: string, modulePath: string): void;
298
- /**
299
- * get oh-package.json5
300
- */
301
- private getModuleOhPkgFilePath;
302
- /**
303
- * get nodule name
304
- * @returns return module name
305
- */
306
- getModuleName(): string;
307
- getModulePath(): string;
308
- getOhPkgFilePath(): string;
309
- getOhPkgContent(): {
310
- [k: string]: unknown;
311
- };
312
- getModuleFilesMap(): Map<string, ArkFile>;
313
- addArkFile(arkFile: ArkFile): void;
314
- private genArkFiles;
315
- }
316
- export {};
1
+ import { SceneConfig, SceneOptions, Sdk } from './Config';
2
+ import { VisibleValue } from './core/common/VisibleValue';
3
+ import { ArkClass } from './core/model/ArkClass';
4
+ import { ArkFile } from './core/model/ArkFile';
5
+ import { ArkMethod } from './core/model/ArkMethod';
6
+ import { ArkNamespace } from './core/model/ArkNamespace';
7
+ import { ClassSignature, FileSignature, MethodSignature, NamespaceSignature } from './core/model/ArkSignature';
8
+ import { Local } from './core/base/Local';
9
+ import { ArkExport } from './core/model/ArkExport';
10
+ import { CallGraph } from './callgraph/model/CallGraph';
11
+ declare enum SceneBuildStage {
12
+ BUILD_INIT = 0,
13
+ CLASS_DONE = 1,
14
+ METHOD_DONE = 2,
15
+ CLASS_COLLECTED = 3,
16
+ METHOD_COLLECTED = 4,
17
+ SDK_INFERRED = 5,
18
+ TYPE_INFERRED = 6
19
+ }
20
+ /**
21
+ * The Scene class includes everything in the analyzed project.
22
+ * We should be able to re-generate the project's code based on this class.
23
+ */
24
+ export declare class Scene {
25
+ private projectName;
26
+ private projectFiles;
27
+ private realProjectDir;
28
+ private moduleScenesMap;
29
+ private modulePath2NameMap;
30
+ private moduleSdkMap;
31
+ private projectSdkMap;
32
+ private visibleValue;
33
+ private filesMap;
34
+ private namespacesMap;
35
+ private classesMap;
36
+ private methodsMap;
37
+ private sdkArkFilesMap;
38
+ private sdkGlobalMap;
39
+ private ohPkgContentMap;
40
+ private ohPkgFilePath;
41
+ private ohPkgContent;
42
+ private overRides;
43
+ private overRideDependencyMap;
44
+ private globalModule2PathMapping?;
45
+ private baseUrl?;
46
+ private buildStage;
47
+ private options;
48
+ private indexPathArray;
49
+ private unhandledFilePaths;
50
+ private unhandledSdkFilePaths;
51
+ constructor();
52
+ getOptions(): SceneOptions;
53
+ getOverRides(): Map<string, string>;
54
+ getOverRideDependencyMap(): Map<string, unknown>;
55
+ clear(): void;
56
+ getStage(): SceneBuildStage;
57
+ /**
58
+ * Build scene object according to the {@link SceneConfig}. This API implements 3 functions.
59
+ * First is to build scene object from {@link SceneConfig}, second is to generate {@link ArkFile}s,
60
+ * and the last is to collect project import infomation.
61
+ * @param sceneConfig - a sceneConfig object, which is usally defined by user or Json file.
62
+ * @example
63
+ * 1. Build Scene object from scene config
64
+
65
+ ```typescript
66
+ // build config
67
+ const projectDir = ... ...;
68
+ const sceneConfig = new SceneConfig();
69
+ sceneConfig.buildFromProjectDir(projectDir);
70
+
71
+ // build scene
72
+ const scene = new Scene();
73
+ scene.buildSceneFromProjectDir(sceneConfig);
74
+ ```
75
+ */
76
+ buildSceneFromProjectDir(sceneConfig: SceneConfig): void;
77
+ buildSceneFromFiles(sceneConfig: SceneConfig): void;
78
+ /**
79
+ * Set the basic information of the scene using a config,
80
+ * such as the project's name, real path and files.
81
+ * @param sceneConfig - the config used to set the basic information of scene.
82
+ */
83
+ buildBasicInfo(sceneConfig: SceneConfig): void;
84
+ private parseBuildProfile;
85
+ private parseOhPackage;
86
+ private findTsConfigInfoDeeply;
87
+ private addTsConfigInfo;
88
+ private addDefaultConstructors;
89
+ private buildAllMethodBody;
90
+ private genArkFiles;
91
+ private getFilesOrderByDependency;
92
+ private getDependencyFilesDeeply;
93
+ private isRepeatBuildFile;
94
+ private addArkFile2ModuleScene;
95
+ private findDependencyFiles;
96
+ private parseFrom;
97
+ private findDependenciesByTsConfig;
98
+ private parseTsConfigParms;
99
+ private processFuzzyMapping;
100
+ private findDependenciesByRule;
101
+ private findFilesByPathArray;
102
+ private findFilesByExtNameArray;
103
+ private findRelativeDependenciesByOhPkg;
104
+ private findDependenciesByOhPkg;
105
+ private getDependenciesMapping;
106
+ private getOriginPath;
107
+ private addFileNode2DependencyGrap;
108
+ private buildSdk;
109
+ /**
110
+ * Build the scene for harmony project. It resolves the file path of the project first, and then fetches
111
+ * dependencies from this file. Next, build a `ModuleScene` for this project to generate {@link ArkFile}. Finally,
112
+ * it build bodies of all methods, generate extended classes, and add DefaultConstructors.
113
+ */
114
+ buildScene4HarmonyProject(): void;
115
+ private buildOhPkgContentMap;
116
+ buildModuleScene(moduleName: string, modulePath: string, supportFileExts: string[]): void;
117
+ private processModuleOhPkgContent;
118
+ /**
119
+ * Get the absolute path of current project.
120
+ * @returns The real project's directiory.
121
+ * @example
122
+ * 1. get real project directory, such as:
123
+ ```typescript
124
+ let projectDir = projectScene.getRealProjectDir();
125
+ ```
126
+ */
127
+ getRealProjectDir(): string;
128
+ /**
129
+ * Returns the **string** name of the project.
130
+ * @returns The name of the project.
131
+ */
132
+ getProjectName(): string;
133
+ getProjectFiles(): string[];
134
+ getSdkGlobal(globalName: string): ArkExport | null;
135
+ /**
136
+ * Returns the file based on its signature.
137
+ * If no file can be found according to the input signature, **null** will be returned.
138
+ * A typical {@link ArkFile} contains: file's name (i.e., its relative path), project's name,
139
+ * project's dir, file's signature etc.
140
+ * @param fileSignature - the signature of file.
141
+ * @returns a file defined by ArkAnalyzer. **null** will be returned if no file could be found.
142
+ * @example
143
+ * 1. get ArkFile based on file signature.
144
+
145
+ ```typescript
146
+ if (...) {
147
+ const fromSignature = new FileSignature();
148
+ fromSignature.setProjectName(im.getDeclaringArkFile().getProjectName());
149
+ fromSignature.setFileName(fileName);
150
+ return scene.getFile(fromSignature);
151
+ }
152
+ ```
153
+ */
154
+ getFile(fileSignature: FileSignature): ArkFile | null;
155
+ getUnhandledFilePaths(): string[];
156
+ getUnhandledSdkFilePaths(): string[];
157
+ setFile(file: ArkFile): void;
158
+ hasSdkFile(fileSignature: FileSignature): boolean;
159
+ /**
160
+ * Get files of a {@link Scene}. Generally, a project includes several ets/ts files that define the different
161
+ * class. We need to generate {@link ArkFile} objects from these ets/ts files.
162
+ * @returns The array of {@link ArkFile} from `scene.filesMap.values()`.
163
+ * @example
164
+ * 1. In inferSimpleTypes() to check arkClass and arkMethod.
165
+ * ```typescript
166
+ * public inferSimpleTypes() {
167
+ * for (let arkFile of this.getFiles()) {
168
+ * for (let arkClass of arkFile.getClasses()) {
169
+ * for (let arkMethod of arkClass.getMethods()) {
170
+ * // ... ...;
171
+ * }
172
+ * }
173
+ * }
174
+ * }
175
+ * ```
176
+ * 2. To iterate each method
177
+ * ```typescript
178
+ * for (const file of this.getFiles()) {
179
+ * for (const cls of file.getClasses()) {
180
+ * for (const method of cls.getMethods()) {
181
+ * // ... ...
182
+ * }
183
+ * }
184
+ * }
185
+ *```
186
+ */
187
+ getFiles(): ArkFile[];
188
+ getSdkArkFiles(): ArkFile[];
189
+ getModuleSdkMap(): Map<string, Sdk[]>;
190
+ getProjectSdkMap(): Map<string, Sdk>;
191
+ getNamespace(namespaceSignature: NamespaceSignature): ArkNamespace | null;
192
+ private getNamespaceBySignature;
193
+ private getNamespacesMap;
194
+ getNamespaces(): ArkNamespace[];
195
+ /**
196
+ * Returns the class according to the input class signature.
197
+ * @param classSignature - signature of the class to be obtained.
198
+ * @returns A class.
199
+ */
200
+ getClass(classSignature: ClassSignature): ArkClass | null;
201
+ private getClassesMap;
202
+ getClasses(): ArkClass[];
203
+ getMethod(methodSignature: MethodSignature, refresh?: boolean): ArkMethod | null;
204
+ private getMethodsMap;
205
+ /**
206
+ * Returns the method associated with the method signature.
207
+ * If no method is associated with this signature, **null** will be returned.
208
+ * An {@link ArkMethod} includes:
209
+ * - Name: the **string** name of method.
210
+ * - Code: the **string** code of the method.
211
+ * - Line: a **number** indicating the line location, initialized as -1.
212
+ * - Column: a **number** indicating the column location, initialized as -1.
213
+ * - Parameters & Types of parameters: the parameters of method and their types.
214
+ * - View tree: the view tree of the method.
215
+ * - ...
216
+ *
217
+ * @param methodSignature - the signature of method.
218
+ * @returns The method associated with the method signature.
219
+ * @example
220
+ * 1. get method from getMethod.
221
+
222
+ ```typescript
223
+ const methodSignatures = this.CHA.resolveCall(xxx, yyy);
224
+ for (const methodSignature of methodSignatures) {
225
+ const method = this.scene.getMethod(methodSignature);
226
+ ... ...
227
+ }
228
+ ```
229
+ */
230
+ getMethods(): ArkMethod[];
231
+ addToMethodsMap(method: ArkMethod): void;
232
+ removeMethod(method: ArkMethod): boolean;
233
+ removeClass(arkClass: ArkClass): boolean;
234
+ removeNamespace(namespace: ArkNamespace): boolean;
235
+ removeFile(file: ArkFile): boolean;
236
+ hasMainMethod(): boolean;
237
+ getEntryPoints(): never[];
238
+ /** get values that is visible in curr scope */
239
+ getVisibleValue(): VisibleValue;
240
+ getOhPkgContent(): {
241
+ [k: string]: unknown;
242
+ };
243
+ getOhPkgContentMap(): Map<string, {
244
+ [k: string]: unknown;
245
+ }>;
246
+ getOhPkgFilePath(): string;
247
+ makeCallGraphCHA(entryPoints: MethodSignature[]): CallGraph;
248
+ makeCallGraphRTA(entryPoints: MethodSignature[]): CallGraph;
249
+ /**
250
+ * Infer type for each non-default method. It infers the type of each field/local/reference.
251
+ * For example, the statement `let b = 5;`, the type of local `b` is `NumberType`; and for the statement `let s =
252
+ * 'hello';`, the type of local `s` is `StringType`. The detailed types are defined in the Type.ts file.
253
+ * @example
254
+ * 1. Infer the type of each class field and method field.
255
+ ```typescript
256
+ const scene = new Scene();
257
+ scene.buildSceneFromProjectDir(sceneConfig);
258
+ scene.inferTypes();
259
+ ```
260
+ */
261
+ inferTypes(): void;
262
+ /**
263
+ * Iterate all assignment statements in methods,
264
+ * and set the type of left operand based on the type of right operand
265
+ * if the left operand is a local variable as well as an unknown.
266
+ * @Deprecated
267
+ * @example
268
+ * 1. Infer simple type when scene building.
269
+
270
+ ```typescript
271
+ let scene = new Scene();
272
+ scene.buildSceneFromProjectDir(config);
273
+ scene.inferSimpleTypes();
274
+ ```
275
+ */
276
+ inferSimpleTypes(): void;
277
+ getClassMap(): Map<FileSignature | NamespaceSignature, ArkClass[]>;
278
+ getGlobalVariableMap(): Map<FileSignature | NamespaceSignature, Local[]>;
279
+ getStaticInitMethods(): ArkMethod[];
280
+ buildClassDone(): boolean;
281
+ getModuleScene(moduleName: string): ModuleScene | undefined;
282
+ getModuleSceneMap(): Map<string, ModuleScene>;
283
+ getGlobalModule2PathMapping(): {
284
+ [k: string]: string[];
285
+ } | undefined;
286
+ getbaseUrl(): string | undefined;
287
+ }
288
+ export declare class ModuleScene {
289
+ private projectScene;
290
+ private moduleName;
291
+ private modulePath;
292
+ private moduleFileMap;
293
+ private moduleOhPkgFilePath;
294
+ private ohPkgContent;
295
+ constructor(projectScene: Scene);
296
+ ModuleSceneBuilder(moduleName: string, modulePath: string, supportFileExts: string[], recursively?: boolean): void;
297
+ ModuleScenePartiallyBuilder(moduleName: string, modulePath: string): void;
298
+ /**
299
+ * get oh-package.json5
300
+ */
301
+ private getModuleOhPkgFilePath;
302
+ /**
303
+ * get nodule name
304
+ * @returns return module name
305
+ */
306
+ getModuleName(): string;
307
+ getModulePath(): string;
308
+ getOhPkgFilePath(): string;
309
+ getOhPkgContent(): {
310
+ [k: string]: unknown;
311
+ };
312
+ getModuleFilesMap(): Map<string, ArkFile>;
313
+ addArkFile(arkFile: ArkFile): void;
314
+ private genArkFiles;
315
+ }
316
+ export {};
317
317
  //# sourceMappingURL=Scene.d.ts.map