arkanalyzer 1.0.86 → 1.0.88

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 (422) hide show
  1. package/README.en.md +69 -65
  2. package/README.md +56 -70
  3. package/config/arkanalyzer.json +7 -2
  4. package/docs/cppFrontend/ArkAnalyzer-cpp_usage_guide.md +245 -0
  5. package/docs/cppFrontend/cpp_frontend_build_guide.md +126 -0
  6. package/docs/cppFrontend/cpp_frontend_user_guide.md +175 -0
  7. package/docs/cppFrontend/img.png +0 -0
  8. package/docs/cppFrontend/img_1.png +0 -0
  9. package/docs/cppFrontend/img_10.png +0 -0
  10. package/docs/cppFrontend/img_11.png +0 -0
  11. package/docs/cppFrontend/img_12.png +0 -0
  12. package/docs/cppFrontend/img_13.png +0 -0
  13. package/docs/cppFrontend/img_14.png +0 -0
  14. package/docs/cppFrontend/img_15.png +0 -0
  15. package/docs/cppFrontend/img_16.png +0 -0
  16. package/docs/cppFrontend/img_17.png +0 -0
  17. package/docs/cppFrontend/img_18.png +0 -0
  18. package/docs/cppFrontend/img_19.png +0 -0
  19. package/docs/cppFrontend/img_2.png +0 -0
  20. package/docs/cppFrontend/img_20.png +0 -0
  21. package/docs/cppFrontend/img_21.png +0 -0
  22. package/docs/cppFrontend/img_22.png +0 -0
  23. package/docs/cppFrontend/img_23.png +0 -0
  24. package/docs/cppFrontend/img_3.png +0 -0
  25. package/docs/cppFrontend/img_4.png +0 -0
  26. package/docs/cppFrontend/img_5.png +0 -0
  27. package/docs/cppFrontend/img_6.png +0 -0
  28. package/docs/cppFrontend/img_7.png +0 -0
  29. package/docs/cppFrontend/img_8.png +0 -0
  30. package/docs/cppFrontend/img_9.png +0 -0
  31. package/docs/sig_programanalysis.en.md +66 -0
  32. package/docs/sig_programanalysis.md +73 -0
  33. package/lib/Config.d.ts +35 -1
  34. package/lib/Config.d.ts.map +1 -1
  35. package/lib/Config.js +91 -2
  36. package/lib/Scene.d.ts +25 -2
  37. package/lib/Scene.d.ts.map +1 -1
  38. package/lib/Scene.js +151 -44
  39. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +4 -3
  40. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
  41. package/lib/callgraph/algorithm/AbstractAnalysis.js +17 -17
  42. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts +6 -1
  43. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
  44. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +117 -14
  45. package/lib/callgraph/common/Statistics.d.ts +4 -2
  46. package/lib/callgraph/common/Statistics.d.ts.map +1 -1
  47. package/lib/callgraph/common/Statistics.js +14 -2
  48. package/lib/callgraph/model/CallGraph.d.ts +12 -8
  49. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  50. package/lib/callgraph/model/CallGraph.js +53 -29
  51. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +1 -0
  52. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts.map +1 -1
  53. package/lib/callgraph/model/builder/CallGraphBuilder.js +5 -1
  54. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  55. package/lib/callgraph/pointerAnalysis/Pag.js +3 -0
  56. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +4 -2
  57. package/lib/cli/cli.d.ts +3 -0
  58. package/lib/cli/cli.d.ts.map +1 -0
  59. package/lib/cli/cli.js +82 -0
  60. package/lib/cli/commands/cg.d.ts +53 -0
  61. package/lib/cli/commands/cg.d.ts.map +1 -0
  62. package/lib/cli/commands/cg.js +404 -0
  63. package/lib/cli/commands/index.d.ts +6 -0
  64. package/lib/cli/commands/index.d.ts.map +1 -0
  65. package/lib/cli/commands/index.js +64 -0
  66. package/lib/cli/commands/ir.d.ts +26 -0
  67. package/lib/cli/commands/ir.d.ts.map +1 -0
  68. package/lib/cli/commands/ir.js +94 -0
  69. package/lib/core/base/Constant.d.ts +1 -1
  70. package/lib/core/base/Constant.d.ts.map +1 -1
  71. package/lib/core/base/Constant.js +1 -1
  72. package/lib/core/base/Expr.d.ts +29 -5
  73. package/lib/core/base/Expr.d.ts.map +1 -1
  74. package/lib/core/base/Expr.js +145 -23
  75. package/lib/core/base/Position.d.ts +14 -0
  76. package/lib/core/base/Position.d.ts.map +1 -1
  77. package/lib/core/base/Position.js +27 -0
  78. package/lib/core/base/Ref.d.ts +1 -0
  79. package/lib/core/base/Ref.d.ts.map +1 -1
  80. package/lib/core/base/Ref.js +4 -1
  81. package/lib/core/base/Type.d.ts +64 -24
  82. package/lib/core/base/Type.d.ts.map +1 -1
  83. package/lib/core/base/Type.js +144 -49
  84. package/lib/core/common/ArkError.d.ts +26 -2
  85. package/lib/core/common/ArkError.d.ts.map +1 -1
  86. package/lib/core/common/ArkError.js +56 -2
  87. package/lib/core/common/ArkIRTransformer.d.ts +11 -10
  88. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  89. package/lib/core/common/ArkIRTransformer.js +1 -1
  90. package/lib/core/common/ArkValueTransformer.d.ts +14 -12
  91. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  92. package/lib/core/common/ArkValueTransformer.js +1 -5
  93. package/lib/core/common/Const.d.ts +4 -0
  94. package/lib/core/common/Const.d.ts.map +1 -1
  95. package/lib/core/common/Const.js +5 -1
  96. package/lib/core/common/DummyMainCreater.d.ts +23 -13
  97. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  98. package/lib/core/common/DummyMainCreater.js +66 -43
  99. package/lib/core/common/EtsConst.d.ts +11 -0
  100. package/lib/core/common/EtsConst.d.ts.map +1 -1
  101. package/lib/core/common/EtsConst.js +12 -1
  102. package/lib/core/common/IRInference.d.ts.map +1 -1
  103. package/lib/core/common/IRInference.js +6 -2
  104. package/lib/core/common/IRUtils.d.ts.map +1 -1
  105. package/lib/core/common/IRUtils.js +3 -33
  106. package/lib/core/common/ModelUtils.d.ts +4 -7
  107. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  108. package/lib/core/common/ModelUtils.js +77 -110
  109. package/lib/core/common/SdkUtils.d.ts +1 -1
  110. package/lib/core/common/SdkUtils.d.ts.map +1 -1
  111. package/lib/core/common/SdkUtils.js +14 -5
  112. package/lib/core/common/TypeInference.d.ts.map +1 -1
  113. package/lib/core/common/TypeInference.js +9 -3
  114. package/lib/core/graph/BaseExplicitGraph.d.ts +4 -4
  115. package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
  116. package/lib/core/graph/BaseExplicitGraph.js +15 -8
  117. package/lib/core/graph/BasicBlock.d.ts.map +1 -1
  118. package/lib/core/graph/Scc.d.ts.map +1 -1
  119. package/lib/core/graph/Scc.js +7 -2
  120. package/lib/core/graph/builder/CfgBuilder.d.ts +10 -7
  121. package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
  122. package/lib/core/graph/builder/CfgBuilder.js +12 -5
  123. package/lib/core/inference/Inference.d.ts.map +1 -1
  124. package/lib/core/inference/Inference.js +7 -0
  125. package/lib/core/inference/ModelInference.d.ts +1 -1
  126. package/lib/core/inference/ModelInference.d.ts.map +1 -1
  127. package/lib/core/inference/ValueInference.d.ts +3 -2
  128. package/lib/core/inference/ValueInference.d.ts.map +1 -1
  129. package/lib/core/inference/ValueInference.js +64 -12
  130. package/lib/core/inference/abc/AbcInference.d.ts +28 -2
  131. package/lib/core/inference/abc/AbcInference.d.ts.map +1 -1
  132. package/lib/core/inference/abc/AbcInference.js +105 -4
  133. package/lib/core/model/ArkBaseModel.d.ts +14 -1
  134. package/lib/core/model/ArkBaseModel.d.ts.map +1 -1
  135. package/lib/core/model/ArkBaseModel.js +61 -2
  136. package/lib/core/model/ArkBody.d.ts.map +1 -1
  137. package/lib/core/model/ArkBody.js +1 -3
  138. package/lib/core/model/ArkClass.d.ts +25 -2
  139. package/lib/core/model/ArkClass.d.ts.map +1 -1
  140. package/lib/core/model/ArkClass.js +72 -30
  141. package/lib/core/model/ArkField.d.ts.map +1 -1
  142. package/lib/core/model/ArkField.js +3 -1
  143. package/lib/core/model/ArkFile.d.ts +4 -1
  144. package/lib/core/model/ArkFile.d.ts.map +1 -1
  145. package/lib/core/model/ArkFile.js +44 -3
  146. package/lib/core/model/ArkImport.d.ts.map +1 -1
  147. package/lib/core/model/ArkImport.js +9 -1
  148. package/lib/core/model/ArkMetadata.d.ts +32 -1
  149. package/lib/core/model/ArkMetadata.d.ts.map +1 -1
  150. package/lib/core/model/ArkMetadata.js +28 -2
  151. package/lib/core/model/ArkMethod.d.ts +5 -0
  152. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  153. package/lib/core/model/ArkMethod.js +33 -1
  154. package/lib/core/model/ArkNamespace.d.ts +2 -0
  155. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  156. package/lib/core/model/ArkNamespace.js +11 -0
  157. package/lib/core/model/ArkSignature.d.ts +3 -3
  158. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  159. package/lib/core/model/ArkSignature.js +14 -9
  160. package/lib/core/model/builder/ArkClassBuilder.d.ts +2 -0
  161. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  162. package/lib/core/model/builder/ArkClassBuilder.js +3 -3
  163. package/lib/core/model/builder/ArkMetadataBuilder.d.ts +21 -0
  164. package/lib/core/model/builder/ArkMetadataBuilder.d.ts.map +1 -0
  165. package/lib/core/model/builder/ArkMetadataBuilder.js +160 -0
  166. package/lib/core/model/builder/ArkMethodBuilder.d.ts +4 -1
  167. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  168. package/lib/core/model/builder/ArkMethodBuilder.js +50 -29
  169. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts +1 -0
  170. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  171. package/lib/core/model/builder/ArkNamespaceBuilder.js +2 -1
  172. package/lib/core/model/builder/BodyBuilder.d.ts +4 -0
  173. package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
  174. package/lib/core/model/builder/builderUtils.d.ts +1 -0
  175. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  176. package/lib/core/model/builder/builderUtils.js +7 -3
  177. package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.d.ts +296 -0
  178. package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.d.ts.map +1 -0
  179. package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.js +145 -0
  180. package/lib/frontend/cppFrontend/ast/astJsonNapi/napiApi.d.ts +8 -0
  181. package/lib/frontend/cppFrontend/ast/astJsonNapi/napiApi.d.ts.map +1 -0
  182. package/lib/frontend/cppFrontend/ast/astJsonNapi/napiApi.js +90 -0
  183. package/lib/frontend/cppFrontend/ast/astJsonNapi/napiRunner.d.ts +8 -0
  184. package/lib/frontend/cppFrontend/ast/astJsonNapi/napiRunner.d.ts.map +1 -0
  185. package/lib/frontend/cppFrontend/ast/astJsonNapi/napiRunner.js +183 -0
  186. package/lib/frontend/cppFrontend/ast/astParser.d.ts +25 -0
  187. package/lib/frontend/cppFrontend/ast/astParser.d.ts.map +1 -0
  188. package/lib/frontend/cppFrontend/ast/astParser.js +280 -0
  189. package/lib/frontend/cppFrontend/ast/astUtils.d.ts +18 -0
  190. package/lib/frontend/cppFrontend/ast/astUtils.d.ts.map +1 -0
  191. package/lib/frontend/cppFrontend/ast/astUtils.js +158 -0
  192. package/lib/frontend/cppFrontend/ast/const.d.ts +17 -0
  193. package/lib/frontend/cppFrontend/ast/const.d.ts.map +1 -0
  194. package/lib/frontend/cppFrontend/ast/const.js +58 -0
  195. package/lib/frontend/cppFrontend/ast/index.d.ts +5 -0
  196. package/lib/frontend/cppFrontend/ast/index.d.ts.map +1 -0
  197. package/lib/frontend/cppFrontend/ast/index.js +31 -0
  198. package/lib/frontend/cppFrontend/base/Constant.d.ts +9 -0
  199. package/lib/frontend/cppFrontend/base/Constant.d.ts.map +1 -0
  200. package/lib/frontend/cppFrontend/base/Constant.js +33 -0
  201. package/lib/frontend/cppFrontend/base/Expr.d.ts +174 -0
  202. package/lib/frontend/cppFrontend/base/Expr.d.ts.map +1 -0
  203. package/lib/frontend/cppFrontend/base/Expr.js +530 -0
  204. package/lib/frontend/cppFrontend/base/Ref.d.ts +25 -0
  205. package/lib/frontend/cppFrontend/base/Ref.d.ts.map +1 -0
  206. package/lib/frontend/cppFrontend/base/Ref.js +53 -0
  207. package/lib/frontend/cppFrontend/base/Trap.d.ts +8 -0
  208. package/lib/frontend/cppFrontend/base/Trap.d.ts.map +1 -0
  209. package/lib/frontend/cppFrontend/base/Trap.js +28 -0
  210. package/lib/frontend/cppFrontend/base/Type.d.ts +264 -0
  211. package/lib/frontend/cppFrontend/base/Type.d.ts.map +1 -0
  212. package/lib/frontend/cppFrontend/base/Type.js +600 -0
  213. package/lib/frontend/cppFrontend/common/ArkIRTransformer.d.ts +109 -0
  214. package/lib/frontend/cppFrontend/common/ArkIRTransformer.d.ts.map +1 -0
  215. package/lib/frontend/cppFrontend/common/ArkIRTransformer.js +925 -0
  216. package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts +477 -0
  217. package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts.map +1 -0
  218. package/lib/frontend/cppFrontend/common/ArkValueTransformer.js +2746 -0
  219. package/lib/frontend/cppFrontend/common/Builtin.d.ts +57 -0
  220. package/lib/frontend/cppFrontend/common/Builtin.d.ts.map +1 -0
  221. package/lib/frontend/cppFrontend/common/Builtin.js +106 -0
  222. package/lib/frontend/cppFrontend/common/IRInference.d.ts +94 -0
  223. package/lib/frontend/cppFrontend/common/IRInference.d.ts.map +1 -0
  224. package/lib/frontend/cppFrontend/common/IRInference.js +1087 -0
  225. package/lib/frontend/cppFrontend/common/IRUtils.d.ts +23 -0
  226. package/lib/frontend/cppFrontend/common/IRUtils.d.ts.map +1 -0
  227. package/lib/frontend/cppFrontend/common/IRUtils.js +168 -0
  228. package/lib/frontend/cppFrontend/common/ModelUtils.d.ts +44 -0
  229. package/lib/frontend/cppFrontend/common/ModelUtils.d.ts.map +1 -0
  230. package/lib/frontend/cppFrontend/common/ModelUtils.js +567 -0
  231. package/lib/frontend/cppFrontend/common/TypeInference.d.ts +278 -0
  232. package/lib/frontend/cppFrontend/common/TypeInference.d.ts.map +1 -0
  233. package/lib/frontend/cppFrontend/common/TypeInference.js +1354 -0
  234. package/lib/frontend/cppFrontend/common/ValueUtil.d.ts +16 -0
  235. package/lib/frontend/cppFrontend/common/ValueUtil.d.ts.map +1 -0
  236. package/lib/frontend/cppFrontend/common/ValueUtil.js +61 -0
  237. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.d.ts +182 -0
  238. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.d.ts.map +1 -0
  239. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.js +1435 -0
  240. package/lib/frontend/cppFrontend/graph/builder/ConditionBuilder.d.ts +21 -0
  241. package/lib/frontend/cppFrontend/graph/builder/ConditionBuilder.d.ts.map +1 -0
  242. package/lib/frontend/cppFrontend/graph/builder/ConditionBuilder.js +303 -0
  243. package/lib/frontend/cppFrontend/graph/builder/IfBuilder.d.ts +15 -0
  244. package/lib/frontend/cppFrontend/graph/builder/IfBuilder.d.ts.map +1 -0
  245. package/lib/frontend/cppFrontend/graph/builder/IfBuilder.js +161 -0
  246. package/lib/frontend/cppFrontend/graph/builder/LoopBuilder.d.ts +21 -0
  247. package/lib/frontend/cppFrontend/graph/builder/LoopBuilder.d.ts.map +1 -0
  248. package/lib/frontend/cppFrontend/graph/builder/LoopBuilder.js +261 -0
  249. package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.d.ts +12 -0
  250. package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.d.ts.map +1 -0
  251. package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.js +155 -0
  252. package/lib/frontend/cppFrontend/graph/builder/TrapBuilder.d.ts +29 -0
  253. package/lib/frontend/cppFrontend/graph/builder/TrapBuilder.d.ts.map +1 -0
  254. package/lib/frontend/cppFrontend/graph/builder/TrapBuilder.js +302 -0
  255. package/lib/frontend/cppFrontend/inference/CxxInference.d.ts +10 -0
  256. package/lib/frontend/cppFrontend/inference/CxxInference.d.ts.map +1 -0
  257. package/lib/frontend/cppFrontend/inference/CxxInference.js +41 -0
  258. package/lib/frontend/cppFrontend/inference/CxxModelInference.d.ts +28 -0
  259. package/lib/frontend/cppFrontend/inference/CxxModelInference.d.ts.map +1 -0
  260. package/lib/frontend/cppFrontend/inference/CxxModelInference.js +98 -0
  261. package/lib/frontend/cppFrontend/inference/CxxValueInference.d.ts +20 -0
  262. package/lib/frontend/cppFrontend/inference/CxxValueInference.d.ts.map +1 -0
  263. package/lib/frontend/cppFrontend/inference/CxxValueInference.js +128 -0
  264. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.d.ts +11 -0
  265. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.d.ts.map +1 -0
  266. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.js +413 -0
  267. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.d.ts +5 -0
  268. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.d.ts.map +1 -0
  269. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.js +61 -0
  270. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts +17 -0
  271. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts.map +1 -0
  272. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.js +284 -0
  273. package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.d.ts +6 -0
  274. package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.d.ts.map +1 -0
  275. package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.js +57 -0
  276. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.d.ts +14 -0
  277. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.d.ts.map +1 -0
  278. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.js +422 -0
  279. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts +8 -0
  280. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts.map +1 -0
  281. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.js +194 -0
  282. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts +59 -0
  283. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts.map +1 -0
  284. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.js +605 -0
  285. package/lib/frontend/cppFrontend/model/builder/builderUtils.d.ts +46 -0
  286. package/lib/frontend/cppFrontend/model/builder/builderUtils.d.ts.map +1 -0
  287. package/lib/frontend/cppFrontend/model/builder/builderUtils.js +499 -0
  288. package/lib/frontend/cppFrontend/utils/cmakeUtils.d.ts +44 -0
  289. package/lib/frontend/cppFrontend/utils/cmakeUtils.d.ts.map +1 -0
  290. package/lib/frontend/cppFrontend/utils/cmakeUtils.js +240 -0
  291. package/lib/index.d.ts +2 -1
  292. package/lib/index.d.ts.map +1 -1
  293. package/lib/index.js +8 -1
  294. package/lib/node_modules/ohos-typescript/.ohos-typescript-version +1 -0
  295. package/{node_modules → lib/node_modules}/ohos-typescript/package.json +2 -1
  296. package/lib/save/CGJsonPrinter.d.ts +8 -0
  297. package/lib/save/CGJsonPrinter.d.ts.map +1 -0
  298. package/lib/save/CGJsonPrinter.js +41 -0
  299. package/lib/save/GraphPrinter.js +2 -2
  300. package/lib/save/json/JsonDto.d.ts +86 -2
  301. package/lib/save/json/JsonDto.d.ts.map +1 -1
  302. package/lib/save/json/JsonSerialization.d.ts +1 -1
  303. package/lib/save/json/JsonSerialization.d.ts.map +1 -1
  304. package/lib/save/json/JsonSerialization.js +235 -145
  305. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  306. package/lib/save/source/SourceStmt.js +3 -1
  307. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  308. package/lib/save/source/SourceTransformer.js +0 -3
  309. package/lib/utils/CxxSceneUtils.d.ts +11 -0
  310. package/lib/utils/CxxSceneUtils.d.ts.map +1 -0
  311. package/lib/utils/CxxSceneUtils.js +178 -0
  312. package/lib/utils/FileUtils.d.ts +8 -8
  313. package/lib/utils/FileUtils.d.ts.map +1 -1
  314. package/lib/utils/FileUtils.js +35 -45
  315. package/lib/utils/LRUCacheDecorator.d.ts +20 -0
  316. package/lib/utils/LRUCacheDecorator.d.ts.map +1 -0
  317. package/lib/utils/LRUCacheDecorator.js +89 -0
  318. package/lib/utils/ModuleUtils.d.ts +39 -0
  319. package/lib/utils/ModuleUtils.d.ts.map +1 -0
  320. package/lib/utils/ModuleUtils.js +261 -0
  321. package/package.json +13 -7
  322. /package/{node_modules → lib/node_modules}/ohos-typescript/LICENSE +0 -0
  323. /package/{node_modules → lib/node_modules}/ohos-typescript/README.OpenSource +0 -0
  324. /package/{node_modules → lib/node_modules}/ohos-typescript/README.md +0 -0
  325. /package/{node_modules → lib/node_modules}/ohos-typescript/SECURITY.md +0 -0
  326. /package/{node_modules → lib/node_modules}/ohos-typescript/ThirdPartyNoticeText.txt +0 -0
  327. /package/{node_modules → lib/node_modules}/ohos-typescript/bin/tsc +0 -0
  328. /package/{node_modules → lib/node_modules}/ohos-typescript/bin/tsserver +0 -0
  329. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/README.md +0 -0
  330. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/cancellationToken.js +0 -0
  331. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/cs/diagnosticMessages.generated.json +0 -0
  332. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/de/diagnosticMessages.generated.json +0 -0
  333. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/es/diagnosticMessages.generated.json +0 -0
  334. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/fr/diagnosticMessages.generated.json +0 -0
  335. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/it/diagnosticMessages.generated.json +0 -0
  336. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/ja/diagnosticMessages.generated.json +0 -0
  337. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/ko/diagnosticMessages.generated.json +0 -0
  338. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.d.ts +0 -0
  339. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.dom.d.ts +0 -0
  340. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.dom.iterable.d.ts +0 -0
  341. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.collection.d.ts +0 -0
  342. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.core.d.ts +0 -0
  343. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.d.ts +0 -0
  344. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.generator.d.ts +0 -0
  345. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.iterable.d.ts +0 -0
  346. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.promise.d.ts +0 -0
  347. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.proxy.d.ts +0 -0
  348. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.reflect.d.ts +0 -0
  349. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.symbol.d.ts +0 -0
  350. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -0
  351. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2016.array.include.d.ts +0 -0
  352. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2016.d.ts +0 -0
  353. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2016.full.d.ts +0 -0
  354. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.d.ts +0 -0
  355. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.full.d.ts +0 -0
  356. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.intl.d.ts +0 -0
  357. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.object.d.ts +0 -0
  358. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.sharedmemory.d.ts +0 -0
  359. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.string.d.ts +0 -0
  360. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.typedarrays.d.ts +0 -0
  361. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -0
  362. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.asynciterable.d.ts +0 -0
  363. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.d.ts +0 -0
  364. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.full.d.ts +0 -0
  365. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.intl.d.ts +0 -0
  366. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.promise.d.ts +0 -0
  367. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.regexp.d.ts +0 -0
  368. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.array.d.ts +0 -0
  369. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.d.ts +0 -0
  370. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.full.d.ts +0 -0
  371. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.intl.d.ts +0 -0
  372. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.object.d.ts +0 -0
  373. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.string.d.ts +0 -0
  374. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.symbol.d.ts +0 -0
  375. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.bigint.d.ts +0 -0
  376. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.d.ts +0 -0
  377. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.date.d.ts +0 -0
  378. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.full.d.ts +0 -0
  379. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.intl.d.ts +0 -0
  380. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.number.d.ts +0 -0
  381. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.promise.d.ts +0 -0
  382. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.sharedmemory.d.ts +0 -0
  383. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.string.d.ts +0 -0
  384. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -0
  385. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.d.ts +0 -0
  386. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.full.d.ts +0 -0
  387. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.intl.d.ts +0 -0
  388. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.promise.d.ts +0 -0
  389. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.string.d.ts +0 -0
  390. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.weakref.d.ts +0 -0
  391. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.array.d.ts +0 -0
  392. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.d.ts +0 -0
  393. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.error.d.ts +0 -0
  394. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.full.d.ts +0 -0
  395. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.intl.d.ts +0 -0
  396. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.object.d.ts +0 -0
  397. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.sharedmemory.d.ts +0 -0
  398. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.string.d.ts +0 -0
  399. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es5.d.ts +0 -0
  400. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es6.d.ts +0 -0
  401. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.esnext.d.ts +0 -0
  402. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.esnext.full.d.ts +0 -0
  403. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.esnext.intl.d.ts +0 -0
  404. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.scripthost.d.ts +0 -0
  405. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.webworker.d.ts +0 -0
  406. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.webworker.importscripts.d.ts +0 -0
  407. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.webworker.iterable.d.ts +0 -0
  408. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/pl/diagnosticMessages.generated.json +0 -0
  409. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/pt-br/diagnosticMessages.generated.json +0 -0
  410. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/ru/diagnosticMessages.generated.json +0 -0
  411. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tr/diagnosticMessages.generated.json +0 -0
  412. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsc.js +0 -0
  413. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsserver.js +0 -0
  414. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsserverlibrary.d.ts +0 -0
  415. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsserverlibrary.js +0 -0
  416. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typesMap.json +0 -0
  417. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typescript.d.ts +0 -0
  418. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typescript.js +0 -0
  419. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typingsInstaller.js +0 -0
  420. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/watchGuard.js +0 -0
  421. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -0
  422. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -0
