arkanalyzer 1.0.40 → 1.0.42

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 (115) hide show
  1. package/config/arkanalyzer.json +1 -2
  2. package/lib/Scene.d.ts.map +1 -1
  3. package/lib/Scene.js +9 -2
  4. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts.map +1 -1
  5. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +3 -4
  6. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
  7. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +7 -8
  8. package/lib/callgraph/model/CallGraph.d.ts +5 -5
  9. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  10. package/lib/callgraph/model/CallGraph.js +18 -21
  11. package/lib/callgraph/model/CallSite.d.ts +16 -6
  12. package/lib/callgraph/model/CallSite.d.ts.map +1 -1
  13. package/lib/callgraph/model/CallSite.js +48 -8
  14. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +0 -1
  15. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts.map +1 -1
  16. package/lib/callgraph/model/builder/CallGraphBuilder.js +0 -8
  17. package/lib/callgraph/pointerAnalysis/Pag.d.ts +3 -6
  18. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  19. package/lib/callgraph/pointerAnalysis/Pag.js +6 -29
  20. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +6 -15
  21. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  22. package/lib/callgraph/pointerAnalysis/PagBuilder.js +63 -81
  23. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +2 -1
  24. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  25. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +12 -8
  26. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +9 -3
  27. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -1
  28. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +12 -5
  29. package/lib/callgraph/pointerAnalysis/context/Context.d.ts +69 -0
  30. package/lib/callgraph/pointerAnalysis/context/Context.d.ts.map +1 -0
  31. package/lib/callgraph/pointerAnalysis/context/Context.js +202 -0
  32. package/lib/callgraph/pointerAnalysis/context/ContextItem.d.ts +40 -0
  33. package/lib/callgraph/pointerAnalysis/context/ContextItem.d.ts.map +1 -0
  34. package/lib/callgraph/pointerAnalysis/context/ContextItem.js +99 -0
  35. package/lib/callgraph/pointerAnalysis/context/ContextSelector.d.ts +46 -0
  36. package/lib/callgraph/pointerAnalysis/context/ContextSelector.d.ts.map +1 -0
  37. package/lib/callgraph/pointerAnalysis/context/ContextSelector.js +138 -0
  38. package/lib/core/base/Expr.d.ts +1 -0
  39. package/lib/core/base/Expr.d.ts.map +1 -1
  40. package/lib/core/base/Expr.js +9 -0
  41. package/lib/core/common/ArkIRTransformer.d.ts +1 -0
  42. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  43. package/lib/core/common/ArkIRTransformer.js +58 -2
  44. package/lib/core/common/ArkValueTransformer.d.ts +1 -1
  45. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  46. package/lib/core/common/IRInference.d.ts +1 -1
  47. package/lib/core/common/IRInference.d.ts.map +1 -1
  48. package/lib/core/common/IRInference.js +7 -3
  49. package/lib/core/common/ModelUtils.js +1 -1
  50. package/lib/core/common/SdkUtils.d.ts +2 -1
  51. package/lib/core/common/SdkUtils.d.ts.map +1 -1
  52. package/lib/core/common/SdkUtils.js +33 -23
  53. package/lib/core/common/TypeInference.d.ts.map +1 -1
  54. package/lib/core/common/TypeInference.js +5 -3
  55. package/lib/core/dataflow/DataflowSolver.js +3 -3
  56. package/lib/core/dataflow/UndefinedVariable.js +2 -2
  57. package/lib/core/graph/BaseExplicitGraph.d.ts +1 -0
  58. package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
  59. package/lib/core/graph/BaseExplicitGraph.js +3 -0
  60. package/lib/core/graph/BasicBlock.d.ts.map +1 -1
  61. package/lib/core/graph/BasicBlock.js +9 -4
  62. package/lib/core/graph/Cfg.d.ts.map +1 -1
  63. package/lib/core/graph/Cfg.js +4 -1
  64. package/lib/core/graph/builder/CfgBuilder.d.ts +2 -1
  65. package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
  66. package/lib/core/graph/builder/CfgBuilder.js +54 -10
  67. package/lib/core/graph/builder/ConditionBuilder.d.ts +2 -1
  68. package/lib/core/graph/builder/ConditionBuilder.d.ts.map +1 -1
  69. package/lib/core/graph/builder/ConditionBuilder.js +7 -3
  70. package/lib/core/graph/builder/TrapBuilder.d.ts +19 -1
  71. package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -1
  72. package/lib/core/graph/builder/TrapBuilder.js +195 -68
  73. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  74. package/lib/core/model/ArkMethod.js +3 -4
  75. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  76. package/lib/core/model/builder/ArkClassBuilder.js +42 -21
  77. package/lib/core/model/builder/ArkImportBuilder.js +28 -25
  78. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  79. package/lib/core/model/builder/ArkMethodBuilder.js +1 -2
  80. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  81. package/lib/core/model/builder/builderUtils.js +2 -1
  82. package/lib/index.d.ts +0 -1
  83. package/lib/index.d.ts.map +1 -1
  84. package/lib/index.js +2 -4
  85. package/lib/pass/Context.d.ts +47 -0
  86. package/lib/pass/Context.d.ts.map +1 -0
  87. package/lib/pass/Context.js +72 -0
  88. package/lib/pass/Dispatcher.d.ts +102 -0
  89. package/lib/pass/Dispatcher.d.ts.map +1 -0
  90. package/lib/pass/Dispatcher.js +202 -0
  91. package/lib/pass/Pass.d.ts +83 -0
  92. package/lib/pass/Pass.d.ts.map +1 -0
  93. package/lib/pass/Pass.js +95 -0
  94. package/lib/pass/ScenePassMgr.d.ts +73 -0
  95. package/lib/pass/ScenePassMgr.d.ts.map +1 -0
  96. package/lib/pass/ScenePassMgr.js +156 -0
  97. package/lib/pass/SceneValidator.d.ts +215 -0
  98. package/lib/pass/SceneValidator.d.ts.map +1 -0
  99. package/lib/pass/SceneValidator.js +339 -0
  100. package/lib/save/JsonPrinter.d.ts.map +1 -1
  101. package/lib/save/JsonPrinter.js +26 -102
  102. package/lib/save/arkir/ArkIRMethodPrinter.d.ts.map +1 -1
  103. package/lib/save/arkir/ArkIRMethodPrinter.js +13 -5
  104. package/lib/save/source/SourceStmt.d.ts +1 -0
  105. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  106. package/lib/save/source/SourceStmt.js +13 -8
  107. package/lib/utils/FileUtils.d.ts.map +1 -1
  108. package/lib/utils/FileUtils.js +13 -6
  109. package/lib/utils/ValueAsserts.d.ts +9 -0
  110. package/lib/utils/ValueAsserts.d.ts.map +1 -0
  111. package/lib/utils/ValueAsserts.js +89 -0
  112. package/package.json +2 -2
  113. package/lib/callgraph/pointerAnalysis/Context.d.ts +0 -38
  114. package/lib/callgraph/pointerAnalysis/Context.d.ts.map +0 -1
  115. package/lib/callgraph/pointerAnalysis/Context.js +0 -154
