arkanalyzer 1.0.29 → 1.0.31

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 (86) hide show
  1. package/lib/Scene.d.ts +7 -0
  2. package/lib/Scene.d.ts.map +1 -1
  3. package/lib/Scene.js +196 -173
  4. package/lib/VFG/builder/DVFGBuilder.d.ts.map +1 -1
  5. package/lib/VFG/builder/DVFGBuilder.js +11 -6
  6. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +3 -1
  7. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
  8. package/lib/callgraph/algorithm/AbstractAnalysis.js +18 -10
  9. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
  10. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +8 -7
  11. package/lib/callgraph/common/Statistics.d.ts.map +1 -1
  12. package/lib/callgraph/common/Statistics.js +25 -24
  13. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  14. package/lib/callgraph/model/CallGraph.js +0 -1
  15. package/lib/callgraph/pointerAnalysis/Context.d.ts.map +1 -1
  16. package/lib/callgraph/pointerAnalysis/Context.js +0 -1
  17. package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts +9 -3
  18. package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts.map +1 -1
  19. package/lib/callgraph/pointerAnalysis/PTAUtils.js +32 -18
  20. package/lib/callgraph/pointerAnalysis/Pag.d.ts +17 -1
  21. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  22. package/lib/callgraph/pointerAnalysis/Pag.js +74 -27
  23. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +51 -18
  24. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  25. package/lib/callgraph/pointerAnalysis/PagBuilder.js +533 -346
  26. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  27. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +15 -14
  28. package/lib/core/base/Local.js +2 -2
  29. package/lib/core/base/Type.d.ts +10 -1
  30. package/lib/core/base/Type.d.ts.map +1 -1
  31. package/lib/core/base/Type.js +18 -1
  32. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  33. package/lib/core/common/ArkValueTransformer.js +3 -1
  34. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  35. package/lib/core/common/DummyMainCreater.js +17 -20
  36. package/lib/core/common/IRInference.d.ts.map +1 -1
  37. package/lib/core/common/IRInference.js +21 -12
  38. package/lib/core/common/TypeInference.d.ts +1 -0
  39. package/lib/core/common/TypeInference.d.ts.map +1 -1
  40. package/lib/core/common/TypeInference.js +30 -4
  41. package/lib/core/dataflow/DataflowSolver.d.ts +1 -0
  42. package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -1
  43. package/lib/core/dataflow/DataflowSolver.js +21 -17
  44. package/lib/core/dataflow/ReachingDef.d.ts.map +1 -1
  45. package/lib/core/dataflow/ReachingDef.js +6 -0
  46. package/lib/core/dataflow/UndefinedVariable.d.ts.map +1 -1
  47. package/lib/core/dataflow/UndefinedVariable.js +0 -25
  48. package/lib/core/graph/Cfg.d.ts +1 -0
  49. package/lib/core/graph/Cfg.d.ts.map +1 -1
  50. package/lib/core/graph/Cfg.js +49 -45
  51. package/lib/core/graph/DominanceFinder.js +19 -19
  52. package/lib/core/graph/builder/ViewTreeBuilder.d.ts +1 -0
  53. package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
  54. package/lib/core/graph/builder/ViewTreeBuilder.js +34 -31
  55. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  56. package/lib/core/model/ArkMethod.js +13 -6
  57. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  58. package/lib/core/model/builder/builderUtils.js +72 -63
  59. package/lib/save/serializeArkIR.d.ts.map +1 -1
  60. package/lib/save/serializeArkIR.js +11 -24
  61. package/lib/save/source/SourceBody.js +10 -10
  62. package/lib/save/source/SourceFilePrinter.d.ts +1 -0
  63. package/lib/save/source/SourceFilePrinter.d.ts.map +1 -1
  64. package/lib/save/source/SourceFilePrinter.js +11 -8
  65. package/lib/save/source/SourceNamespace.d.ts +1 -0
  66. package/lib/save/source/SourceNamespace.d.ts.map +1 -1
  67. package/lib/save/source/SourceNamespace.js +11 -8
  68. package/lib/save/source/SourceStmt.d.ts +1 -0
  69. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  70. package/lib/save/source/SourceStmt.js +37 -35
  71. package/lib/save/source/SourceTransformer.d.ts +2 -0
  72. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  73. package/lib/save/source/SourceTransformer.js +64 -54
  74. package/lib/transformer/StaticSingleAssignmentFormer.d.ts +5 -0
  75. package/lib/transformer/StaticSingleAssignmentFormer.d.ts.map +1 -1
  76. package/lib/transformer/StaticSingleAssignmentFormer.js +119 -101
  77. package/lib/utils/CfgStructualAnalysis.d.ts +1 -0
  78. package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -1
  79. package/lib/utils/CfgStructualAnalysis.js +28 -24
  80. package/lib/utils/FileUtils.d.ts.map +1 -1
  81. package/lib/utils/FileUtils.js +14 -12
  82. package/lib/utils/callGraphUtils.d.ts.map +1 -1
  83. package/lib/utils/callGraphUtils.js +26 -23
  84. package/lib/utils/entryMethodUtils.d.ts.map +1 -1
  85. package/lib/utils/entryMethodUtils.js +11 -8
  86. package/package.json +2 -2