package/lib/Config.js CHANGED
@@ -40,15 +40,54 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
40
  return (mod && mod.__esModule) ? mod : { "default": mod };
41
41
  };
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.SceneConfig = void 0;
43
+ exports.SceneConfig = exports.buildSceneConfigFromProject = void 0;
44
44
  const fs_1 = __importDefault(require("fs"));
45
45
  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 FileUtils_1 = require("./utils/FileUtils");
49
+ const ast_1 = require("./frontend/cppFrontend/ast");
49
50
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'Config');
51
+ function collectSdksFromOhosSdkHome(explicitHome) {
52
+ const sdkHome = explicitHome || process.env.OHOS_SDK_HOME;
53
+ if (!sdkHome) {
54
+ return [];
55
+ }
56
+ const candidates = [
57
+ { name: 'etsSdk', path: path_1.default.join(sdkHome, 'openharmony', 'ets') },
58
+ { name: 'hmsSdk', path: path_1.default.join(sdkHome, 'hms', 'ets') },
59
+ ];
60
+ const sdks = [];
61
+ for (const c of candidates) {
62
+ if (fs_1.default.existsSync(c.path)) {
63
+ sdks.push({ moduleName: '', name: c.name, path: c.path });
64
+ }
65
+ }
66
+ return sdks;
67
+ }
68
+ /**
69
+ * Build a SceneConfig from a project directory and optional OHOS SDK home.
70
+ *
71
+ * SDK resolution order:
72
+ * 1) explicit `ohosSdkHome` (must contain at least one valid SDK directory:
73
+ * `<ohosSdkHome>/openharmony/ets` or `<ohosSdkHome>/hms/ets`)
74
+ * 2) environment variable `OHOS_SDK_HOME`
75
+ *
76
+ * @param project Project root directory path.
77
+ * @param ohosSdkHome Optional OHOS SDK home path.
78
+ * @param options Optional SceneOptions.
79
+ * @returns SceneConfig initialized with project files and discovered SDKs.
80
+ */
81
+ function buildSceneConfigFromProject(project, ohosSdkHome, options) {
82
+ const config = new SceneConfig(options);
83
+ const sdks = collectSdksFromOhosSdkHome(ohosSdkHome);
84
+ config.buildConfig(path_1.default.basename(project), project, sdks);
85
+ return config;
86
+ }
87
+ exports.buildSceneConfigFromProject = buildSceneConfigFromProject;
50
88
  const CONFIG_FILENAME = 'arkanalyzer.json';