@@ -134,24 +134,16 @@ class JsonPrinter extends Printer_1.Printer {
134
134
  throw new Error('Type is undefined');
135
135
  }
136
136
  if (type instanceof Type_1.AnyType) {
137
- return {
138
- _: 'AnyType',
139
- };
137
+ return { _: 'AnyType' };
140
138
  }
141
139
  else if (type instanceof Type_1.UnknownType) {
142
- return {
143
- _: 'UnknownType',
144
- };
140
+ return { _: 'UnknownType' };
145
141
  }
146
142
  else if (type instanceof Type_1.VoidType) {
147
- return {
148
- _: 'VoidType',
149
- };
143
+ return { _: 'VoidType' };
150
144
  }
151
145
  else if (type instanceof Type_1.NeverType) {
152
- return {
153
- _: 'NeverType',
154
- };
146
+ return { _: 'NeverType' };
155
147
  }
156
148
  else if (type instanceof Type_1.UnionType) {
157
149
  return {
@@ -172,34 +164,22 @@ class JsonPrinter extends Printer_1.Printer {
172
164
  };
173
165
  }
174
166
  else if (type instanceof Type_1.BooleanType) {
175
- return {
176
- _: 'BooleanType',
177
- };
167
+ return { _: 'BooleanType' };
178
168
  }
179
169
  else if (type instanceof Type_1.NumberType) {
180
- return {
181
- _: 'NumberType',
182
- };
170
+ return { _: 'NumberType' };
183
171
  }
184
172
  else if (type instanceof Type_1.BigIntType) {
185
- return {
186
- _: 'BigIntType',
187
- };
173
+ return { _: 'BigIntType' };
188
174
  }
189
175
  else if (type instanceof Type_1.StringType) {
190
- return {
191
- _: 'StringType',
192
- };
176
+ return { _: 'StringType' };
193
177
  }
194
178
  else if (type instanceof Type_1.NullType) {
195
- return {
196
- _: 'NullType',
197
- };
179
+ return { _: 'NullType' };
198
180
  }
199
181
  else if (type instanceof Type_1.UndefinedType) {
200
- return {
201
- _: 'UndefinedType',
202
- };
182
+ return { _: 'UndefinedType' };
203
183
  }
204
184
  else if (type instanceof Type_1.LiteralType) {
205
185
  return {
@@ -392,55 +372,28 @@ class JsonPrinter extends Printer_1.Printer {
392
372
  return Object.assign({ _: 'Constant' }, this.serializeConstant(value));
393
373
  }
394
374
  else if (value instanceof Expr_1.ArkNewExpr) {
395
- return {
396
- _: 'NewExpr',
397
- classType: this.serializeType(value.getClassType()),
398
- };
375
+ return { _: 'NewExpr', classType: this.serializeType(value.getClassType()) };
399
376
  }
400
377
  else if (value instanceof Expr_1.ArkNewArrayExpr) {
401
- return {
402
- _: 'NewArrayExpr',
403
- elementType: this.serializeType(value.getBaseType()),
404
- size: this.serializeValue(value.getSize()),
405
- };
378
+ return { _: 'NewArrayExpr', elementType: this.serializeType(value.getBaseType()), size: this.serializeValue(value.getSize()) };
406
379
  }
407
380
  else if (value instanceof Expr_1.ArkDeleteExpr) {
408
- return {
409
- _: 'DeleteExpr',
410
- arg: this.serializeValue(value.getField()),
411
- };
381
+ return { _: 'DeleteExpr', arg: this.serializeValue(value.getField()) };
412
382
  }
413
383
  else if (value instanceof Expr_1.ArkAwaitExpr) {
414
- return {
415
- _: 'AwaitExpr',
416
- arg: this.serializeValue(value.getPromise()),
417
- };
384
+ return { _: 'AwaitExpr', arg: this.serializeValue(value.getPromise()) };
418
385
  }
419
386
  else if (value instanceof Expr_1.ArkYieldExpr) {
420
- return {
421
- _: 'YieldExpr',
422
- arg: this.serializeValue(value.getYieldValue()),
423
- };
387
+ return { _: 'YieldExpr', arg: this.serializeValue(value.getYieldValue()) };
424
388
  }
425
389
  else if (value instanceof Expr_1.ArkTypeOfExpr) {
426
- return {
427
- _: 'TypeOfExpr',
428
- arg: this.serializeValue(value.getOp()),
429
- };
390
+ return { _: 'TypeOfExpr', arg: this.serializeValue(value.getOp()) };
430
391
  }
431
392
  else if (value instanceof Expr_1.ArkInstanceOfExpr) {
432
- return {
433
- _: 'InstanceOfExpr',
434
- arg: this.serializeValue(value.getOp()),
435
- checkType: this.serializeType(value.getCheckType()),
436
- };
393
+ return { _: 'InstanceOfExpr', arg: this.serializeValue(value.getOp()), checkType: this.serializeType(value.getCheckType()) };
437
394
  }
438
395
  else if (value instanceof Expr_1.ArkCastExpr) {
439
- return {
440
- _: 'CastExpr',
441
- arg: this.serializeValue(value.getOp()),
442
- type: this.serializeType(value.getType()),
443
- };
396
+ return { _: 'CastExpr', arg: this.serializeValue(value.getOp()), type: this.serializeType(value.getType()) };
444
397
  }
445
398
  else if (value instanceof Expr_1.ArkPhiExpr) {
446
399
  const args = value.getArgs();
@@ -470,11 +423,7 @@ class JsonPrinter extends Printer_1.Printer {
470
423
  };
471
424
  }
472
425
  else if (value instanceof Expr_1.ArkUnopExpr) {
473
- return {
474
- _: 'UnopExpr',
475
- op: value.getOperator(),
476
- arg: this.serializeValue(value.getOp()),
477
- };
426
+ return { _: 'UnopExpr', op: value.getOperator(), arg: this.serializeValue(value.getOp()) };
478
427
  }
479
428
  else if (value instanceof Expr_1.ArkInstanceInvokeExpr) {
480
429
  return {
@@ -500,17 +449,10 @@ class JsonPrinter extends Printer_1.Printer {
500
449
  };
501
450
  }
502
451
  else if (value instanceof Ref_1.ArkThisRef) {
503
- return {
504
- _: 'ThisRef',
505
- type: this.serializeType(value.getType()),
506
- };
452
+ return { _: 'ThisRef', type: this.serializeType(value.getType()) };
507
453
  }
508
454
  else if (value instanceof Ref_1.ArkParameterRef) {
509
- return {
510
- _: 'ParameterRef',
511
- index: value.getIndex(),
512
- type: this.serializeType(value.getType()),
513
- };
455
+ return { _: 'ParameterRef', index: value.getIndex(), type: this.serializeType(value.getType()) };
514
456
  }
515
457
  else if (value instanceof Ref_1.ArkArrayRef) {
516
458
  return {
@@ -521,18 +463,11 @@ class JsonPrinter extends Printer_1.Printer {
521
463
  };
522
464
  }
523
465
  else if (value instanceof Ref_1.ArkCaughtExceptionRef) {
524
- return {
525
- _: 'CaughtExceptionRef',
526
- type: this.serializeType(value.getType()),
527
- };
466
+ return { _: 'CaughtExceptionRef', type: this.serializeType(value.getType()) };
528
467
  }
529
468
  else if (value instanceof Ref_1.GlobalRef) {
530
469
  let ref = value.getRef();
531
- return {
532
- _: 'GlobalRef',
533
- name: value.getName(),
534
- ref: ref ? this.serializeValue(ref) : null,
535
- };
470
+ return { _: 'GlobalRef', name: value.getName(), ref: ref ? this.serializeValue(ref) : null };
536
471
  }
537
472
  else if (value instanceof Ref_1.ClosureFieldRef) {
538
473
  return {
@@ -543,25 +478,14 @@ class JsonPrinter extends Printer_1.Printer {
543
478
  };
544
479
  }
545
480
  else if (value instanceof Ref_1.ArkInstanceFieldRef) {
546
- return {
547
- _: 'InstanceFieldRef',
548
- instance: this.serializeValue(value.getBase()),
549
- field: this.serializeFieldSignature(value.getFieldSignature()),
550
- };
481
+ return { _: 'InstanceFieldRef', instance: this.serializeValue(value.getBase()), field: this.serializeFieldSignature(value.getFieldSignature()) };
551
482
  }
552
483
  else if (value instanceof Ref_1.ArkStaticFieldRef) {
553
- return {
554
- _: 'StaticFieldRef',
555
- field: this.serializeFieldSignature(value.getFieldSignature()),
556
- };
484
+ return { _: 'StaticFieldRef', field: this.serializeFieldSignature(value.getFieldSignature()) };
557
485
  }
558
486
  else {
559
487
  console.warn(`Unhandled Value: ${value.constructor.name} (${value.toString()})`);
560
- return {
561
- _: value.constructor.name,
562
- text: value.toString(),
563
- type: this.serializeType(value.getType()),
564
- };
488
+ return { _: value.constructor.name, text: value.toString(), type: this.serializeType(value.getType()) };
565
489
  }
566
490
  }
567
491
  serializeStmt(stmt) {
@@ -1 +1 @@
1
- {"version":3,"file":"ArkIRMethodPrinter.d.ts","sourceRoot":"","sources":["../../../src/save/arkir/ArkIRMethodPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAKvD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIlD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IAC/C,OAAO,CAAC,MAAM,CAAY;gBAEP,MAAM,EAAE,SAAS,EAAE,MAAM,GAAE,MAAW;IAKlD,IAAI,IAAI,MAAM;IAYd,OAAO,IAAI,MAAM;IAyBxB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,SAAS;IAMjB,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAsCxD,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,eAAe;CA2B1B"}
1
+ {"version":3,"file":"ArkIRMethodPrinter.d.ts","sourceRoot":"","sources":["../../../src/save/arkir/ArkIRMethodPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAKvD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIlD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IAC/C,OAAO,CAAC,MAAM,CAAY;gBAEP,MAAM,EAAE,SAAS,EAAE,MAAM,GAAE,MAAW;IAKlD,IAAI,IAAI,MAAM;IAYd,OAAO,IAAI,MAAM;IAyBxB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,SAAS;IAMjB,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAsCxD,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,eAAe;CA2B1B"}
@@ -113,14 +113,22 @@ class ArkIRMethodPrinter extends BasePrinter_1.BasePrinter {
113
113
  }
114
114
  printCfg(cfg) {
115
115
  let blocks = cfg.getBlocks();
116
- let firstBB = true;
116
+ let isFirstBB = true;
117
+ let firstBB = cfg.getStartingBlock();
118
+ // Try to always print the starting block at the beginning.
119
+ if (firstBB) {
120
+ this.printBasicBlock(firstBB);
121
+ isFirstBB = false;
122
+ }
117
123
  for (const block of blocks) {
118
- if (!firstBB) {
119
- this.printer.writeLine('');
124
+ if (!firstBB || block.getId() !== firstBB.getId()) {
125
+ if (!isFirstBB) {
126
+ this.printer.writeLine('');
127
+ }
128
+ this.printBasicBlock(block);
120
129
  }
121
- this.printBasicBlock(block);
122
130
  if (firstBB) {
123
- firstBB = false;
131
+ isFirstBB = false;
124
132
  }
125
133
  }
126
134
  }
@@ -92,6 +92,7 @@ export declare class SourceWhileStmt extends SourceStmt {
92
92
  * @returns
93
93
  */
94
94
  private forOf2ts;
95
+ private getForOf2ts;
95
96
  transfer2ts(): void;
96
97
  protected valueToString(value: Value): string;
97
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SourceStmt.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceStmt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SourceStmt.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceStmt.ts"],"names":[],"mappings":"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"}
@@ -117,6 +117,7 @@ var AssignStmtDumpType;
117
117
  AssignStmtDumpType[AssignStmtDumpType["NORMAL"] = 0] = "NORMAL";
118
118
  AssignStmtDumpType[AssignStmtDumpType["TEMP_REPLACE"] = 1] = "TEMP_REPLACE";
119
119
  AssignStmtDumpType[AssignStmtDumpType["COMPONENT_CREATE"] = 2] = "COMPONENT_CREATE";
120
+ AssignStmtDumpType[AssignStmtDumpType["PARAM_REPLACE"] = 3] = "PARAM_REPLACE";
120
121
  })(AssignStmtDumpType || (AssignStmtDumpType = {}));
121
122
  class SourceAssignStmt extends SourceStmt {
122
123
  constructor(context, original) {
@@ -130,9 +131,13 @@ class SourceAssignStmt extends SourceStmt {
130
131
  transfer2ts() {
131
132
  this.leftOp = this.original.getLeftOp();
132
133
  this.rightOp = this.original.getRightOp();
134
+ if (this.rightOp instanceof Ref_1.ArkParameterRef) {
135
+ this.setText('');
136
+ this.dumpType = AssignStmtDumpType.PARAM_REPLACE;
137
+ return;
138
+ }
133
139
  if ((this.leftOp instanceof Local_1.Local && this.leftOp.getName() === 'this') ||
134
140
  (this.rightOp instanceof Constant_1.Constant && this.rightOp.getValue() === 'undefined') ||
135
- this.rightOp instanceof Ref_1.ArkParameterRef ||
136
141
  this.rightOp instanceof Ref_1.ClosureFieldRef) {
137
142
  this.setText('');
138
143
  this.dumpType = AssignStmtDumpType.NORMAL;
@@ -185,6 +190,9 @@ class SourceAssignStmt extends SourceStmt {
185
190
  }
186
191
  }
187
192
  beforeDump() {
193
+ if (this.dumpType === AssignStmtDumpType.PARAM_REPLACE && this.leftOp instanceof Local_1.Local) {
194
+ this.context.defineLocal(this.leftOp);
195
+ }
188
196
  if (this.dumpType !== AssignStmtDumpType.TEMP_REPLACE) {
189
197
  return;
190
198
  }
@@ -441,9 +449,6 @@ class SourceWhileStmt extends SourceStmt {
441
449
  return false;
442
450
  }
443
451
  let temp2 = done.getBase();
444
- if (!(temp2 instanceof Local_1.Local)) {
445
- return false;
446
- }
447
452
  stmt = temp2.getDeclaringStmt();
448
453
  if (!(stmt instanceof Stmt_1.ArkAssignStmt)) {
449
454
  return false;
@@ -456,9 +461,6 @@ class SourceWhileStmt extends SourceStmt {
456
461
  return false;
457
462
  }
458
463
  let temp1 = next.getBase();
459
- if (!(temp1 instanceof Local_1.Local)) {
460
- return false;
461
- }
462
464
  stmt = temp1.getDeclaringStmt();
463
465
  if (!(stmt instanceof Stmt_1.ArkAssignStmt)) {
464
466
  return false;
@@ -470,6 +472,9 @@ class SourceWhileStmt extends SourceStmt {
470
472
  if (iterator.getMethodSignature().getMethodSubSignature().getMethodName() !== 'Symbol.iterator') {
471
473
  return false;
472
474
  }
475
+ return this.getForOf2ts(temp3, temp1, iterator);
476
+ }
477
+ getForOf2ts(temp3, temp1, iterator) {
473
478
  let successors = this.block.getSuccessors();
474
479
  if (successors.length !== 2) {
475
480
  return false;
@@ -478,7 +483,7 @@ class SourceWhileStmt extends SourceStmt {
478
483
  if (stmts.length < 2) {
479
484
  return false;
480
485
  }
481
- stmt = stmts[1];
486
+ let stmt = stmts[1];
482
487
  if (!(stmt instanceof Stmt_1.ArkAssignStmt)) {
483
488
  return false;
484
489
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/FileUtils.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,qBAAa,SAAS;IAClB,gBAAuB,WAAW;;;MAGhC;WAEY,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WASzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;WAOrC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAIrC,iBAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;WA4BlG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,QAAQ;CAgB1F;AAED,qBAAa,UAAU;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;gBAED,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAIzC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,GAAG,CAAC,MAAM,CAAqB,GAAG,MAAM,CA2BrH"}
1
+ {"version":3,"file":"FileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/FileUtils.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,qBAAa,SAAS;IAClB,gBAAuB,WAAW;;;MAGhC;WAEY,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WASzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;WAOrC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAIrC,iBAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;WAkClG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,QAAQ;CAgB1F;AAED,qBAAa,UAAU;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;gBAED,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAIzC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,GAAG,CAAC,MAAM,CAAqB,GAAG,MAAM,CA2BrH"}
@@ -84,12 +84,19 @@ class FileUtils {
84
84
  if (moduleMap.get(name)) {
85
85
  return;
86
86
  }
87
- const modulePath = path_1.default.resolve(path_1.default.dirname(filePath), value.replace('file:', ''));
88
- const key = path_1.default.resolve(modulePath, EtsConst_1.OH_PACKAGE_JSON5);
89
- const target = ohPkgContentMap.get(key);
90
- if (target) {
91
- moduleMap.set(name, new ModulePath(modulePath, target.main ? path_1.default.resolve(modulePath, target.main) : ''));
87
+ const dir = path_1.default.dirname(filePath);
88
+ let modulePath = path_1.default.resolve(dir, value.replace('file:', ''));
89
+ let main = '';
90
+ if (this.isDirectory(modulePath)) {
91
+ const target = ohPkgContentMap.get(path_1.default.resolve(modulePath, EtsConst_1.OH_PACKAGE_JSON5));
92
+ if (target === null || target === void 0 ? void 0 : target.main) {
93
+ main = path_1.default.resolve(modulePath, target.main);
94
+ }
92
95
  }
96
+ else {
97
+ path_1.default.resolve(dir, 'oh_modules', name);
98
+ }
99
+ moduleMap.set(name, new ModulePath(modulePath, main));
93
100
  });
94
101
  });
95
102
  return moduleMap;
@@ -119,7 +126,7 @@ FileUtils.FILE_FILTER = {
119
126
  class ModulePath {
120
127
  constructor(path, main) {
121
128
  this.path = (0, pathTransfer_1.transfer2UnixPath)(path);
122
- this.main = (0, pathTransfer_1.transfer2UnixPath)(main);
129
+ this.main = main ? (0, pathTransfer_1.transfer2UnixPath)(main) : main;
123
130
  }
124
131
  }
125
132
  exports.ModulePath = ModulePath;
@@ -0,0 +1,9 @@
1
+ export declare class ValueAsserts {
2
+ static ENABLE: boolean;
3
+ static enable(): void;
4
+ static disable(): void;
5
+ static assert(cond: boolean, msg?: string): any;
6
+ static assertDefined(val: any, msg?: string): asserts val;
7
+ static assertNotEmptyArray(val: any[], msg?: string): asserts val;
8
+ }
9
+ //# sourceMappingURL=ValueAsserts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValueAsserts.d.ts","sourceRoot":"","sources":["../../src/utils/ValueAsserts.ts"],"names":[],"mappings":"AAmBA,qBAAa,YAAY;IACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAS;WAEjB,MAAM,IAAI,IAAI;WAId,OAAO,IAAI,IAAI;WAIf,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG;WAYxC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;WAclD,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;CAa3E"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2025 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.ValueAsserts = void 0;
41
+ const logger_1 = __importStar(require("./logger"));
42
+ const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ValueAsserts');
43
+ class ValueAsserts {
44
+ static enable() {
45
+ this.ENABLE = true;
46
+ }
47
+ static disable() {
48
+ this.ENABLE = false;
49
+ }
50
+ static assert(cond, msg) {
51
+ if (!ValueAsserts.ENABLE || cond) {
52
+ return;
53
+ }
54
+ let errorMsg = 'Assert failed: condition is false';
55
+ if (msg) {
56
+ errorMsg = 'Assert failed: ' + msg;
57
+ }
58
+ logger.error(errorMsg);
59
+ throw Error(errorMsg);
60
+ }
61
+ static assertDefined(val, msg) {
62
+ if (!ValueAsserts.ENABLE) {
63
+ return;
64
+ }
65
+ if (val === undefined) {
66
+ let errorMsg = 'Assert failed: value is undefined';
67
+ if (msg) {
68
+ errorMsg = 'Assert failed: ' + msg;
69
+ }
70
+ logger.error(errorMsg);
71
+ throw Error(errorMsg);
72
+ }
73
+ }
74
+ static assertNotEmptyArray(val, msg) {
75
+ if (!ValueAsserts.ENABLE) {
76
+ return;
77
+ }
78
+ if (val.length === 0) {
79
+ let errorMsg = 'Assert failed: array is empty';
80
+ if (msg) {
81
+ errorMsg = 'Assert failed: ' + msg;
82
+ }
83
+ logger.error(errorMsg);
84
+ throw Error(errorMsg);
85
+ }
86
+ }
87
+ }
88
+ exports.ValueAsserts = ValueAsserts;
89
+ ValueAsserts.ENABLE = false;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "arkanalyzer",
3
- "version": "1.0.40",
4
- "commit_id": "47e9374c",
3
+ "version": "1.0.42",
4
+ "commit_id": "9990fed7",
5
5
  "files": [
6
6
  "docs",
7
7
  "lib",
@@ -1,38 +0,0 @@
1
- import { FuncID } from '../model/CallGraph';
2
- export type ContextID = number;
3
- export declare const DUMMY_CID = 0;
4
- declare class Context {
5
- private contextElems;
6
- static sEmptyCtx: Context;
7
- constructor(contextElems?: number[]);
8
- static newEmpty(): Context;
9
- static new(contextElems: number[]): Context;
10
- static newKLimitedContext(oldCtx: Context, elem: number, k: number): Context;
11
- static kLimitedContext(ctx: Context, k: number): Context;
12
- length(): number;
13
- get(index: number): number;
14
- toString(): String;
15
- }
16
- declare class ContextCache {
17
- private contextList;
18
- private contextToIDMap;
19
- constructor();
20
- getOrNewContextID(context: Context): ContextID;
21
- updateContext(id: ContextID, newContext: Context, oldContext: Context): boolean;
22
- getContextID(context: Context): ContextID | undefined;
23
- getContext(id: number): Context | undefined;
24
- getContextList(): Context[];
25
- }
26
- export declare class KLimitedContextSensitive {
27
- k: number;
28
- ctxCache: ContextCache;
29
- constructor(k: number);
30
- emptyContext(): Context;
31
- getEmptyContextID(): ContextID;
32
- getContextID(context: Context): ContextID;
33
- getContextByID(context_id: number): Context | undefined;
34
- getNewContextID(callerFuncId: FuncID): ContextID;
35
- getOrNewContext(callerCid: ContextID, calleeFuncId: FuncID, findCalleeAsTop?: boolean): ContextID;
36
- }
37
- export {};
38
- //# sourceMappingURL=Context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/Context.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,eAAO,MAAM,SAAS,IAAI,CAAC;AAE3B,cAAM,OAAO;IACT,OAAO,CAAC,YAAY,CAAW;IAC/B,MAAM,CAAC,SAAS,EAAE,OAAO,CAAmB;gBAEhC,YAAY,GAAE,MAAM,EAAO;IAIvC,MAAM,CAAC,QAAQ,IAAI,OAAO;IAI1B,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO;IAK3C,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAa5E,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IASjD,MAAM,IAAI,MAAM;IAIhB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAO1B,QAAQ,IAAI,MAAM;CAG5B;AAED,cAAM,YAAY;IACd,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,cAAc,CAAkC;;IAOjD,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAa9C,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO;IAY/E,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS;IASrD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAO3C,cAAc,IAAI,OAAO,EAAE;CAGrC;AAED,qBAAa,wBAAwB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,YAAY,CAAC;gBAEX,CAAC,EAAE,MAAM;IAOd,YAAY,IAAI,OAAO;IAIvB,iBAAiB,IAAI,SAAS;IAI9B,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAIzC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIvD,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS;IAIhD,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,GAAE,OAAe,GAAG,SAAS;CAmBlH"}