package/lib/Scene.d.ts CHANGED
@@ -276,7 +276,14 @@ export declare class Scene {
276
276
  ```
277
277
  */
278
278
  inferSimpleTypes(): void;
279
+ private addNSClasses;
280
+ private addNSExportedClasses;
281
+ private addFileImportedClasses;
279
282
  getClassMap(): Map<FileSignature | NamespaceSignature, ArkClass[]>;
283
+ private addNSLocals;
284
+ private addNSExportedLocals;
285
+ private addFileImportLocals;
286
+ private handleNestedNSLocals;
280
287
  getGlobalVariableMap(): Map<FileSignature | NamespaceSignature, Local[]>;
281
288
  getStaticInitMethods(): ArkMethod[];
282
289
  buildClassDone(): boolean;
@@ -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
@@ -986,8 +986,98 @@ class Scene {
986
986
  }
987
987
  }
988
988
  }
989
- getClassMap() {
989
+ addNSClasses(namespaceStack, finalNamespaces, classMap, parentMap) {
990
+ while (namespaceStack.length > 0) {
991
+ const ns = namespaceStack.shift();
992
+ const nsClass = [];
993
+ for (const arkClass of ns.getClasses()) {
994
+ nsClass.push(arkClass);
995
+ }
996
+ classMap.set(ns.getNamespaceSignature(), nsClass);
997
+ if (ns.getNamespaces().length === 0) {
998
+ finalNamespaces.push(ns);
999
+ }
1000
+ else {
1001
+ for (const nsns of ns.getNamespaces()) {
1002
+ namespaceStack.push(nsns);
1003
+ parentMap.set(nsns, ns);
1004
+ }
1005
+ }
1006
+ }
1007
+ }
1008
+ addNSExportedClasses(finalNamespaces, classMap, parentMap) {
990
1009
  var _a, _b, _c, _d;
1010
+ while (finalNamespaces.length > 0) {
1011
+ const finalNS = finalNamespaces.shift();
1012
+ const exportClass = [];
1013
+ for (const arkClass of finalNS.getClasses()) {
1014
+ if (arkClass.isExported()) {
1015
+ exportClass.push(arkClass);
1016
+ }
1017
+ }
1018
+ const parent = parentMap.get(finalNS);
1019
+ if (parent instanceof ArkNamespace_1.ArkNamespace) {
1020
+ (_a = classMap.get(parent.getNamespaceSignature())) === null || _a === void 0 ? void 0 : _a.push(...exportClass);
1021
+ }
1022
+ else if (parent instanceof ArkFile_1.ArkFile) {
1023
+ (_b = classMap.get(parent.getFileSignature())) === null || _b === void 0 ? void 0 : _b.push(...exportClass);
1024
+ }
1025
+ let p = finalNS;
1026
+ while (!(parentMap.get(p) instanceof ArkFile_1.ArkFile) && p.isExported()) {
1027
+ const grandParent = parentMap.get(parentMap.get(p));
1028
+ if (grandParent instanceof ArkNamespace_1.ArkNamespace) {
1029
+ (_c = classMap.get(grandParent.getNamespaceSignature())) === null || _c === void 0 ? void 0 : _c.push(...exportClass);
1030
+ p = parentMap.get(p);
1031
+ }
1032
+ else if (grandParent instanceof ArkFile_1.ArkFile) {
1033
+ (_d = classMap.get(grandParent.getFileSignature())) === null || _d === void 0 ? void 0 : _d.push(...exportClass);
1034
+ break;
1035
+ }
1036
+ }
1037
+ if (parent instanceof ArkNamespace_1.ArkNamespace && !finalNamespaces.includes(parent)) {
1038
+ finalNamespaces.push(parent);
1039
+ }
1040
+ }
1041
+ }
1042
+ addFileImportedClasses(file, classMap) {
1043
+ const importClasses = [];
1044
+ const importNameSpaces = [];
1045
+ for (const importInfo of file.getImportInfos()) {
1046
+ const importClass = ModelUtils_1.ModelUtils.getClassInImportInfoWithName(importInfo.getImportClauseName(), file);
1047
+ if (importClass && !importClasses.includes(importClass)) {
1048
+ importClasses.push(importClass);
1049
+ continue;
1050
+ }
1051
+ const importNameSpace = ModelUtils_1.ModelUtils.getNamespaceInImportInfoWithName(importInfo.getImportClauseName(), file);
1052
+ if (importNameSpace && !importNameSpaces.includes(importNameSpace)) {
1053
+ try {
1054
+ // 遗留问题:只统计了项目文件的namespace,没统计sdk文件内部的引入
1055
+ const importNameSpaceClasses = classMap.get(importNameSpace.getNamespaceSignature());
1056
+ importClasses.push(...importNameSpaceClasses.filter(c => !importClasses.includes(c) && c.getName() !== Const_1.DEFAULT_ARK_CLASS_NAME));
1057
+ }
1058
+ catch (_a) {
1059
+ }
1060
+ }
1061
+ }
1062
+ const fileClasses = classMap.get(file.getFileSignature());
1063
+ fileClasses.push(...importClasses.filter(c => !fileClasses.includes(c)));
1064
+ // 子节点加上父节点的class
1065
+ const namespaceStack = [...file.getNamespaces()];
1066
+ for (const ns of namespaceStack) {
1067
+ const nsClasses = classMap.get(ns.getNamespaceSignature());
1068
+ nsClasses.push(...fileClasses.filter(c => !nsClasses.includes(c) && c.getName() !== Const_1.DEFAULT_ARK_CLASS_NAME));
1069
+ }
1070
+ while (namespaceStack.length > 0) {
1071
+ const ns = namespaceStack.shift();
1072
+ const nsClasses = classMap.get(ns.getNamespaceSignature());
1073
+ for (const nsns of ns.getNamespaces()) {
1074
+ const nsnsClasses = classMap.get(nsns.getNamespaceSignature());
1075
+ nsnsClasses.push(...nsClasses.filter(c => !nsnsClasses.includes(c) && c.getName() !== Const_1.DEFAULT_ARK_CLASS_NAME));
1076
+ namespaceStack.push(nsns);
1077
+ }
1078
+ }
1079
+ }
1080
+ getClassMap() {
991
1081
  const classMap = new Map();
992
1082
  for (const file of this.getFiles()) {
993
1083
  const fileClass = [];
@@ -1003,99 +1093,124 @@ class Scene {
1003
1093
  }
1004
1094
  classMap.set(file.getFileSignature(), fileClass);
1005
1095
  // 第一轮遍历,加上每个namespace自己的class
1006
- while (namespaceStack.length > 0) {
1007
- const ns = namespaceStack.shift();
1008
- const nsClass = [];
1009
- for (const arkClass of ns.getClasses()) {
1010
- nsClass.push(arkClass);
1011
- }
1012
- classMap.set(ns.getNamespaceSignature(), nsClass);
1013
- if (ns.getNamespaces().length === 0) {
1014
- finalNamespaces.push(ns);
1015
- }
1016
- else {
1017
- for (const nsns of ns.getNamespaces()) {
1018
- namespaceStack.push(nsns);
1019
- parentMap.set(nsns, ns);
1020
- }
1021
- }
1022
- }
1096
+ this.addNSClasses(namespaceStack, finalNamespaces, classMap, parentMap);
1023
1097
  // 第二轮遍历,父节点加上子节点的export的class
1024
- while (finalNamespaces.length > 0) {
1025
- const finalNS = finalNamespaces.shift();
1026
- const exportClass = [];
1027
- for (const arkClass of finalNS.getClasses()) {
1028
- if (arkClass.isExported()) {
1029
- exportClass.push(arkClass);
1030
- }
1098
+ this.addNSExportedClasses(finalNamespaces, classMap, parentMap);
1099
+ }
1100
+ for (const file of this.getFiles()) {
1101
+ // 文件加上import的class,包括ns的
1102
+ this.addFileImportedClasses(file, classMap);
1103
+ }
1104
+ return classMap;
1105
+ }
1106
+ addNSLocals(namespaceStack, finalNamespaces, parentMap, globalVariableMap) {
1107
+ var _a;
1108
+ while (namespaceStack.length > 0) {
1109
+ const ns = namespaceStack.shift();
1110
+ const nsGlobalLocals = [];
1111
+ (_a = ns.getDefaultClass().getDefaultArkMethod().getBody()) === null || _a === void 0 ? void 0 : _a.getLocals().forEach(local => {
1112
+ if (local.getDeclaringStmt() && local.getName() !== 'this' && local.getName()[0] !== '$') {
1113
+ nsGlobalLocals.push(local);
1031
1114
  }
1032
- const parent = parentMap.get(finalNS);
1033
- if (parent instanceof ArkNamespace_1.ArkNamespace) {
1034
- (_a = classMap.get(parent.getNamespaceSignature())) === null || _a === void 0 ? void 0 : _a.push(...exportClass);
1115
+ });
1116
+ globalVariableMap.set(ns.getNamespaceSignature(), nsGlobalLocals);
1117
+ if (ns.getNamespaces().length === 0) {
1118
+ finalNamespaces.push(ns);
1119
+ }
1120
+ else {
1121
+ for (const nsns of ns.getNamespaces()) {
1122
+ namespaceStack.push(nsns);
1123
+ parentMap.set(nsns, ns);
1035
1124
  }
1036
- else if (parent instanceof ArkFile_1.ArkFile) {
1037
- (_b = classMap.get(parent.getFileSignature())) === null || _b === void 0 ? void 0 : _b.push(...exportClass);
1125
+ }
1126
+ }
1127
+ }
1128
+ addNSExportedLocals(finalNamespaces, globalVariableMap, parentMap) {
1129
+ var _a, _b, _c, _d;
1130
+ while (finalNamespaces.length > 0) {
1131
+ const finalNS = finalNamespaces.shift();
1132
+ const exportLocal = [];
1133
+ for (const exportInfo of finalNS.getExportInfos()) {
1134
+ if (exportInfo.getExportClauseType() === ArkExport_1.ExportType.LOCAL && exportInfo.getArkExport()) {
1135
+ exportLocal.push(exportInfo.getArkExport());
1038
1136
  }
1039
- let p = finalNS;
1040
- while (!(parentMap.get(p) instanceof ArkFile_1.ArkFile) && p.isExported()) {
1041
- const grandParent = parentMap.get(parentMap.get(p));
1042
- if (grandParent instanceof ArkNamespace_1.ArkNamespace) {
1043
- (_c = classMap.get(grandParent.getNamespaceSignature())) === null || _c === void 0 ? void 0 : _c.push(...exportClass);
1044
- p = parentMap.get(p);
1045
- }
1046
- else if (grandParent instanceof ArkFile_1.ArkFile) {
1047
- (_d = classMap.get(grandParent.getFileSignature())) === null || _d === void 0 ? void 0 : _d.push(...exportClass);
1048
- break;
1049
- }
1137
+ }
1138
+ const parent = parentMap.get(finalNS);
1139
+ if (parent instanceof ArkNamespace_1.ArkNamespace) {
1140
+ (_a = globalVariableMap.get(parent.getNamespaceSignature())) === null || _a === void 0 ? void 0 : _a.push(...exportLocal);
1141
+ }
1142
+ else if (parent instanceof ArkFile_1.ArkFile) {
1143
+ (_b = globalVariableMap.get(parent.getFileSignature())) === null || _b === void 0 ? void 0 : _b.push(...exportLocal);
1144
+ }
1145
+ let p = finalNS;
1146
+ while (!(parentMap.get(p) instanceof ArkFile_1.ArkFile) && p.isExported()) {
1147
+ const grandParent = parentMap.get(parentMap.get(p));
1148
+ if (grandParent instanceof ArkNamespace_1.ArkNamespace) {
1149
+ (_c = globalVariableMap.get(grandParent.getNamespaceSignature())) === null || _c === void 0 ? void 0 : _c.push(...exportLocal);
1150
+ p = parentMap.get(p);
1050
1151
  }
1051
- if (parent instanceof ArkNamespace_1.ArkNamespace && !finalNamespaces.includes(parent)) {
1052
- finalNamespaces.push(parent);
1152
+ else if (grandParent instanceof ArkFile_1.ArkFile) {
1153
+ (_d = globalVariableMap.get(grandParent.getFileSignature())) === null || _d === void 0 ? void 0 : _d.push(...exportLocal);
1154
+ break;
1053
1155
  }
1054
1156
  }
1157
+ if (parent instanceof ArkNamespace_1.ArkNamespace && !finalNamespaces.includes(parent)) {
1158
+ finalNamespaces.push(parent);
1159
+ }
1055
1160
  }
1056
- for (const file of this.getFiles()) {
1057
- // 文件加上import的class,包括ns的
1058
- const importClasses = [];
1059
- const importNameSpaces = [];
1060
- for (const importInfo of file.getImportInfos()) {
1061
- const importClass = ModelUtils_1.ModelUtils.getClassInImportInfoWithName(importInfo.getImportClauseName(), file);
1062
- if (importClass && !importClasses.includes(importClass)) {
1063
- importClasses.push(importClass);
1064
- continue;
1161
+ }
1162
+ addFileImportLocals(file, globalVariableMap) {
1163
+ const importLocals = [];
1164
+ const importNameSpaces = [];
1165
+ for (const importInfo of file.getImportInfos()) {
1166
+ const importLocal = ModelUtils_1.ModelUtils.getLocalInImportInfoWithName(importInfo.getImportClauseName(), file);
1167
+ if (importLocal && !importLocals.includes(importLocal)) {
1168
+ importLocals.push(importLocal);
1169
+ }
1170
+ const importNameSpace = ModelUtils_1.ModelUtils.getNamespaceInImportInfoWithName(importInfo.getImportClauseName(), file);
1171
+ if (importNameSpace && !importNameSpaces.includes(importNameSpace)) {
1172
+ try {
1173
+ // 遗留问题:只统计了项目文件,没统计sdk文件内部的引入
1174
+ const importNameSpaceClasses = globalVariableMap.get(importNameSpace.getNamespaceSignature());
1175
+ importLocals.push(...importNameSpaceClasses.filter(c => !importLocals.includes(c) && c.getName() !== Const_1.DEFAULT_ARK_CLASS_NAME));
1065
1176
  }
1066
- const importNameSpace = ModelUtils_1.ModelUtils.getNamespaceInImportInfoWithName(importInfo.getImportClauseName(), file);
1067
- if (importNameSpace && !importNameSpaces.includes(importNameSpace)) {
1068
- try {
1069
- // 遗留问题:只统计了项目文件的namespace,没统计sdk文件内部的引入
1070
- const importNameSpaceClasses = classMap.get(importNameSpace.getNamespaceSignature());
1071
- importClasses.push(...importNameSpaceClasses.filter(c => !importClasses.includes(c) && c.getName() !== Const_1.DEFAULT_ARK_CLASS_NAME));
1072
- }
1073
- catch (_e) {
1074
- }
1177
+ catch (_a) {
1075
1178
  }
1076
1179
  }
1077
- const fileClasses = classMap.get(file.getFileSignature());
1078
- fileClasses.push(...importClasses.filter(c => !fileClasses.includes(c)));
1079
- // 子节点加上父节点的class
1080
- const namespaceStack = [...file.getNamespaces()];
1081
- for (const ns of namespaceStack) {
1082
- const nsClasses = classMap.get(ns.getNamespaceSignature());
1083
- nsClasses.push(...fileClasses.filter(c => !nsClasses.includes(c) && c.getName() !== Const_1.DEFAULT_ARK_CLASS_NAME));
1084
- }
1085
- while (namespaceStack.length > 0) {
1086
- const ns = namespaceStack.shift();
1087
- const nsClasses = classMap.get(ns.getNamespaceSignature());
1088
- for (const nsns of ns.getNamespaces()) {
1089
- const nsnsClasses = classMap.get(nsns.getNamespaceSignature());
1090
- nsnsClasses.push(...nsClasses.filter(c => !nsnsClasses.includes(c) && c.getName() !== Const_1.DEFAULT_ARK_CLASS_NAME));
1091
- namespaceStack.push(nsns);
1180
+ }
1181
+ const fileLocals = globalVariableMap.get(file.getFileSignature());
1182
+ fileLocals.push(...importLocals.filter(c => !fileLocals.includes(c)));
1183
+ // 子节点加上父节点的local
1184
+ const namespaceStack = [...file.getNamespaces()];
1185
+ for (const ns of namespaceStack) {
1186
+ const nsLocals = globalVariableMap.get(ns.getNamespaceSignature());
1187
+ const nsLocalNameSet = new Set(nsLocals.map(item => item.getName()));
1188
+ for (const local of fileLocals) {
1189
+ if (!nsLocalNameSet.has(local.getName())) {
1190
+ nsLocals.push(local);
1092
1191
  }
1093
1192
  }
1094
1193
  }
1095
- return classMap;
1194
+ while (namespaceStack.length > 0) {
1195
+ const ns = namespaceStack.shift();
1196
+ const nsLocals = globalVariableMap.get(ns.getNamespaceSignature());
1197
+ for (const nsns of ns.getNamespaces()) {
1198
+ this.handleNestedNSLocals(nsns, nsLocals, globalVariableMap);
1199
+ namespaceStack.push(nsns);
1200
+ }
1201
+ }
1202
+ }
1203
+ handleNestedNSLocals(nsns, nsLocals, globalVariableMap) {
1204
+ const nsnsLocals = globalVariableMap.get(nsns.getNamespaceSignature());
1205
+ const nsnsLocalNameSet = new Set(nsnsLocals.map(item => item.getName()));
1206
+ for (const local of nsLocals) {
1207
+ if (!nsnsLocalNameSet.has(local.getName())) {
1208
+ nsnsLocals.push(local);
1209
+ }
1210
+ }
1096
1211
  }
1097
1212
  getGlobalVariableMap() {
1098
- var _a, _b, _c, _d, _e, _f, _g;
1213
+ var _a, _b;
1099
1214
  const globalVariableMap = new Map();
1100
1215
  for (const file of this.getFiles()) {
1101
1216
  const namespaceStack = [];
@@ -1113,105 +1228,13 @@ class Scene {
1113
1228
  parentMap.set(ns, file);
1114
1229
  }
1115
1230
  // 第一轮遍历,加上每个namespace自己的local
1116
- while (namespaceStack.length > 0) {
1117
- const ns = namespaceStack.shift();
1118
- const nsGlobalLocals = [];
1119
- (_c = ns.getDefaultClass().getDefaultArkMethod().getBody()) === null || _c === void 0 ? void 0 : _c.getLocals().forEach(local => {
1120
- if (local.getDeclaringStmt() && local.getName() !== 'this' && local.getName()[0] !== '$') {
1121
- nsGlobalLocals.push(local);
1122
- }
1123
- });
1124
- globalVariableMap.set(ns.getNamespaceSignature(), nsGlobalLocals);
1125
- if (ns.getNamespaces().length === 0) {
1126
- finalNamespaces.push(ns);
1127
- }
1128
- else {
1129
- for (const nsns of ns.getNamespaces()) {
1130
- namespaceStack.push(nsns);
1131
- parentMap.set(nsns, ns);
1132
- }
1133
- }
1134
- }
1231
+ this.addNSLocals(namespaceStack, finalNamespaces, parentMap, globalVariableMap);
1135
1232
  // 第二轮遍历,父节点加上子节点的export的local
1136
- while (finalNamespaces.length > 0) {
1137
- const finalNS = finalNamespaces.shift();
1138
- const exportLocal = [];
1139
- for (const exportInfo of finalNS.getExportInfos()) {
1140
- if (exportInfo.getExportClauseType() === ArkExport_1.ExportType.LOCAL && exportInfo.getArkExport()) {
1141
- exportLocal.push(exportInfo.getArkExport());
1142
- }
1143
- }
1144
- const parent = parentMap.get(finalNS);
1145
- if (parent instanceof ArkNamespace_1.ArkNamespace) {
1146
- (_d = globalVariableMap.get(parent.getNamespaceSignature())) === null || _d === void 0 ? void 0 : _d.push(...exportLocal);
1147
- }
1148
- else if (parent instanceof ArkFile_1.ArkFile) {
1149
- (_e = globalVariableMap.get(parent.getFileSignature())) === null || _e === void 0 ? void 0 : _e.push(...exportLocal);
1150
- }
1151
- let p = finalNS;
1152
- while (!(parentMap.get(p) instanceof ArkFile_1.ArkFile) && p.isExported()) {
1153
- const grandParent = parentMap.get(parentMap.get(p));
1154
- if (grandParent instanceof ArkNamespace_1.ArkNamespace) {
1155
- (_f = globalVariableMap.get(grandParent.getNamespaceSignature())) === null || _f === void 0 ? void 0 : _f.push(...exportLocal);
1156
- p = parentMap.get(p);
1157
- }
1158
- else if (grandParent instanceof ArkFile_1.ArkFile) {
1159
- (_g = globalVariableMap.get(grandParent.getFileSignature())) === null || _g === void 0 ? void 0 : _g.push(...exportLocal);
1160
- break;
1161
- }
1162
- }
1163
- if (parent instanceof ArkNamespace_1.ArkNamespace && !finalNamespaces.includes(parent)) {
1164
- finalNamespaces.push(parent);
1165
- }
1166
- }
1233
+ this.addNSExportedLocals(finalNamespaces, globalVariableMap, parentMap);
1167
1234
  }
1168
1235
  for (const file of this.getFiles()) {
1169
1236
  // 文件加上import的local,包括ns的
1170
- const importLocals = [];
1171
- const importNameSpaces = [];
1172
- for (const importInfo of file.getImportInfos()) {
1173
- const importLocal = ModelUtils_1.ModelUtils.getLocalInImportInfoWithName(importInfo.getImportClauseName(), file);
1174
- if (importLocal && !importLocals.includes(importLocal)) {
1175
- importLocals.push(importLocal);
1176
- }
1177
- const importNameSpace = ModelUtils_1.ModelUtils.getNamespaceInImportInfoWithName(importInfo.getImportClauseName(), file);
1178
- if (importNameSpace && !importNameSpaces.includes(importNameSpace)) {
1179
- try {
1180
- // 遗留问题:只统计了项目文件,没统计sdk文件内部的引入
1181
- const importNameSpaceClasses = globalVariableMap.get(importNameSpace.getNamespaceSignature());
1182
- importLocals.push(...importNameSpaceClasses.filter(c => !importLocals.includes(c) && c.getName() !== Const_1.DEFAULT_ARK_CLASS_NAME));
1183
- }
1184
- catch (_h) {
1185
- }
1186
- }
1187
- }
1188
- const fileLocals = globalVariableMap.get(file.getFileSignature());
1189
- fileLocals.push(...importLocals.filter(c => !fileLocals.includes(c)));
1190
- // 子节点加上父节点的local
1191
- const namespaceStack = [...file.getNamespaces()];
1192
- for (const ns of namespaceStack) {
1193
- const nsLocals = globalVariableMap.get(ns.getNamespaceSignature());
1194
- const nsLocalNameSet = new Set(nsLocals.map(item => item.getName()));
1195
- for (const local of fileLocals) {
1196
- if (!nsLocalNameSet.has(local.getName())) {
1197
- nsLocals.push(local);
1198
- }
1199
- }
1200
- }
1201
- while (namespaceStack.length > 0) {
1202
- const ns = namespaceStack.shift();
1203
- const nsLocals = globalVariableMap.get(ns.getNamespaceSignature());
1204
- for (const nsns of ns.getNamespaces()) {
1205
- const nsnsLocals = globalVariableMap.get(nsns.getNamespaceSignature());
1206
- const nsnsLocalNameSet = new Set(nsnsLocals.map(item => item.getName()));
1207
- for (const local of nsLocals) {
1208
- if (!nsnsLocalNameSet.has(local.getName())) {
1209
- nsnsLocals.push(local);
1210
- }
1211
- }
1212
- namespaceStack.push(nsns);
1213
- }
1214
- }
1237
+ this.addFileImportLocals(file, globalVariableMap);
1215
1238
  }
1216
1239
  return globalVariableMap;
1217
1240
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DVFGBuilder.d.ts","sourceRoot":"","sources":["../../../src/VFG/builder/DVFGBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwE,IAAI,EAA6C,MAAM,sBAAsB,CAAC;AAK7J,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,qBAAa,WAAW;IACpB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,KAAK,CAAQ;gBAET,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK;IAKzB,KAAK;IAIL,oBAAoB,CAAC,CAAC,EAAE,SAAS;IAsCxC,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,aAAa;IAcd,gBAAgB,CAAC,IAAI,EAAE,IAAI;IAI3B,YAAY,IAAI,IAAI;IAEpB,YAAY,IAAI,IAAI;CAC9B"}
1
+ {"version":3,"file":"DVFGBuilder.d.ts","sourceRoot":"","sources":["../../../src/VFG/builder/DVFGBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwE,IAAI,EAA6C,MAAM,sBAAsB,CAAC;AAM7J,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,qBAAa,WAAW;IACpB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,KAAK,CAAQ;gBAET,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK;IAKzB,KAAK;IAIL,oBAAoB,CAAC,CAAC,EAAE,SAAS;IAyCxC,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,aAAa;IAcd,gBAAgB,CAAC,IAAI,EAAE,IAAI;IAI3B,YAAY,IAAI,IAAI;IAEpB,YAAY,IAAI,IAAI;CAC9B"}
@@ -27,7 +27,9 @@ class DVFGBuilder {
27
27
  this.scene = s;
28
28
  }
29
29
  build() {
30
- this.scene.getMethods().map(m => this.buildForSingleMethod(m));
30
+ this.scene.getMethods().forEach(m => { if (m.getCfg()) {
31
+ this.buildForSingleMethod(m);
32
+ } });
31
33
  }
32
34
  buildForSingleMethod(m) {
33
35
  let problem = new ReachingDef_1.ReachingDefProblem(m);
@@ -47,6 +49,13 @@ class DVFGBuilder {
47
49
  }
48
50
  });
49
51
  solution.in.forEach((defs, reach) => {
52
+ let addNewNodes = (defId, def, reach) => {
53
+ if (defs.test(defId)) {
54
+ let srcNode = this.dvfg.getOrNewDVFGNode(def);
55
+ let dstNode = this.dvfg.getOrNewDVFGNode(reach);
56
+ this.dvfg.addDVFGEdge(srcNode, dstNode);
57
+ }
58
+ };
50
59
  const reachStmt = problem.flowGraph.getNode(reach);
51
60
  this.getStmtUsedValues(reachStmt).forEach(use => {
52
61
  var _a;
@@ -56,11 +65,7 @@ class DVFGBuilder {
56
65
  }
57
66
  (_a = defMap.get(target)) === null || _a === void 0 ? void 0 : _a.forEach((defStmt) => {
58
67
  let defId = problem.flowGraph.getNodeID(defStmt);
59
- if (defs.test(defId)) {
60
- let srcNode = this.dvfg.getOrNewDVFGNode(defStmt);
61
- let dstNode = this.dvfg.getOrNewDVFGNode(reachStmt);
62
- this.dvfg.addDVFGEdge(srcNode, dstNode);
63
- }
68
+ addNewNodes(defId, defStmt, reachStmt);
64
69
  });
65
70
  });
66
71
  });
@@ -7,12 +7,13 @@ import { MethodSignature } from '../../core/model/ArkSignature';
7
7
  import { NodeID } from '../../core/graph/BaseExplicitGraph';
8
8
  import { CallGraph, FuncID, CallSite } from '../model/CallGraph';
9
9
  import { CallGraphBuilder } from '../model/builder/CallGraphBuilder';
10
+ import { IPtsCollection } from '../pointerAnalysis/PtsDS';
10
11
  export declare abstract class AbstractAnalysis {
11
12
  protected scene: Scene;
12
13
  protected cg: CallGraph;
13
14
  protected cgBuilder: CallGraphBuilder;
14
15
  protected workList: FuncID[];
15
- protected processedMethod: Set<FuncID>;
16
+ protected processedMethod: IPtsCollection<FuncID>;
16
17
  constructor(s: Scene);
17
18
  getScene(): Scene;
18
19
  getCallGraph(): CallGraph;
@@ -21,6 +22,7 @@ export declare abstract class AbstractAnalysis {
21
22
  resolveInvokeExpr(invokeExpr: AbstractInvokeExpr): ArkMethod | undefined;
22
23
  getClassHierarchy(arkClass: ArkClass): ArkClass[];
23
24
  start(displayGeneratedMethod: boolean): void;
25
+ private processCallSite;
24
26
  protected init(): void;
25
27
  protected processMethod(methodID: FuncID): CallSite[];
26
28
  protected getParamAnonymousMethod(invokeExpr: AbstractInvokeExpr): MethodSignature[];
@@ -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;AAIrE,8BAAsB,gBAAgB;IAClC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,EAAE,EAAG,SAAS,CAAC;IACzB,SAAS,CAAC,SAAS,EAAG,gBAAgB,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IAClC,SAAS,CAAC,eAAe,EAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBAE5B,CAAC,EAAE,KAAK;IAIb,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;IAOxE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE;IAgBjD,KAAK,CAAC,sBAAsB,EAAE,OAAO,GAAG,IAAI;IA8BnD,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,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,EAAG,SAAS,CAAC;IACzB,SAAS,CAAC,SAAS,EAAG,gBAAgB,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IAClC,SAAS,CAAC,eAAe,EAAG,cAAc,CAAC,MAAM,CAAC,CAAC;gBAEvC,CAAC,EAAE,KAAK;IAIb,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;IAOxE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE;IAgBjD,KAAK,CAAC,sBAAsB,EAAE,OAAO,GAAG,IAAI;IAqBnD,OAAO,CAAC,eAAe;IAgBvB,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"}
@@ -40,6 +40,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.AbstractAnalysis = void 0;
41
41
  const Type_1 = require("../../core/base/Type");
42
42
  const logger_1 = __importStar(require("../../utils/logger"));
43
+ const PtsDS_1 = require("../pointerAnalysis/PtsDS");
43
44
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'CG');
44
45
  class AbstractAnalysis {
45
46
  constructor(s) {
@@ -76,7 +77,7 @@ class AbstractAnalysis {
76
77
  while (this.workList.length !== 0) {
77
78
  const method = this.workList.shift();
78
79
  const cgNode = this.cg.getNode(method);
79
- if (this.processedMethod.has(method) || cgNode.isSdkMethod()) {
80
+ if (this.processedMethod.contains(method) || cgNode.isSdkMethod()) {
80
81
  continue;
81
82
  }
82
83
  // pre process for RTA only
@@ -84,19 +85,26 @@ class AbstractAnalysis {
84
85
  this.workList.push(cs.calleeFuncID);
85
86
  });
86
87
  this.processMethod(method).forEach((cs) => {
87
- var _a;
88
- let me = this.cg.getArkMethodByFuncID(cs.calleeFuncID);
89
- this.addCallGraphEdge(method, me, cs, displayGeneratedMethod);
90
- if (!this.processedMethod.has(cs.calleeFuncID)) {
91
- this.workList.push(cs.calleeFuncID);
92
- logger.info(`New workList item ${cs.calleeFuncID}: ${(_a = this.cg.getArkMethodByFuncID(cs.calleeFuncID)) === null || _a === void 0 ? void 0 : _a.getSignature().toString()}`);
93
- this.processedMethod.add(cs.callerFuncID);
94
- }
88
+ this.processCallSite(method, cs, displayGeneratedMethod);
95
89
  });
96
90
  }
97
91
  }
92
+ processCallSite(method, cs, displayGeneratedMethod) {
93
+ var _a;
94
+ let me = this.cg.getArkMethodByFuncID(cs.calleeFuncID);
95
+ let meNode = this.cg.getNode(cs.calleeFuncID);
96
+ this.processedMethod.insert(cs.callerFuncID);
97
+ this.addCallGraphEdge(method, me, cs, displayGeneratedMethod);
98
+ if (this.processedMethod.contains(cs.calleeFuncID) || meNode.isSdkMethod()) {
99
+ return;
100
+ }
101
+ if (displayGeneratedMethod || !(me === null || me === void 0 ? void 0 : me.isGenerated())) {
102
+ this.workList.push(cs.calleeFuncID);
103
+ logger.info(`New workList item ${cs.calleeFuncID}: ${(_a = this.cg.getArkMethodByFuncID(cs.calleeFuncID)) === null || _a === void 0 ? void 0 : _a.getSignature().toString()}`);
104
+ }
105
+ }
98
106
  init() {
99
- this.processedMethod = new Set();
107
+ this.processedMethod = new ((0, PtsDS_1.createPtsCollectionCtor)(PtsDS_1.PtsCollectionType.BitVector))();
100
108
  this.cg.getEntries().forEach((entryFunc) => {
101
109
  this.workList.push(entryFunc);
102
110
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RapidTypeAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/algorithm/RapidTypeAnalysis.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAMtD,qBAAa,iBAAkB,SAAQ,gBAAgB;IAEnD,OAAO,CAAC,gBAAgB,CAAkC;IAE1D,OAAO,CAAC,YAAY,CAA2F;gBAEnG,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS;IAKhC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,QAAQ,EAAE;IA4DtE,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE;IAqBtD,OAAO,CAAC,+BAA+B;IA4BhC,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI;CAKxG"}
1
+ {"version":3,"file":"RapidTypeAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/algorithm/RapidTypeAnalysis.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAMtD,qBAAa,iBAAkB,SAAQ,gBAAgB;IAEnD,OAAO,CAAC,gBAAgB,CAAkC;IAE1D,OAAO,CAAC,YAAY,CAA2F;gBAEnG,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS;IAKhC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,QAAQ,EAAE;IA8DtE,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE;IAqBtD,OAAO,CAAC,+BAA+B;IA4BhC,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI;CAKxG"}
@@ -83,13 +83,14 @@ class RapidTypeAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
83
83
  // remove the generated method in extended classes
84
84
  return;
85
85
  }
86
- if (possibleCalleeMethod && !possibleCalleeMethod.isAbstract()) {
87
- if (!this.instancedClasses.has(arkClass.getSignature())) {
88
- this.addIgnoredCalls(arkClass.getSignature(), callerMethod, this.cg.getCallGraphNodeByMethod(possibleCalleeMethod.getSignature()).getID(), invokeStmt);
89
- }
90
- else {
91
- resolveResult.push(new CallGraph_1.CallSite(invokeStmt, undefined, this.cg.getCallGraphNodeByMethod(possibleCalleeMethod.getSignature()).getID(), callerMethod));
92
- }
86
+ if (!(possibleCalleeMethod && !possibleCalleeMethod.isAbstract())) {
87
+ return;
88
+ }
89
+ if (!this.instancedClasses.has(arkClass.getSignature())) {
90
+ this.addIgnoredCalls(arkClass.getSignature(), callerMethod, this.cg.getCallGraphNodeByMethod(possibleCalleeMethod.getSignature()).getID(), invokeStmt);
91
+ }
92
+ else {
93
+ resolveResult.push(new CallGraph_1.CallSite(invokeStmt, undefined, this.cg.getCallGraphNodeByMethod(possibleCalleeMethod.getSignature()).getID(), callerMethod));
93
94
  }
94
95
  });
95
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Statistics.d.ts","sourceRoot":"","sources":["../../../src/callgraph/common/Statistics.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAiB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAKrE,uBAAe,UAAU;IACd,OAAO,IAAI,MAAM;IAIjB,SAAS,IAAI,IAAI;CAG3B;AAED,qBAAa,OAAQ,YAAW,UAAU;IACtC,GAAG,EAAE,eAAe,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAK;IAC7B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,iBAAiB,EAAE,MAAM,CAAK;IAC9B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,YAAY,EAAE,MAAM,CAAK;IACzB,WAAW,EAAE,MAAM,CAAK;IAExB,eAAe,EAAE,MAAM,CAAK;IAC5B,yBAAyB,EAAE,MAAM,CAAK;IACtC,oBAAoB,EAAE,MAAM,CAAK;IAGjC,sBAAsB,EAAE,MAAM,CAAK;IAEnC,uBAAuB,EAAE,MAAM,CAAK;IAEpC,wBAAwB,EAAE,MAAM,CAAK;IAErC,yBAAyB,EAAE,MAAM,CAAK;IACtC,gBAAgB,EAAE,MAAM,CAAK;IAE7B,SAAS,EAAE,MAAM,CAAK;IACtB,SAAS,EAAE,MAAM,CAAK;IAEtB,SAAS,EAAE,MAAM,CAAK;IACtB,OAAO,EAAE,MAAM,CAAK;IAEpB,aAAa,EAAE,GAAG,CAAC;IACnB,WAAW,EAAE,GAAG,CAAC;IACjB,OAAO,EAAE,MAAM,CAAK;IACpB,QAAQ,EAAE,MAAM,CAAK;gBAET,GAAG,EAAE,eAAe;IAIzB,SAAS,IAAI,IAAI;IAKjB,OAAO,IAAI,IAAI;IAUf,MAAM,IAAI,MAAM;IAIvB,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,oBAAoB;IAerB,OAAO,IAAI,MAAM;IAsBjB,SAAS,IAAI,IAAI;CAG3B;AAED,qBAAa,OAAQ,YAAW,UAAU;IACtC,cAAc,EAAE,MAAM,CAAK;IAC3B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,YAAY,EAAE,MAAM,CAAK;IAElB,OAAO,IAAI,MAAM;IASjB,SAAS,IAAI,IAAI;CAG3B;AAED,qBAAa,MAAO,SAAQ,UAAU;IAElC,YAAY,EAAE,MAAM,CAAK;IACzB,OAAO,EAAE,MAAM,CAAK;IACpB,UAAU,EAAE,MAAM,CAAK;IACvB,YAAY,EAAE,MAAM,CAAK;IACzB,cAAc,EAAE,MAAM,CAAK;IAEpB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAmB1C,OAAO,IAAI,MAAM;CAU3B"}
1
+ {"version":3,"file":"Statistics.d.ts","sourceRoot":"","sources":["../../../src/callgraph/common/Statistics.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAiB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAKrE,uBAAe,UAAU;IACd,OAAO,IAAI,MAAM;IAIjB,SAAS,IAAI,IAAI;CAG3B;AAED,qBAAa,OAAQ,YAAW,UAAU;IACtC,GAAG,EAAE,eAAe,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAK;IAC7B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,iBAAiB,EAAE,MAAM,CAAK;IAC9B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,YAAY,EAAE,MAAM,CAAK;IACzB,WAAW,EAAE,MAAM,CAAK;IAExB,eAAe,EAAE,MAAM,CAAK;IAC5B,yBAAyB,EAAE,MAAM,CAAK;IACtC,oBAAoB,EAAE,MAAM,CAAK;IAGjC,sBAAsB,EAAE,MAAM,CAAK;IAEnC,uBAAuB,EAAE,MAAM,CAAK;IAEpC,wBAAwB,EAAE,MAAM,CAAK;IAErC,yBAAyB,EAAE,MAAM,CAAK;IACtC,gBAAgB,EAAE,MAAM,CAAK;IAE7B,SAAS,EAAE,MAAM,CAAK;IACtB,SAAS,EAAE,MAAM,CAAK;IAEtB,SAAS,EAAE,MAAM,CAAK;IACtB,OAAO,EAAE,MAAM,CAAK;IAEpB,aAAa,EAAE,GAAG,CAAC;IACnB,WAAW,EAAE,GAAG,CAAC;IACjB,OAAO,EAAE,MAAM,CAAK;IACpB,QAAQ,EAAE,MAAM,CAAK;gBAET,GAAG,EAAE,eAAe;IAIzB,SAAS,IAAI,IAAI;IAKjB,OAAO,IAAI,IAAI;IAUf,MAAM,IAAI,MAAM;IAIvB,OAAO,CAAC,cAAc;IAoCtB,OAAO,CAAC,oBAAoB;IAerB,OAAO,IAAI,MAAM;IAsBjB,SAAS,IAAI,IAAI;CAG3B;AAED,qBAAa,OAAQ,YAAW,UAAU;IACtC,cAAc,EAAE,MAAM,CAAK;IAC3B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,YAAY,EAAE,MAAM,CAAK;IAElB,OAAO,IAAI,MAAM;IASjB,SAAS,IAAI,IAAI;CAG3B;AAED,qBAAa,MAAO,SAAQ,UAAU;IAElC,YAAY,EAAE,MAAM,CAAK;IACzB,OAAO,EAAE,MAAM,CAAK;IACpB,UAAU,EAAE,MAAM,CAAK;IACvB,YAAY,EAAE,MAAM,CAAK;IACzB,cAAc,EAAE,MAAM,CAAK;IAEpB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAmB1C,OAAO,IAAI,MAAM;CAU3B"}