51
89
  const DEFAULT_CONFIG_FILE = path_1.default.join(__dirname, '../config', CONFIG_FILENAME);
90
+ const CPP_SOURCE_FILE_EXTS = (0, ast_1.getCxxSourceFileExtensions)();
52
91
  class SceneConfig {
53
92
  constructor(options) {
54
93
  this.targetProjectName = '';
@@ -58,9 +97,14 @@ class SceneConfig {
58
97
  this.sdkFiles = [];
59
98
  this.sdkFilesMap = new Map();
60
99
  this.projectFiles = [];
100
+ this.includeDirs = []; // Include directories that the C++ project depends on.
61
101
  this.fileLanguages = new Map();
102
+ this.ccjsonPath = '';
103
+ this.cppAstPath = '';
104
+ // Seed defaults before merging `config/arkanalyzer.json`. Same values remain if that file is missing or invalid.
62
105
  this.options = { supportFileExts: ['.ets', '.ts'] };
63
106
  this.loadDefaultConfig(options);
107
+ this.appendCppExtsToDefaultOptionsIfAstJsonDumperAvailable();
64
108
  }
65
109
  getOptions() {
66
110
  return this.options;
@@ -87,6 +131,7 @@ class SceneConfig {
87
131
  * targetProjectDirectory property of the sceneConfig object.
88
132
  * @param targetProjectDirectory - the target project directory, such as xxx/xxx/xxx, started from project
89
133
  * directory.
134
+ * @param includeDirs - Header file directories that the CXX project depends on.
90
135
  * @example
91
136
  * 1. build a sceneConfig object.
92
137
  ```typescript
@@ -95,8 +140,17 @@ class SceneConfig {
95
140
  sceneConfig.buildFromProjectDir(projectDir);
96
141
  ```
97
142
  */
98
- buildFromProjectDir(targetProjectDirectory) {
143
+ buildFromProjectDir(targetProjectDirectory, includeDirs = []) {
99
144
  this.targetProjectDirectory = targetProjectDirectory;
145
+ // Callers should prefer passing de-duplicated includeDirs to avoid redundant work in hot paths.
146
+ // Keep this defensive, order-preserving de-duplication as a fallback and reuse the target array.
147
+ // Intentionally avoid Set allocation here.
148
+ this.includeDirs.length = 0;
149
+ for (const includeDir of includeDirs) {
150
+ if (!this.includeDirs.includes(includeDir)) {
151
+ this.includeDirs.push(includeDir);
152
+ }
153
+ }
100
154
  this.targetProjectName = path_1.default.basename(targetProjectDirectory);
101
155
  this.projectFiles = (0, getAllFiles_1.getAllFiles)(targetProjectDirectory, this.options.supportFileExts, this.options.ignoreFileNames);
102
156
  }
@@ -191,6 +245,30 @@ class SceneConfig {
191
245
  getProjectFiles() {
192
246
  return this.projectFiles;
193
247
  }
248
+ /** Obtain the header file directories of the input C++ project dependencies. */
249
+ getIncludeDirs() {
250
+ return this.includeDirs;
251
+ }
252
+ setCcjsonPath(ccjsonPath) {
253
+ this.ccjsonPath = ccjsonPath;
254
+ }
255
+ /**
256
+ * Returns compile_commands.json path configured by the project.
257
+ *
258
+ * If ccjson is not configured, this value is empty initially. Before AST generation,
259
+ * astUtils may auto-discover a compile database near source files (for DevEco projects
260
+ * that load compilation databases). The discovered path is used directly by Scene and is
261
+ * not backfilled into this config field.
262
+ */
263
+ getCcjsonPath() {
264
+ return this.ccjsonPath;
265
+ }
266
+ setCppAstPath(cppAstPath) {
267
+ this.cppAstPath = cppAstPath;
268
+ }
269
+ getCppAstPath() {
270
+ return this.cppAstPath;
271
+ }
194
272
  getFileLanguages() {
195
273
  return this.fileLanguages;
196
274
  }
@@ -238,5 +316,16 @@ class SceneConfig {
238
316
  this.options = Object.assign(Object.assign({}, this.options), options);
239
317
  }
240
318
  }
319
+ appendCppExtsToDefaultOptionsIfAstJsonDumperAvailable() {
320
+ if (!(0, ast_1.isAstJsonDumperAvailable)()) {
321
+ return;
322
+ }
323
+ const configuredExts = Array.isArray(this.options.supportFileExts) ? this.options.supportFileExts : [];
324
+ const missingCppExts = CPP_SOURCE_FILE_EXTS.filter(ext => !configuredExts.includes(ext));
325
+ if (missingCppExts.length === 0) {
326
+ return;
327
+ }
328
+ this.options.supportFileExts = [...configuredExts, ...missingCppExts];
329
+ }
241
330
  }
242
331
  exports.SceneConfig = SceneConfig;
package/lib/Scene.d.ts CHANGED
@@ -8,7 +8,7 @@ import { ClassSignature, FileSignature, MethodSignature, NamespaceSignature } fr
8
8
  import { Local } from './core/base/Local';
9
9
  import { ArkExport } from './core/model/ArkExport';
10
10
  import { CallGraph } from './callgraph/model/CallGraph';
11
- declare enum SceneBuildStage {
11
+ export declare enum SceneBuildStage {
12
12
  BUILD_INIT = 0,
13
13
  SDK_INFERRED = 1,
14
14
  CLASS_DONE = 2,
@@ -25,6 +25,9 @@ export declare class Scene {
25
25
  private projectName;
26
26
  private projectFiles;
27
27
  private realProjectDir;
28
+ private includeDirs;
29
+ private ccjsonPath;
30
+ private cppAstPath;
28
31
  private moduleScenesMap;
29
32
  private modulePath2NameMap;
30
33
  private moduleSdkMap;
@@ -51,6 +54,7 @@ export declare class Scene {
51
54
  constructor();
52
55
  dispose(): void;
53
56
  getOptions(): SceneOptions;
57
+ getBuildStage(): SceneBuildStage;
54
58
  getOverRides(): Map<string, string>;
55
59
  getOverRideDependencyMap(): Map<string, unknown>;
56
60
  clear(): void;
@@ -86,8 +90,18 @@ export declare class Scene {
86
90
  private parseOhPackage;
87
91
  private findTsConfigInfoDeeply;
88
92
  private addTsConfigInfo;
93
+ /**
94
+ * Update or add default constructors for all classes in the scene.
95
+ *
96
+ * This function iterates through all files and classes in the scene,
97
+ * builds default constructors for each class, and processes existing constructors
98
+ * by replacing super constructor calls and adding initialization logic.
99
+ *
100
+ * @returns {void}
101
+ */
89
102
  private updateOrAddDefaultConstructors;
90
103
  private buildAllMethodBody;
104
+ private findCCJsonPath;
91
105
  private genArkFiles;
92
106
  private getFilesOrderByDependency;
93
107
  private getDependencyFilesDeeply;
@@ -106,7 +120,13 @@ export declare class Scene {
106
120
  private getDependenciesMapping;
107
121
  private getOriginPath;
108
122
  private addFileNode2DependencyGrap;
123
+ /**
124
+ * Loads SDK sources into the scene. C++ SDK files are intentionally skipped: they are not parsed or registered
125
+ * here (only non-C++ SDK sources are processed).
126
+ */
109
127
  private buildSdk;
128
+ private collectSdkFiles;
129
+ private parseAndRegisterSdkFile;
110
130
  /**
111
131
  * Build the scene for harmony project. It resolves the file path of the project first, and then fetches
112
132
  * dependencies from this file. Next, build a `ModuleScene` for this project to generate {@link ArkFile}. Finally,
@@ -248,6 +268,10 @@ export declare class Scene {
248
268
  getOhPkgFilePath(): string;
249
269
  makeCallGraphCHA(entryPoints: MethodSignature[]): CallGraph;
250
270
  makeCallGraphRTA(entryPoints: MethodSignature[]): CallGraph;
271
+ /** Obtain the header file directories of the input C++ project dependencies. */
272
+ getIncludeDirs(): string[];
273
+ getCcjsonPath(): string;
274
+ getCppAstPath(): string;
251
275
  /**
252
276
  * Infer type for each non-default method. It infers the type of each field/local/reference.
253
277
  * For example, the statement `let b = 5;`, the type of local `b` is `NumberType`; and for the statement `let s =
@@ -329,5 +353,4 @@ export declare class ModuleScene {
329
353
  addArkFile(arkFile: ArkFile): void;
330
354
  private genArkFiles;
331
355
  }
332
- export {};
333
356
  //# sourceMappingURL=Scene.d.ts.map
@@ -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
@@ -40,7 +40,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
40
  return (mod && mod.__esModule) ? mod : { "default": mod };
41
41
  };
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.ModuleScene = exports.Scene = void 0;
43
+ exports.ModuleScene = exports.Scene = exports.SceneBuildStage = void 0;
44
44
  const fs_1 = __importDefault(require("fs"));
45
45
  const path_1 = __importDefault(require("path"));
46
46
  const ModelUtils_1 = require("./core/common/ModelUtils");
@@ -56,17 +56,23 @@ const getAllFiles_1 = require("./utils/getAllFiles");
56
56
  const FileUtils_1 = require("./utils/FileUtils");
57
57
  const ArkExport_1 = require("./core/model/ArkExport");
58
58
  const ArkMethodBuilder_1 = require("./core/model/builder/ArkMethodBuilder");
59
+ const ArkMethodBuilder_2 = require("./frontend/cppFrontend/model/builder/ArkMethodBuilder");
60
+ const ast_1 = require("./frontend/cppFrontend/ast");
59
61
  const Const_1 = require("./core/common/Const");
60
62
  const CallGraph_1 = require("./callgraph/model/CallGraph");
61
63
  const CallGraphBuilder_1 = require("./callgraph/model/builder/CallGraphBuilder");
64
+ const ArkFileBuilder_2 = require("./frontend/cppFrontend/model/builder/ArkFileBuilder");
65
+ const IRInference_1 = require("./frontend/cppFrontend/common/IRInference");
62
66
  const TSConst_1 = require("./core/common/TSConst");
63
67
  const EtsConst_1 = require("./core/common/EtsConst");
64
68
  const SdkUtils_1 = require("./core/common/SdkUtils");
65
69
  const PointerAnalysisConfig_1 = require("./callgraph/pointerAnalysis/PointerAnalysisConfig");
66
70
  const ValueUtil_1 = require("./core/common/ValueUtil");
67
71
  const Inference_1 = require("./core/inference/Inference");
68
- const IRInference_1 = require("./core/common/IRInference");
72
+ const IRInference_2 = require("./core/common/IRInference");
73
+ const ModuleUtils_1 = require("./utils/ModuleUtils");
69
74
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'Scene');
75
+ const CXX_HEADER_EXTENSION_SET = (0, ast_1.getCxxHeaderFileExtensionSet)();
70
76
  var SceneBuildStage;
71
77
  (function (SceneBuildStage) {
72
78
  SceneBuildStage[SceneBuildStage["BUILD_INIT"] = 0] = "BUILD_INIT";
@@ -76,7 +82,7 @@ var SceneBuildStage;
76
82
  SceneBuildStage[SceneBuildStage["CLASS_COLLECTED"] = 4] = "CLASS_COLLECTED";
77
83
  SceneBuildStage[SceneBuildStage["METHOD_COLLECTED"] = 5] = "METHOD_COLLECTED";
78
84
  SceneBuildStage[SceneBuildStage["TYPE_INFERRED"] = 6] = "TYPE_INFERRED";
79
- })(SceneBuildStage || (SceneBuildStage = {}));
85
+ })(SceneBuildStage = exports.SceneBuildStage || (exports.SceneBuildStage = {}));
80
86
  /**
81
87
  * The Scene class includes everything in the analyzed project.
82
88
  * We should be able to re-generate the project's code based on this class.
@@ -86,6 +92,9 @@ class Scene {
86
92
  this.projectName = '';
87
93
  this.projectFiles = [];
88
94
  this.realProjectDir = '';
95
+ this.includeDirs = []; // Include directories that the C++ project depends on.
96
+ this.ccjsonPath = '';
97
+ this.cppAstPath = '';
89
98
  this.moduleScenesMap = new Map();
90
99
  this.modulePath2NameMap = new Map();
91
100
  this.moduleSdkMap = new Map();
@@ -123,6 +132,9 @@ class Scene {
123
132
  getOptions() {
124
133
  return this.options;
125
134
  }
135
+ getBuildStage() {
136
+ return this.buildStage;
137
+ }
126
138
  getOverRides() {
127
139
  return this.overRides;
128
140
  }
@@ -185,6 +197,9 @@ class Scene {
185
197
  this.projectName = sceneConfig.getTargetProjectName();
186
198
  this.realProjectDir = fs_1.default.realpathSync(sceneConfig.getTargetProjectDirectory());
187
199
  this.projectFiles = sceneConfig.getProjectFiles();
200
+ this.includeDirs = sceneConfig.getIncludeDirs();
201
+ this.ccjsonPath = sceneConfig.getCcjsonPath();
202
+ this.cppAstPath = sceneConfig.getCppAstPath();
188
203
  this.parseBuildProfile();
189
204
  this.parseOhPackage();
190
205
  let tsConfigFilePath;
@@ -202,7 +217,7 @@ class Scene {
202
217
  logger.warn('This project has no tsconfig.json!');
203
218
  }
204
219
  this.buildOhPkgContentMap();
205
- (0, ModelUtils_1.initModulePathMap)(this.ohPkgContentMap);
220
+ ModuleUtils_1.ModuleUtils.generateModuleMap(this.ohPkgContentMap);
206
221
  // handle sdks
207
222
  if (this.options.enableBuiltIn && !sceneConfig.getSdksObj().find(sdk => sdk.name === SdkUtils_1.SdkUtils.BUILT_IN_NAME)) {
208
223
  sceneConfig.getSdksObj().unshift(SdkUtils_1.SdkUtils.getBuiltInSdk());
@@ -224,6 +239,10 @@ class Scene {
224
239
  });
225
240
  if (this.buildStage < SceneBuildStage.SDK_INFERRED) {
226
241
  this.sdkArkFilesMap.forEach(file => {
242
+ // CXXTodo: C++ does not handle SDK files.
243
+ if (file.getLanguage() === ArkFile_1.Language.CXX) {
244
+ return;
245
+ }
227
246
  Inference_1.InferenceManager.getInstance().getInference(file.getLanguage()).doInfer(file);
228
247
  SdkUtils_1.SdkUtils.mergeGlobalAPI(file, this.sdkGlobalMap);
229
248
  });
@@ -306,22 +325,45 @@ class Scene {
306
325
  this.baseUrl = tsConfigObj.compilerOptions.baseUrl;
307
326
  }
308
327
  }
328
+ /**
329
+ * Update or add default constructors for all classes in the scene.
330
+ *
331
+ * This function iterates through all files and classes in the scene,
332
+ * builds default constructors for each class, and processes existing constructors
333
+ * by replacing super constructor calls and adding initialization logic.
334
+ *
335
+ * @returns {void}
336
+ */
309
337
  updateOrAddDefaultConstructors() {
310
338
  for (const file of this.getFiles()) {
339
+ // CXXTodo: Select the appropriate initialization function based on file type
340
+ const initInConstructorFn = file.getLanguage() === ArkFile_1.Language.CXX ? ArkMethodBuilder_2.addInitInConstructor : ArkMethodBuilder_1.addInitInConstructor;
311
341
  for (const cls of ModelUtils_1.ModelUtils.getAllClassesInFile(file)) {
312
342
  (0, ArkMethodBuilder_1.buildDefaultConstructor)(cls);
313
- const constructor = cls.getMethodWithName(TSConst_1.CONSTRUCTOR_NAME);
314
- if (constructor !== null && !cls.isDefaultArkClass()) {
315
- (0, ArkMethodBuilder_1.replaceSuper2Constructor)(constructor);
316
- (0, ArkMethodBuilder_1.addInitInConstructor)(constructor);
343
+ // CXXTodo: Use the interface 'getAllMethodsWithName' for obtaining all methods with the same name.
344
+ const constructors = cls.getAllMethodsWithName(TSConst_1.CONSTRUCTOR_NAME);
345
+ if (cls.isDefaultArkClass()) {
346
+ continue;
317
347
  }
348
+ constructors.forEach(constructor => {
349
+ (0, ArkMethodBuilder_1.replaceSuper2Constructor)(constructor);
350
+ initInConstructorFn(constructor);
351
+ });
318
352
  }
319
353
  }
320
354
  }
321
355
  buildAllMethodBody() {
356
+ var _a;
322
357
  this.buildStage = SceneBuildStage.CLASS_DONE;
323
358
  const methods = [];
324
359
  for (const file of this.getFiles()) {
360
+ if (!this.options.enableOhModulesBody && file.getName().includes(EtsConst_1.OH_MODULES)) {
361
+ const defaultArkMethod = file.getDefaultClass().getDefaultArkMethod();
362
+ if (defaultArkMethod) {
363
+ methods.push(defaultArkMethod);
364
+ }
365
+ continue;
366
+ }
325
367
  for (const cls of file.getClasses()) {
326
368
  for (const method of cls.getMethods(true)) {
327
369
  methods.push(method);
@@ -329,6 +371,13 @@ class Scene {
329
371
  }
330
372
  }
331
373
  for (const namespace of this.getNamespacesMap().values()) {
374
+ if (!this.options.enableOhModulesBody && namespace.getDeclaringArkFile().getName().includes(EtsConst_1.OH_MODULES)) {
375
+ const defaultArkMethod = namespace.getDefaultClass().getDefaultArkMethod();
376
+ if (defaultArkMethod) {
377
+ methods.push(defaultArkMethod);
378
+ }
379
+ continue;
380
+ }
332
381
  for (const cls of namespace.getClasses()) {
333
382
  for (const method of cls.getMethods(true)) {
334
383
  methods.push(method);
@@ -343,19 +392,42 @@ class Scene {
343
392
  logger.error('Error building body:', method.getSignature(), error);
344
393
  }
345
394
  finally {
346
- method.freeBodyBuilder();
395
+ // CXXTodo: Distinguish between C++ and TS/ArkTS.
396
+ const isCxxFile = ((_a = method.getDeclaringArkFile()) === null || _a === void 0 ? void 0 : _a.getLanguage()) === ArkFile_1.Language.CXX;
397
+ if (isCxxFile) {
398
+ method.freeCxxBodyBuilder();
399
+ }
400
+ else {
401
+ method.freeBodyBuilder();
402
+ }
347
403
  }
348
404
  }
349
405
  ModelUtils_1.ModelUtils.dispose();
350
406
  this.buildStage = SceneBuildStage.METHOD_DONE;
351
407
  }
408
+ findCCJsonPath(file, ccjsonPath) {
409
+ const ext = path_1.default.extname(file).toLowerCase();
410
+ const isHeader = CXX_HEADER_EXTENSION_SET.has(ext);
411
+ let currentCcjsonPath = '';
412
+ if (!isHeader) {
413
+ currentCcjsonPath = (0, ast_1.findCompileCommands)(file);
414
+ }
415
+ return currentCcjsonPath === '' ? ccjsonPath : currentCcjsonPath;
416
+ }
352
417
  genArkFiles() {
353
418
  this.projectFiles.forEach(file => {
354
419
  logger.trace('=== parse file:', file);
355
420
  try {
356
421
  const arkFile = new ArkFile_1.ArkFile(FileUtils_1.FileUtils.getFileLanguage(file, this.fileLanguages));
357
422
  arkFile.setScene(this);
358
- (0, ArkFileBuilder_1.buildArkFileFromFile)(file, this.realProjectDir, arkFile, this.projectName);
423
+ // CXXTodo: Distinguish between C++ and TS/ArkTS. Call different builder functions based on file language.
424
+ if (arkFile.getLanguage() === ArkFile_1.Language.CXX) {
425
+ this.ccjsonPath = this.findCCJsonPath(file, this.ccjsonPath);
426
+ (0, ArkFileBuilder_2.buildArkFileFromFile)(file, this.realProjectDir, arkFile, this.projectName, this.includeDirs);
427
+ }
428
+ else {
429
+ (0, ArkFileBuilder_1.buildArkFileFromFile)(file, this.realProjectDir, arkFile, this.projectName);
430
+ }
359
431
  this.setFile(arkFile);
360
432
  }
361
433
  catch (error) {
@@ -387,7 +459,13 @@ class Scene {
387
459
  try {
388
460
  const arkFile = new ArkFile_1.ArkFile(FileUtils_1.FileUtils.getFileLanguage(projectFile, this.fileLanguages));
389
461
  arkFile.setScene(this);
390
- (0, ArkFileBuilder_1.buildArkFileFromFile)(projectFile, this.getRealProjectDir(), arkFile, this.getProjectName());
462
+ // CXXTodo: Distinguish between C++ and TS/ArkTS.
463
+ if (arkFile.getLanguage() === ArkFile_1.Language.CXX) {
464
+ (0, ArkFileBuilder_2.buildArkFileFromFile)(projectFile, this.getRealProjectDir(), arkFile, this.getProjectName(), this.includeDirs);
465
+ }
466
+ else {
467
+ (0, ArkFileBuilder_1.buildArkFileFromFile)(projectFile, this.getRealProjectDir(), arkFile, this.getProjectName());
468
+ }
391
469
  for (const [modulePath, moduleName] of this.modulePath2NameMap) {
392
470
  if (arkFile.getFilePath().startsWith(modulePath)) {
393
471
  this.addArkFile2ModuleScene(modulePath, moduleName, arkFile);
@@ -409,10 +487,10 @@ class Scene {
409
487
  }
410
488
  }
411
489
  isRepeatBuildFile(projectFile) {
412
- for (const [key, file] of this.filesMap) {
413
- if (key && file.getFilePath().toLowerCase() === projectFile.toLowerCase()) {
414
- return true;
415
- }
490
+ const relativePath = path_1.default.relative(this.getRealProjectDir(), projectFile);
491
+ if (!relativePath.startsWith('..') && !path_1.default.isAbsolute(relativePath)) {
492
+ const mapKey = (0, FileUtils_1.getFileSignatureMapKey)(this.getProjectName(), relativePath);
493
+ return this.filesMap.has(mapKey);
416
494
  }
417
495
  return false;
418
496
  }
@@ -588,40 +666,50 @@ class Scene {
588
666
  addFileNode2DependencyGrap(filePath) {
589
667
  this.getDependencyFilesDeeply(filePath);
590
668
  }
669
+ /**
670
+ * Loads SDK sources into the scene. C++ SDK files are intentionally skipped: they are not parsed or registered
671
+ * here (only non-C++ SDK sources are processed).
672
+ */
591
673
  buildSdk(sdkName, sdkPath) {
674
+ const allFiles = this.collectSdkFiles(sdkName, sdkPath);
675
+ allFiles.forEach((file) => {
676
+ if (FileUtils_1.FileUtils.getFileLanguage(file, this.fileLanguages) === ArkFile_1.Language.CXX) {
677
+ return;
678
+ }
679
+ this.parseAndRegisterSdkFile(file, sdkPath, sdkName);
680
+ });
681
+ }
682
+ collectSdkFiles(sdkName, sdkPath) {
592
683
  var _a;
593
- let allFiles;
594
684
  if (sdkName === SdkUtils_1.SdkUtils.BUILT_IN_NAME) {
595
- allFiles = SdkUtils_1.SdkUtils.fetchBuiltInFiles(sdkPath);
596
- if (allFiles.length > 0) {
685
+ const builtInFiles = SdkUtils_1.SdkUtils.fetchBuiltInFiles(sdkPath);
686
+ if (builtInFiles.length > 0) {
597
687
  (_a = this.getOptions().sdkGlobalFolders) === null || _a === void 0 ? void 0 : _a.push(sdkPath);
598
688
  }
689
+ return builtInFiles;
599
690
  }
600
- else {
601
- allFiles = (0, getAllFiles_1.getAllFiles)(sdkPath, this.options.supportFileExts, this.options.ignoreFileNames);
691
+ return (0, getAllFiles_1.getAllFiles)(sdkPath, this.options.supportFileExts, this.options.ignoreFileNames);
692
+ }
693
+ parseAndRegisterSdkFile(file, sdkPath, sdkName) {
694
+ logger.trace('=== parse sdk file:', file);
695
+ try {
696
+ const arkFile = new ArkFile_1.ArkFile(FileUtils_1.FileUtils.getFileLanguage(file, this.fileLanguages));
697
+ arkFile.setScene(this);
698
+ (0, ArkFileBuilder_1.buildArkFileFromFile)(file, sdkPath, arkFile, sdkName);
699
+ ModelUtils_1.ModelUtils.getAllClassesInFile(arkFile).forEach(cls => {
700
+ var _a, _b;
701
+ (_a = cls.getDefaultArkMethod()) === null || _a === void 0 ? void 0 : _a.buildBody();
702
+ (_b = cls.getDefaultArkMethod()) === null || _b === void 0 ? void 0 : _b.freeBodyBuilder();
703
+ });
704
+ const fileSig = arkFile.getFileSignature().toMapKey();
705
+ this.sdkArkFilesMap.set(fileSig, arkFile);
706
+ SdkUtils_1.SdkUtils.buildSdkImportMap(arkFile);
707
+ SdkUtils_1.SdkUtils.loadGlobalAPI(arkFile, this.sdkGlobalMap);
708
+ }
709
+ catch (error) {
710
+ logger.error('Error parsing file:', file, error);
711
+ this.unhandledSdkFilePaths.push(file);
602
712
  }
603
- allFiles.forEach(file => {
604
- logger.trace('=== parse sdk file:', file);
605
- try {
606
- const arkFile = new ArkFile_1.ArkFile(FileUtils_1.FileUtils.getFileLanguage(file, this.fileLanguages));
607
- arkFile.setScene(this);
608
- (0, ArkFileBuilder_1.buildArkFileFromFile)(file, sdkPath, arkFile, sdkName);
609
- ModelUtils_1.ModelUtils.getAllClassesInFile(arkFile).forEach(cls => {
610
- var _a, _b;
611
- (_a = cls.getDefaultArkMethod()) === null || _a === void 0 ? void 0 : _a.buildBody();
612
- (_b = cls.getDefaultArkMethod()) === null || _b === void 0 ? void 0 : _b.freeBodyBuilder();
613
- });
614
- const fileSig = arkFile.getFileSignature().toMapKey();
615
- this.sdkArkFilesMap.set(fileSig, arkFile);
616
- SdkUtils_1.SdkUtils.buildSdkImportMap(arkFile);
617
- SdkUtils_1.SdkUtils.loadGlobalAPI(arkFile, this.sdkGlobalMap);
618
- }
619
- catch (error) {
620
- logger.error('Error parsing file:', file, error);
621
- this.unhandledSdkFilePaths.push(file);
622
- return;
623
- }
624
- });
625
713
  }
626
714
  /**
627
715
  * Build the scene for harmony project. It resolves the file path of the project first, and then fetches
@@ -998,6 +1086,16 @@ class Scene {
998
1086
  callGraphBuilder.buildRapidTypeCallGraph(entryPoints);
999
1087
  return callGraph;
1000
1088
  }
1089
+ /** Obtain the header file directories of the input C++ project dependencies. */
1090
+ getIncludeDirs() {
1091
+ return this.includeDirs;
1092
+ }
1093
+ getCcjsonPath() {
1094
+ return this.ccjsonPath;
1095
+ }
1096
+ getCppAstPath() {
1097
+ return this.cppAstPath;
1098
+ }
1001
1099
  /**
1002
1100
  * Infer type for each non-default method. It infers the type of each field/local/reference.
1003
1101
  * For example, the statement `let b = 5;`, the type of local `b` is `NumberType`; and for the statement `let s =
@@ -1019,6 +1117,7 @@ class Scene {
1019
1117
  this.buildStage = SceneBuildStage.TYPE_INFERRED;
1020
1118
  }
1021
1119
  SdkUtils_1.SdkUtils.dispose();
1120
+ ModuleUtils_1.ModuleUtils.dispose();
1022
1121
  }
1023
1122
  /**
1024
1123
  * @deprecated This method is deprecated and will be removed in the next major release.
@@ -1027,9 +1126,12 @@ class Scene {
1027
1126
  * Scheduled for removal: one month from deprecation date.
1028
1127
  */
1029
1128
  inferTypesOld() {
1129
+ // CXXTodo: Building the mapping between declarations and implementations of C++ functions in cross-file scenarios.
1130
+ IRInference_1.IRInference.mapCxxDeclAndImpl(this);
1030
1131
  this.filesMap.forEach(file => {
1031
1132
  try {
1032
- IRInference_1.IRInference.inferFile(file);
1133
+ // CXXTodo: Distinguish between C++ and TS/ArkTS.
1134
+ file.getLanguage() === ArkFile_1.Language.CXX ? IRInference_1.IRInference.inferFile(file) : IRInference_2.IRInference.inferFile(file);
1033
1135
  }
1034
1136
  catch (error) {
1035
1137
  logger.error('Error inferring types of project file:', file.getFileSignature(), error);
@@ -1415,7 +1517,12 @@ class ModuleScene {
1415
1517
  const arkFile = new ArkFile_1.ArkFile(FileUtils_1.FileUtils.getFileLanguage(file, this.projectScene.getFileLanguages()));
1416
1518
  arkFile.setScene(this.projectScene);
1417
1519
  arkFile.setModuleScene(this);
1418
- (0, ArkFileBuilder_1.buildArkFileFromFile)(file, this.projectScene.getRealProjectDir(), arkFile, this.projectScene.getProjectName());
1520
+ if (arkFile.getLanguage() === ArkFile_1.Language.CXX) {
1521
+ (0, ArkFileBuilder_2.buildArkFileFromFile)(file, this.projectScene.getRealProjectDir(), arkFile, this.projectScene.getProjectName(), this.projectScene.getIncludeDirs());
1522
+ }
1523
+ else {
1524
+ (0, ArkFileBuilder_1.buildArkFileFromFile)(file, this.projectScene.getRealProjectDir(), arkFile, this.projectScene.getProjectName());
1525
+ }
1419
1526
  this.projectScene.setFile(arkFile);
1420
1527
  }
1421
1528
  catch (error) {
@@ -4,6 +4,7 @@ import { Stmt } from '../../core/base/Stmt';
4
4
  import { ArkClass } from '../../core/model/ArkClass';
5
5
  import { ArkMethod } from '../../core/model/ArkMethod';
6
6
  import { MethodSignature } from '../../core/model/ArkSignature';
7
+ import { IntWorkList } from '../../utils/IntWorkList';
7
8
  import { NodeID } from '../../core/graph/BaseExplicitGraph';
8
9
  import { CallGraph, FuncID, CallSite } from '../model/CallGraph';
9
10
  import { CallGraphBuilder } from '../model/builder/CallGraphBuilder';
@@ -12,7 +13,7 @@ export declare abstract class AbstractAnalysis {
12
13
  protected scene: Scene;
13
14
  protected cg: CallGraph;
14
15
  protected cgBuilder: CallGraphBuilder;
15
- protected workList: FuncID[];
16
+ protected workList: IntWorkList;
16
17
  protected processedMethod: IPtsCollection<FuncID>;
17
18
  private classHierarchyCache;
18
19
  constructor(s: Scene, cg: CallGraph);
@@ -24,9 +25,9 @@ export declare abstract class AbstractAnalysis {
24
25
  getClassHierarchy(arkClass: ArkClass): ArkClass[];
25
26
  start(displayGeneratedMethod: boolean): void;
26
27
  projectStart(displayGeneratedMethod: boolean): void;
27
- private processCallSite;
28
+ protected processCallSite(method: FuncID, cs: CallSite, displayGeneratedMethod: boolean, isProject?: boolean): void;
28
29
  protected init(): void;
29
- protected processMethod(methodID: FuncID): CallSite[];
30
+ protected processMethod(methodID: FuncID, displayGeneratedMethod: boolean, isProject?: boolean): void;
30
31
  protected getParamAnonymousMethod(invokeExpr: AbstractInvokeExpr): MethodSignature[];
31
32
  protected addCallGraphEdge(caller: FuncID, callee: ArkMethod | null, cs: CallSite, displayGeneratedMethod: boolean): void;
32
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/algorithm/AbstractAnalysis.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAA2B,cAAc,EAAqB,MAAM,0BAA0B,CAAC;AAItG,8BAAsB,gBAAgB;IAClC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC;IACxB,SAAS,CAAC,SAAS,EAAG,gBAAgB,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IAClC,SAAS,CAAC,eAAe,EAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,CAAC,mBAAmB,CAAsC;gBAErD,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS;IAK5B,QAAQ,IAAI,KAAK;IAIjB,YAAY,IAAI,SAAS;IAIhC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,QAAQ,EAAE;IAClF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE;IAExD,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,GAAG,SAAS;IAQxE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE;IAwBjD,KAAK,CAAC,sBAAsB,EAAE,OAAO,GAAG,IAAI;IAqB5C,YAAY,CAAC,sBAAsB,EAAE,OAAO,GAAG,IAAI;IAoB1D,OAAO,CAAC,eAAe;IAqBvB,SAAS,CAAC,IAAI,IAAI,IAAI;IAOtB,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IA0BrD,SAAS,CAAC,uBAAuB,CAAC,UAAU,EAAE,kBAAkB,GAAG,eAAe,EAAE;IAapF,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,GAAG,IAAI;CAU5H"}
1
+ {"version":3,"file":"AbstractAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/algorithm/AbstractAnalysis.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAgC,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAA2B,cAAc,EAAqB,MAAM,0BAA0B,CAAC;AAItG,8BAAsB,gBAAgB;IAClC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC;IACxB,SAAS,CAAC,SAAS,EAAG,gBAAgB,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAqB;IACpD,SAAS,CAAC,eAAe,EAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,CAAC,mBAAmB,CAAsC;gBAErD,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS;IAK5B,QAAQ,IAAI,KAAK;IAIjB,YAAY,IAAI,SAAS;IAIhC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,QAAQ,EAAE;IAClF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE;IAExD,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,GAAG,SAAS;IAQxE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE;IAwBjD,KAAK,CAAC,sBAAsB,EAAE,OAAO,GAAG,IAAI;IAmB5C,YAAY,CAAC,sBAAsB,EAAE,OAAO,GAAG,IAAI;IAkB1D,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,SAAS,GAAE,OAAe,GAAG,IAAI;IAqB1H,SAAS,CAAC,IAAI,IAAI,IAAI;IAOtB,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,SAAS,GAAE,OAAe,GAAG,IAAI;IA2B5G,SAAS,CAAC,uBAAuB,CAAC,UAAU,EAAE,kBAAkB,GAAG,eAAe,EAAE;IAapF,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,GAAG,IAAI;CAU5H"}