arkanalyzer 1.0.75 → 1.0.77
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.
- package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts +12 -9
- package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PTAUtils.js +19 -9
- package/lib/callgraph/pointerAnalysis/Pag.d.ts +10 -0
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +124 -4
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +24 -7
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +163 -42
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +3 -1
- package/lib/callgraph/pointerAnalysis/context/Context.d.ts +1 -0
- package/lib/callgraph/pointerAnalysis/context/Context.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/context/Context.js +5 -1
- package/lib/callgraph/pointerAnalysis/plugins/ContainerPlugin.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/plugins/ContainerPlugin.js +9 -1
- package/lib/core/common/Builtin.d.ts +2 -0
- package/lib/core/common/Builtin.d.ts.map +1 -1
- package/lib/core/common/Builtin.js +2 -0
- package/lib/core/common/IRInference.d.ts +4 -0
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +100 -0
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +5 -5
- package/lib/core/inference/ValueInference.d.ts +1 -3
- package/lib/core/inference/ValueInference.d.ts.map +1 -1
- package/lib/core/inference/ValueInference.js +23 -76
- package/lib/core/inference/abc/AbcInference.js +2 -1
- package/lib/core/inference/arkts/ArkTsInference.d.ts.map +1 -1
- package/lib/core/inference/arkts/ArkTsInference.js +2 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueInference.d.ts","sourceRoot":"","sources":["../../../src/core/inference/ValueInference.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"ValueInference.d.ts","sourceRoot":"","sources":["../../../src/core/inference/ValueInference.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,13 +56,13 @@ const TSConst_1 = require("../common/TSConst");
|
|
|
56
56
|
const Expr_1 = require("../base/Expr");
|
|
57
57
|
const ModelUtils_1 = require("../common/ModelUtils");
|
|
58
58
|
const Local_1 = require("../base/Local");
|
|
59
|
-
const Builtin_1 = require("../common/Builtin");
|
|
60
59
|
const ArkClass_1 = require("../model/ArkClass");
|
|
61
60
|
const Constant_1 = require("../base/Constant");
|
|
62
61
|
const logger_1 = __importStar(require("../../utils/logger"));
|
|
63
62
|
const ArkSignature_1 = require("../model/ArkSignature");
|
|
64
63
|
const ArkImport_1 = require("../model/ArkImport");
|
|
65
64
|
const ArkField_1 = require("../model/ArkField");
|
|
65
|
+
const Builtin_1 = require("../common/Builtin");
|
|
66
66
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ValueInference');
|
|
67
67
|
var InferLanguage;
|
|
68
68
|
(function (InferLanguage) {
|
|
@@ -225,27 +225,11 @@ let FieldRefInference = class FieldRefInference extends ValueInference {
|
|
|
225
225
|
* or undefined for regular instance fields
|
|
226
226
|
*/
|
|
227
227
|
infer(value, stmt) {
|
|
228
|
-
const baseType =
|
|
228
|
+
const baseType = value.getBase().getType();
|
|
229
229
|
const arkMethod = stmt.getCfg().getDeclaringMethod();
|
|
230
|
-
// Special handling for array types with dynamic field access
|
|
231
|
-
if (baseType instanceof Type_1.ArrayType && value.isDynamic()) {
|
|
232
|
-
const index = TypeInference_1.TypeInference.getLocalFromMethodBody(value.getFieldName(), arkMethod);
|
|
233
|
-
if (index) {
|
|
234
|
-
return new Ref_1.ArkArrayRef(value.getBase(), index);
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
return new Ref_1.ArkArrayRef(value.getBase(), ValueUtil_1.ValueUtil.createConst(value.getFieldName()));
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
230
|
// Generate updated field signature based on current context
|
|
241
|
-
const
|
|
242
|
-
|
|
243
|
-
value.setFieldSignature(newFieldSignature);
|
|
244
|
-
if (newFieldSignature.isStatic()) {
|
|
245
|
-
return new Ref_1.ArkStaticFieldRef(newFieldSignature);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
return undefined;
|
|
231
|
+
const result = IRInference_1.IRInference.inferInstanceMember(baseType, value, arkMethod, IRInference_1.IRInference.updateRefSignature);
|
|
232
|
+
return !result || result === value ? undefined : result;
|
|
249
233
|
}
|
|
250
234
|
};
|
|
251
235
|
FieldRefInference = __decorate([
|
|
@@ -277,19 +261,13 @@ let StaticFieldRefInference = class StaticFieldRefInference extends ValueInferen
|
|
|
277
261
|
infer(value, stmt) {
|
|
278
262
|
const baseSignature = value.getFieldSignature().getDeclaringSignature();
|
|
279
263
|
const baseName = baseSignature instanceof ArkSignature_1.ClassSignature ? baseSignature.getClassName() : baseSignature.getNamespaceName();
|
|
280
|
-
const
|
|
281
|
-
const baseType = TypeInference_1.TypeInference.inferBaseType(baseName,
|
|
264
|
+
const arkMethod = stmt.getCfg().getDeclaringMethod();
|
|
265
|
+
const baseType = TypeInference_1.TypeInference.inferBaseType(baseName, arkMethod.getDeclaringArkClass());
|
|
282
266
|
if (!baseType) {
|
|
283
267
|
return undefined;
|
|
284
268
|
}
|
|
285
|
-
const
|
|
286
|
-
|
|
287
|
-
value.setFieldSignature(newFieldSignature);
|
|
288
|
-
if (newFieldSignature.isStatic()) {
|
|
289
|
-
return new Ref_1.ArkStaticFieldRef(newFieldSignature);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
return undefined;
|
|
269
|
+
const result = IRInference_1.IRInference.inferInstanceMember(baseType, value, arkMethod, IRInference_1.IRInference.updateRefSignature);
|
|
270
|
+
return !result || result === value ? undefined : result;
|
|
293
271
|
}
|
|
294
272
|
};
|
|
295
273
|
StaticFieldRefInference = __decorate([
|
|
@@ -320,7 +298,7 @@ let InstanceInvokeExprInference = InstanceInvokeExprInference_1 = class Instance
|
|
|
320
298
|
*/
|
|
321
299
|
infer(value, stmt) {
|
|
322
300
|
const arkMethod = stmt.getCfg().getDeclaringMethod();
|
|
323
|
-
const result =
|
|
301
|
+
const result = IRInference_1.IRInference.inferInstanceMember(value.getBase().getType(), value, arkMethod, InstanceInvokeExprInference_1.inferInvokeExpr);
|
|
324
302
|
return !result || result === value ? undefined : result;
|
|
325
303
|
}
|
|
326
304
|
/**
|
|
@@ -344,49 +322,21 @@ let InstanceInvokeExprInference = InstanceInvokeExprInference_1 = class Instance
|
|
|
344
322
|
getMethodName(expr, arkMethod) {
|
|
345
323
|
return expr.getMethodSignature().getMethodSubSignature().getMethodName();
|
|
346
324
|
}
|
|
347
|
-
static inferInvokeExpr(baseType, expr, arkMethod
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
if (baseType instanceof Type_1.
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
if (type instanceof Type_1.UndefinedType || type instanceof Type_1.NullType) {
|
|
356
|
-
continue;
|
|
357
|
-
}
|
|
358
|
-
let result = this.inferInvokeExpr(type, expr, arkMethod, methodName);
|
|
359
|
-
if (result) {
|
|
360
|
-
return result;
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
else if (baseType instanceof Type_1.ArrayType) {
|
|
365
|
-
const arrayClass = arkMethod.getDeclaringArkFile().getScene().getSdkGlobal(Builtin_1.Builtin.ARRAY);
|
|
366
|
-
if (arrayClass instanceof ArkClass_1.ArkClass) {
|
|
367
|
-
baseType = new Type_1.ClassType(arrayClass.getSignature(), [baseType.getBaseType()]);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
else if (baseType instanceof Type_1.GenericType) {
|
|
371
|
-
const newType = (_a = baseType.getDefaultType()) !== null && _a !== void 0 ? _a : baseType.getConstraint();
|
|
372
|
-
if (!newType) {
|
|
373
|
-
return null;
|
|
325
|
+
static inferInvokeExpr(baseType, expr, arkMethod) {
|
|
326
|
+
const methodName = expr.getMethodSignature().getMethodSubSignature().getMethodName();
|
|
327
|
+
const scene = arkMethod.getDeclaringArkFile().getScene();
|
|
328
|
+
if (baseType instanceof Type_1.ArrayType || baseType instanceof Type_1.TupleType) {
|
|
329
|
+
const arrayInterface = scene.getSdkGlobal(Builtin_1.Builtin.ARRAY);
|
|
330
|
+
const realTypes = baseType instanceof Type_1.ArrayType ? [baseType.getBaseType()] : undefined;
|
|
331
|
+
if (arrayInterface instanceof ArkClass_1.ArkClass) {
|
|
332
|
+
baseType = new Type_1.ClassType(arrayInterface.getSignature(), realTypes);
|
|
374
333
|
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
const name = baseType.getName();
|
|
380
|
-
const className = name.charAt(0).toUpperCase() + name.slice(1);
|
|
381
|
-
const arrayClass = arkMethod.getDeclaringArkFile().getScene().getSdkGlobal(className);
|
|
382
|
-
if (arrayClass instanceof ArkClass_1.ArkClass) {
|
|
383
|
-
baseType = new Type_1.ClassType(arrayClass.getSignature());
|
|
334
|
+
else if (methodName === Builtin_1.Builtin.ITERATOR_FUNCTION) {
|
|
335
|
+
expr.getMethodSignature().getMethodSubSignature().setReturnType(Builtin_1.Builtin.ITERATOR_CLASS_TYPE);
|
|
336
|
+
expr.setRealGenericTypes(realTypes !== null && realTypes !== void 0 ? realTypes : expr.getRealGenericTypes());
|
|
337
|
+
return expr;
|
|
384
338
|
}
|
|
385
339
|
}
|
|
386
|
-
const scene = arkMethod.getDeclaringArkFile().getScene();
|
|
387
|
-
return this.inferMethodFromBase(baseType, expr, scene, methodName);
|
|
388
|
-
}
|
|
389
|
-
static inferMethodFromBase(baseType, expr, scene, methodName) {
|
|
390
340
|
// Dispatch to appropriate inference method based on resolved base type
|
|
391
341
|
if (baseType instanceof Type_1.ClassType) {
|
|
392
342
|
return IRInference_1.IRInference.inferInvokeExprWithDeclaredClass(expr, baseType, methodName, scene);
|
|
@@ -406,9 +356,6 @@ let InstanceInvokeExprInference = InstanceInvokeExprInference_1 = class Instance
|
|
|
406
356
|
else if (baseType instanceof Type_1.FunctionType) {
|
|
407
357
|
return IRInference_1.IRInference.inferInvokeExprWithFunction(methodName, expr, baseType, scene);
|
|
408
358
|
}
|
|
409
|
-
else if (baseType instanceof Type_1.ArrayType) {
|
|
410
|
-
return IRInference_1.IRInference.inferInvokeExprWithArray(methodName, expr, baseType, scene);
|
|
411
|
-
}
|
|
412
359
|
return null;
|
|
413
360
|
}
|
|
414
361
|
};
|
|
@@ -447,7 +394,7 @@ let StaticInvokeExprInference = class StaticInvokeExprInference extends Instance
|
|
|
447
394
|
return undefined;
|
|
448
395
|
}
|
|
449
396
|
const baseType = this.getBaseType(expr, arkMethod);
|
|
450
|
-
const result = baseType ?
|
|
397
|
+
const result = baseType ? IRInference_1.IRInference.inferInstanceMember(baseType, expr, arkMethod, InstanceInvokeExprInference.inferInvokeExpr) :
|
|
451
398
|
IRInference_1.IRInference.inferStaticInvokeExprByMethodName(methodName, arkMethod, expr);
|
|
452
399
|
return !result || result === expr ? undefined : result;
|
|
453
400
|
}
|
|
@@ -690,7 +637,7 @@ let ArkTsInstanceInvokeExprInference = class ArkTsInstanceInvokeExprInference ex
|
|
|
690
637
|
var _a;
|
|
691
638
|
const arkMethod = stmt.getCfg().getDeclaringMethod();
|
|
692
639
|
TypeInference_1.TypeInference.inferRealGenericTypes(value.getRealGenericTypes(), arkMethod.getDeclaringArkClass());
|
|
693
|
-
const result = (_a =
|
|
640
|
+
const result = (_a = IRInference_1.IRInference.inferInstanceMember(value.getBase().getType(), value, arkMethod, InstanceInvokeExprInference.inferInvokeExpr)) !== null && _a !== void 0 ? _a : IRInference_1.IRInference.processExtendFunc(value, arkMethod, super.getMethodName(value, arkMethod));
|
|
694
641
|
return !result || result === value ? undefined : result;
|
|
695
642
|
}
|
|
696
643
|
};
|
|
@@ -23,6 +23,7 @@ const InferenceBuilder_1 = require("../InferenceBuilder");
|
|
|
23
23
|
const SdkUtils_1 = require("../../common/SdkUtils");
|
|
24
24
|
const ValueInference_1 = require("../ValueInference");
|
|
25
25
|
const TypeInference_1 = require("../../common/TypeInference");
|
|
26
|
+
const Type_1 = require("../../base/Type");
|
|
26
27
|
const Local_1 = require("../../base/Local");
|
|
27
28
|
const Ref_1 = require("../../base/Ref");
|
|
28
29
|
const ArkTsInference_1 = require("../arkts/ArkTsInference");
|
|
@@ -95,7 +96,7 @@ class AbcStmtInference extends ModelInference_1.StmtInference {
|
|
|
95
96
|
}
|
|
96
97
|
transferRight2Left(leftOp, rightType, method) {
|
|
97
98
|
const projectName = method.getDeclaringArkFile().getProjectName();
|
|
98
|
-
if (!TypeInference_1.TypeInference.isUnclearType(rightType) || !TypeInference_1.TypeInference.isAnonType(rightType, projectName)) {
|
|
99
|
+
if (!TypeInference_1.TypeInference.isUnclearType(rightType) || rightType instanceof Type_1.GenericType || !TypeInference_1.TypeInference.isAnonType(rightType, projectName)) {
|
|
99
100
|
let leftType = leftOp.getType();
|
|
100
101
|
if (TypeInference_1.TypeInference.isTypeCanBeOverride(leftType)) {
|
|
101
102
|
leftType = rightType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkTsInference.d.ts","sourceRoot":"","sources":["../../../../src/core/inference/arkts/ArkTsInference.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKxG,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAiB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAA0B,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"ArkTsInference.d.ts","sourceRoot":"","sources":["../../../../src/core/inference/arkts/ArkTsInference.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKxG,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAiB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAA0B,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAe,IAAI,EAAE,MAAM,iBAAiB,CAAC;AA+CpD,qBAAa,kBAAmB,SAAQ,aAAa;gBAErC,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE;IAI7C,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;IAUpD,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,SAAS;WAgBlF,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,SAAS;WAiBpF,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,SAAS;CAgBtF;AAGD,qBAAa,qBAAsB,SAAQ,gBAAgB;IAEhD,wBAAwB,IAAI,mBAAmB;IAI/C,mBAAmB,IAAI,cAAc;IAIrC,oBAAoB,IAAI,eAAe;IAIvC,kBAAkB,IAAI,aAAa;CAK7C;AAED,qBAAa,sBAAuB,SAAQ,qBAAqB;CAEhE;AAED,qBAAa,kBAAmB,SAAQ,gBAAgB;IAE7C,wBAAwB,IAAI,mBAAmB;IAI/C,oBAAoB,IAAI,eAAe;IAIvC,kBAAkB,IAAI,aAAa;CAI7C"}
|
|
@@ -21,6 +21,7 @@ const TypeInference_1 = require("../../common/TypeInference");
|
|
|
21
21
|
const InferenceBuilder_1 = require("../InferenceBuilder");
|
|
22
22
|
const ValueInference_1 = require("../ValueInference");
|
|
23
23
|
const Stmt_1 = require("../../base/Stmt");
|
|
24
|
+
const Type_1 = require("../../base/Type");
|
|
24
25
|
const Ref_1 = require("../../base/Ref");
|
|
25
26
|
const Local_1 = require("../../base/Local");
|
|
26
27
|
const AbcInference_1 = require("../abc/AbcInference");
|
|
@@ -77,7 +78,7 @@ class ArkTsStmtInference extends ModelInference_1.StmtInference {
|
|
|
77
78
|
}
|
|
78
79
|
transferRight2Left(leftOp, rightType, method) {
|
|
79
80
|
const projectName = method.getDeclaringArkFile().getProjectName();
|
|
80
|
-
if (!TypeInference_1.TypeInference.isUnclearType(rightType) || TypeInference_1.TypeInference.isDummyClassType(rightType)) {
|
|
81
|
+
if (!TypeInference_1.TypeInference.isUnclearType(rightType) || rightType instanceof Type_1.GenericType || TypeInference_1.TypeInference.isDummyClassType(rightType)) {
|
|
81
82
|
let leftType = leftOp.getType();
|
|
82
83
|
if (TypeInference_1.TypeInference.isTypeCanBeOverride(leftType) || TypeInference_1.TypeInference.isAnonType(leftType, projectName)) {
|
|
83
84
|
leftType = rightType;
|