arkanalyzer 1.0.21 → 1.0.23

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 (85) hide show
  1. package/README.en.md +8 -0
  2. package/README.md +9 -0
  3. package/config/arkanalyzer.json +14 -13
  4. package/lib/Scene.js +4 -4
  5. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
  6. package/lib/callgraph/algorithm/AbstractAnalysis.js +4 -1
  7. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +3 -2
  8. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  9. package/lib/callgraph/pointerAnalysis/PagBuilder.js +58 -26
  10. package/lib/core/base/Expr.d.ts +24 -5
  11. package/lib/core/base/Expr.d.ts.map +1 -1
  12. package/lib/core/base/Expr.js +49 -9
  13. package/lib/core/base/Ref.d.ts +1 -0
  14. package/lib/core/base/Ref.d.ts.map +1 -1
  15. package/lib/core/base/Ref.js +17 -17
  16. package/lib/core/base/Type.d.ts +1 -1
  17. package/lib/core/base/Type.d.ts.map +1 -1
  18. package/lib/core/base/Type.js +1 -0
  19. package/lib/core/common/ArkIRTransformer.d.ts +1 -0
  20. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  21. package/lib/core/common/ArkIRTransformer.js +15 -0
  22. package/lib/core/common/Builtin.d.ts.map +1 -1
  23. package/lib/core/common/Builtin.js +3 -3
  24. package/lib/core/common/Const.d.ts +1 -0
  25. package/lib/core/common/Const.d.ts.map +1 -1
  26. package/lib/core/common/Const.js +3 -1
  27. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  28. package/lib/core/common/DummyMainCreater.js +1 -1
  29. package/lib/core/common/IRInference.d.ts +11 -2
  30. package/lib/core/common/IRInference.d.ts.map +1 -1
  31. package/lib/core/common/IRInference.js +125 -29
  32. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  33. package/lib/core/common/ModelUtils.js +26 -17
  34. package/lib/core/common/SdkUtils.d.ts +3 -0
  35. package/lib/core/common/SdkUtils.d.ts.map +1 -1
  36. package/lib/core/common/SdkUtils.js +26 -4
  37. package/lib/core/common/TSConst.d.ts +2 -0
  38. package/lib/core/common/TSConst.d.ts.map +1 -1
  39. package/lib/core/common/TSConst.js +4 -2
  40. package/lib/core/common/TypeInference.d.ts +6 -3
  41. package/lib/core/common/TypeInference.d.ts.map +1 -1
  42. package/lib/core/common/TypeInference.js +107 -46
  43. package/lib/core/graph/builder/ViewTreeBuilder.d.ts +1 -0
  44. package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
  45. package/lib/core/graph/builder/ViewTreeBuilder.js +48 -0
  46. package/lib/core/model/ArkClass.d.ts +11 -2
  47. package/lib/core/model/ArkClass.d.ts.map +1 -1
  48. package/lib/core/model/ArkClass.js +28 -6
  49. package/lib/core/model/ArkExport.d.ts +5 -1
  50. package/lib/core/model/ArkExport.d.ts.map +1 -1
  51. package/lib/core/model/ArkExport.js +6 -0
  52. package/lib/core/model/ArkField.d.ts +5 -0
  53. package/lib/core/model/ArkField.d.ts.map +1 -1
  54. package/lib/core/model/ArkField.js +6 -0
  55. package/lib/core/model/ArkFile.d.ts +13 -1
  56. package/lib/core/model/ArkFile.d.ts.map +1 -1
  57. package/lib/core/model/ArkFile.js +19 -2
  58. package/lib/core/model/ArkImport.d.ts +5 -1
  59. package/lib/core/model/ArkImport.d.ts.map +1 -1
  60. package/lib/core/model/ArkImport.js +6 -0
  61. package/lib/core/model/ArkMethod.d.ts +8 -0
  62. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  63. package/lib/core/model/ArkMethod.js +13 -0
  64. package/lib/core/model/ArkNamespace.d.ts +5 -1
  65. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  66. package/lib/core/model/ArkNamespace.js +6 -0
  67. package/lib/core/model/ArkSignature.d.ts +7 -2
  68. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  69. package/lib/core/model/ArkSignature.js +20 -5
  70. package/lib/core/model/builder/ArkClassBuilder.d.ts +1 -1
  71. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  72. package/lib/core/model/builder/ArkClassBuilder.js +16 -47
  73. package/lib/core/model/builder/ArkFileBuilder.d.ts.map +1 -1
  74. package/lib/core/model/builder/ArkFileBuilder.js +5 -0
  75. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  76. package/lib/core/model/builder/ArkMethodBuilder.js +5 -6
  77. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  78. package/lib/core/model/builder/ArkNamespaceBuilder.js +1 -0
  79. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  80. package/lib/core/model/builder/builderUtils.js +15 -2
  81. package/lib/utils/FileUtils.d.ts +2 -0
  82. package/lib/utils/FileUtils.d.ts.map +1 -1
  83. package/lib/utils/FileUtils.js +12 -0
  84. package/lib/utils/getAllFiles.js +2 -2
  85. package/package.json +2 -2
@@ -72,13 +72,13 @@ function buildDefaultArkClassFromArkNamespace(arkNamespace, defaultClass, nsNode
72
72
  buildDefaultArkClass(defaultClass, sourceFile, nsNode);
73
73
  }
74
74
  exports.buildDefaultArkClassFromArkNamespace = buildDefaultArkClassFromArkNamespace;
75
- function buildNormalArkClassFromArkMethod(clsNode, cls, sourceFile) {
75
+ function buildNormalArkClassFromArkMethod(clsNode, cls, sourceFile, declaringMethod) {
76
76
  const namespace = cls.getDeclaringArkNamespace();
77
77
  if (namespace) {
78
- buildNormalArkClassFromArkNamespace(clsNode, namespace, cls, sourceFile);
78
+ buildNormalArkClassFromArkNamespace(clsNode, namespace, cls, sourceFile, declaringMethod);
79
79
  }
80
80
  else {
81
- buildNormalArkClassFromArkFile(clsNode, cls.getDeclaringArkFile(), cls, sourceFile);
81
+ buildNormalArkClassFromArkFile(clsNode, cls.getDeclaringArkFile(), cls, sourceFile, declaringMethod);
82
82
  }
83
83
  }
84
84
  exports.buildNormalArkClassFromArkMethod = buildNormalArkClassFromArkMethod;
@@ -169,13 +169,7 @@ function init4StaticInitMethod(cls) {
169
169
  }
170
170
  function buildStruct2ArkClass(clsNode, cls, sourceFile, declaringMethod) {
171
171
  var _a;
172
- let className = '';
173
- if (clsNode.name) {
174
- className = clsNode.name.text;
175
- }
176
- else {
177
- className = genAnonymousClassName(clsNode, cls, declaringMethod);
178
- }
172
+ const className = genClassName(clsNode.name ? clsNode.name.text : '', cls, declaringMethod);
179
173
  const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
180
174
  cls.setSignature(classSignature);
181
175
  if (clsNode.typeParameters) {
@@ -193,13 +187,7 @@ function buildStruct2ArkClass(clsNode, cls, sourceFile, declaringMethod) {
193
187
  }
194
188
  function buildClass2ArkClass(clsNode, cls, sourceFile, declaringMethod) {
195
189
  var _a;
196
- let className = '';
197
- if (clsNode.name) {
198
- className = clsNode.name.text;
199
- }
200
- else {
201
- className = genAnonymousClassName(clsNode, cls, declaringMethod);
202
- }
190
+ const className = genClassName(clsNode.name ? clsNode.name.text : '', cls, declaringMethod);
203
191
  const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
204
192
  cls.setSignature(classSignature);
205
193
  if (clsNode.typeParameters) {
@@ -230,13 +218,7 @@ function initHeritage(heritageClauses, cls) {
230
218
  }
231
219
  function buildInterface2ArkClass(clsNode, cls, sourceFile, declaringMethod) {
232
220
  var _a;
233
- let className = '';
234
- if (clsNode.name) {
235
- className = clsNode.name.text;
236
- }
237
- else {
238
- className = genAnonymousClassName(clsNode, cls, declaringMethod);
239
- }
221
+ const className = genClassName(clsNode.name ? clsNode.name.text : '', cls, declaringMethod);
240
222
  const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
241
223
  cls.setSignature(classSignature);
242
224
  if (clsNode.typeParameters) {
@@ -252,13 +234,7 @@ function buildInterface2ArkClass(clsNode, cls, sourceFile, declaringMethod) {
252
234
  }
253
235
  function buildEnum2ArkClass(clsNode, cls, sourceFile, declaringMethod) {
254
236
  var _a;
255
- let className = '';
256
- if (clsNode.name) {
257
- className = clsNode.name.text;
258
- }
259
- else {
260
- className = genAnonymousClassName(clsNode, cls, declaringMethod);
261
- }
237
+ const className = genClassName(clsNode.name ? clsNode.name.text : '', cls, declaringMethod);
262
238
  const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
263
239
  cls.setSignature(classSignature);
264
240
  cls.setModifiers((0, builderUtils_1.buildModifiers)(clsNode));
@@ -269,7 +245,7 @@ function buildEnum2ArkClass(clsNode, cls, sourceFile, declaringMethod) {
269
245
  }
270
246
  function buildTypeLiteralNode2ArkClass(clsNode, cls, sourceFile, declaringMethod) {
271
247
  var _a;
272
- const className = genAnonymousClassName(clsNode, cls, declaringMethod);
248
+ const className = genClassName('', cls, declaringMethod);
273
249
  const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
274
250
  cls.setSignature(classSignature);
275
251
  cls.setCategory(ArkClass_1.ClassCategory.TYPE_LITERAL);
@@ -282,7 +258,7 @@ function buildTypeLiteralNode2ArkClass(clsNode, cls, sourceFile, declaringMethod
282
258
  }
283
259
  function buildObjectLiteralExpression2ArkClass(clsNode, cls, sourceFile, declaringMethod) {
284
260
  var _a;
285
- const className = genAnonymousClassName(clsNode, cls, declaringMethod);
261
+ const className = genClassName('', cls, declaringMethod);
286
262
  const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
287
263
  cls.setSignature(classSignature);
288
264
  cls.setCategory(ArkClass_1.ClassCategory.OBJECT);
@@ -310,21 +286,14 @@ function buildObjectLiteralExpression2ArkClass(clsNode, cls, sourceFile, declari
310
286
  cls.addMethod(mtd);
311
287
  });
312
288
  }
313
- function genAnonymousClassName(clsNode, cls, declaringMethod) {
314
- const declaringArkNamespace = cls.getDeclaringArkNamespace();
315
- const declaringArkFile = cls.getDeclaringArkFile();
316
- let anonymousClassName = '';
317
- let declaringMethodName = '';
318
- if (declaringMethod) {
319
- declaringMethodName = declaringMethod.getDeclaringArkClass().getName() + Const_1.ANONYMOUS_CLASS_DELIMITER + declaringMethod.getName() + Const_1.ANONYMOUS_CLASS_DELIMITER;
320
- }
321
- if (declaringArkNamespace) {
322
- anonymousClassName = Const_1.ANONYMOUS_CLASS_PREFIX + Const_1.ANONYMOUS_CLASS_DELIMITER + declaringMethodName + declaringArkNamespace.getAnonymousClassNumber();
323
- }
324
- else {
325
- anonymousClassName = Const_1.ANONYMOUS_CLASS_PREFIX + Const_1.ANONYMOUS_CLASS_DELIMITER + declaringMethodName + declaringArkFile.getAnonymousClassNumber();
289
+ function genClassName(declaringName, cls, declaringMethod) {
290
+ if (!declaringName) {
291
+ const declaringArkNamespace = cls.getDeclaringArkNamespace();
292
+ const num = declaringArkNamespace ? declaringArkNamespace.getAnonymousClassNumber() : cls.getDeclaringArkFile().getAnonymousClassNumber();
293
+ declaringName = Const_1.ANONYMOUS_CLASS_PREFIX + num;
326
294
  }
327
- return anonymousClassName;
295
+ const suffix = declaringMethod ? Const_1.ANONYMOUS_CLASS_DELIMITER + declaringMethod.getDeclaringArkClass().getName() + '.' + declaringMethod.getName() : '';
296
+ return declaringName + suffix;
328
297
  }
329
298
  function buildArkClassMembers(clsNode, cls, sourceFile) {
330
299
  if (ohos_typescript_1.default.isObjectLiteralExpression(clsNode)) {
@@ -1 +1 @@
1
- {"version":3,"file":"ArkFileBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkFileBuilder.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAuBrC,eAAO,MAAM,iBAAiB,UAEqD,CAAC;AAEpF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC9D,WAAW,EAAE,MAAM,QAkBvD"}
1
+ {"version":3,"file":"ArkFileBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkFileBuilder.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,OAAO,EAAY,MAAM,YAAY,CAAC;AAwB/C,eAAO,MAAM,iBAAiB,UAEqD,CAAC;AAEpF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC9D,WAAW,EAAE,MAAM,QAkBvD"}
@@ -44,6 +44,7 @@ exports.buildArkFileFromFile = exports.notStmtOrExprKind = void 0;
44
44
  const fs_1 = __importDefault(require("fs"));
45
45
  const path_1 = __importDefault(require("path"));
46
46
  const ohos_typescript_1 = __importDefault(require("ohos-typescript"));
47
+ const ArkFile_1 = require("../ArkFile");
47
48
  const ArkNamespace_1 = require("../ArkNamespace");
48
49
  const logger_1 = __importStar(require("../../../utils/logger"));
49
50
  const ArkClassBuilder_1 = require("./ArkClassBuilder");
@@ -56,6 +57,7 @@ const ArkMethod_1 = require("../ArkMethod");
56
57
  const Position_1 = require("../../base/Position");
57
58
  const EtsConst_1 = require("../../common/EtsConst");
58
59
  const ArkSignature_1 = require("../ArkSignature");
60
+ const Const_1 = require("../../common/Const");
59
61
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkFileBuilder');
60
62
  exports.notStmtOrExprKind = ['ModuleDeclaration', 'ClassDeclaration', 'InterfaceDeclaration', 'EnumDeclaration', 'ExportDeclaration',
61
63
  'ExportAssignment', 'MethodDeclaration', 'Constructor', 'FunctionDeclaration', 'GetAccessor', 'SetAccessor', 'ArrowFunction',
@@ -144,6 +146,9 @@ function buildArkFile(arkFile, astRoot) {
144
146
  else if (ohos_typescript_1.default.isTypeAliasDeclaration(child) && (0, ArkExportBuilder_1.isExported)(child.modifiers)) {
145
147
  (0, ArkExportBuilder_1.buildExportTypeAliasDeclaration)(child, astRoot, arkFile).forEach(item => arkFile.addExportInfo(item));
146
148
  }
149
+ else if (ohos_typescript_1.default.isExpressionStatement(child) && ohos_typescript_1.default.isStringLiteral(child.expression)) {
150
+ child.expression.text.trim() === Const_1.ARKTS_STATIC_MARK && arkFile.setLanguage(ArkFile_1.Language.ARKTS1_2);
151
+ }
147
152
  else {
148
153
  logger.info('Child joined default method of arkFile: ', ohos_typescript_1.default.SyntaxKind[child.kind]);
149
154
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"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"}
@@ -76,12 +76,10 @@ function buildDefaultArkMethodFromArkClass(declaringClass, mtd, sourceFile, node
76
76
  exports.buildDefaultArkMethodFromArkClass = buildDefaultArkMethodFromArkClass;
77
77
  function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile, declaringMethod) {
78
78
  mtd.setDeclaringArkClass(declaringClass);
79
- if (declaringMethod !== undefined) {
80
- mtd.setOuterMethod(declaringMethod);
81
- }
82
- if (ohos_typescript_1.default.isFunctionDeclaration(methodNode)) {
83
- mtd.setAsteriskToken(methodNode.asteriskToken !== undefined);
84
- }
79
+ declaringMethod !== undefined && mtd.setOuterMethod(declaringMethod);
80
+ ohos_typescript_1.default.isFunctionDeclaration(methodNode) && mtd.setAsteriskToken(methodNode.asteriskToken !== undefined);
81
+ // All MethodLikeNode except FunctionTypeNode have questionToken.
82
+ !ohos_typescript_1.default.isFunctionTypeNode(methodNode) && mtd.setQuestionToken(methodNode.questionToken !== undefined);
85
83
  mtd.setCode(methodNode.getText(sourceFile));
86
84
  mtd.setModifiers((0, builderUtils_1.buildModifiers)(methodNode));
87
85
  mtd.setDecorators((0, builderUtils_1.buildDecorators)(methodNode, sourceFile));
@@ -92,6 +90,7 @@ function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile,
92
90
  const methodName = buildMethodName(methodNode, declaringClass, sourceFile, declaringMethod);
93
91
  const methodParameters = [];
94
92
  (0, builderUtils_1.buildParameters)(methodNode.parameters, mtd, sourceFile).forEach((parameter) => {
93
+ (0, builderUtils_1.buildGenericType)(parameter.getType(), mtd);
95
94
  methodParameters.push(parameter);
96
95
  });
97
96
  let returnType = Type_1.UnknownType.getInstance();
@@ -1 +1 @@
1
- {"version":3,"file":"ArkNamespaceBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkNamespaceBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAW/C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,GAAG,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,QAoDnJ;AAmFD,wBAAgB,eAAe,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CA4B7E"}
1
+ {"version":3,"file":"ArkNamespaceBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkNamespaceBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAW/C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,GAAG,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,QAqDnJ;AAmFD,wBAAgB,eAAe,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CA4B7E"}
@@ -91,6 +91,7 @@ function buildArkNamespace(node, declaringInstance, ns, sourceFile) {
91
91
  logger.warn('This ModuleBody is an NamespaceDeclaration.');
92
92
  let childNs = new ArkNamespace_1.ArkNamespace();
93
93
  buildArkNamespace(node.body, ns, childNs, sourceFile);
94
+ ns.addNamespace(childNs);
94
95
  }
95
96
  else if (ohos_typescript_1.default.isIdentifier(node.body)) {
96
97
  logger.warn('ModuleBody is Identifier.');
@@ -1 +1 @@
1
- {"version":3,"file":"builderUtils.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/builderUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EACH,SAAS,EAIT,WAAW,EAGX,IAAI,EAIP,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAGH,eAAe,EAElB,MAAM,oBAAoB,CAAC;AAc5B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,GAAG,MAAM,CAUlE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,GAAG,MAAM,CAYxF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAUxF;AA2BD,wBAAgB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAUpD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxG;AAED,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,EAAE,CAmB/G;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,qBA4GvI;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CA8ChG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,QAM3F;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAC9E,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CA0F9E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,QA8CjD"}
1
+ {"version":3,"file":"builderUtils.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/builderUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EACH,SAAS,EAIT,WAAW,EAGX,IAAI,EAIP,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAGH,eAAe,EAElB,MAAM,oBAAoB,CAAC;AAc5B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,GAAG,MAAM,CAUlE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,GAAG,MAAM,CAYxF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAUxF;AA2BD,wBAAgB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAUpD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxG;AAED,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,EAAE,CAyB/G;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,qBA4GvI;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAmDhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,QAM3F;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAC9E,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CA0F9E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,QA8CjD"}
@@ -156,12 +156,19 @@ function buildHeritageClauses(heritageClauses) {
156
156
  }
157
157
  exports.buildHeritageClauses = buildHeritageClauses;
158
158
  function buildTypeParameters(typeParameters, sourceFile, arkInstance) {
159
+ var _a;
159
160
  const genericTypes = [];
160
- let index = -1;
161
+ let index = 0;
162
+ if (arkInstance instanceof ArkMethod_1.ArkMethod) {
163
+ const len = (_a = arkInstance.getDeclaringArkClass().getGenericsTypes()) === null || _a === void 0 ? void 0 : _a.length;
164
+ if (len) {
165
+ index = len;
166
+ }
167
+ }
161
168
  typeParameters.forEach((typeParameter) => {
162
169
  const genericType = tsNode2Type(typeParameter, sourceFile, arkInstance);
163
170
  if (genericType instanceof Type_1.GenericType) {
164
- genericType.setIndex(++index);
171
+ genericType.setIndex(index++);
165
172
  genericTypes.push(genericType);
166
173
  }
167
174
  if (typeParameter.modifiers) {
@@ -329,6 +336,12 @@ function buildGenericType(type, arkInstance) {
329
336
  type.setBaseType(replace(baseType));
330
337
  }
331
338
  }
339
+ else if (type instanceof Type_1.FunctionType) {
340
+ const returnType = type.getMethodSignature().getType();
341
+ if (returnType instanceof Type_1.UnclearReferenceType) {
342
+ type.getMethodSignature().getMethodSubSignature().setReturnType(replace(returnType));
343
+ }
344
+ }
332
345
  return type;
333
346
  }
334
347
  exports.buildGenericType = buildGenericType;
@@ -1,3 +1,4 @@
1
+ import { Language } from '../core/model/ArkFile';
1
2
  export declare class FileUtils {
2
3
  static readonly FILE_FILTER: {
3
4
  ignores: string[];
@@ -9,6 +10,7 @@ export declare class FileUtils {
9
10
  static generateModuleMap(ohPkgContentMap: Map<string, {
10
11
  [k: string]: unknown;
11
12
  }>): Map<string, ModulePath>;
13
+ static getFileLanguage(file: string): Language;
12
14
  }
13
15
  export declare class ModulePath {
14
16
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"FileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/FileUtils.ts"],"names":[],"mappings":"AAuBA,qBAAa,SAAS;IAClB,gBAAuB,WAAW;;;MAGjC;WAEa,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WASzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;WASrC,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;CA4BzF;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,CA0BrH"}
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;;;MAGjC;WAEa,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WASzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;WASrC,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;WA4BxE,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;CAWxD;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,CA0BrH"}
@@ -46,6 +46,7 @@ const path_1 = __importDefault(require("path"));
46
46
  const logger_1 = __importStar(require("./logger"));
47
47
  const pathTransfer_1 = require("./pathTransfer");
48
48
  const EtsConst_1 = require("../core/common/EtsConst");
49
+ const ArkFile_1 = require("../core/model/ArkFile");
49
50
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'FileUtils');
50
51
  class FileUtils {
51
52
  static getIndexFileName(srcPath) {
@@ -94,6 +95,17 @@ class FileUtils {
94
95
  });
95
96
  return moduleMap;
96
97
  }
98
+ static getFileLanguage(file) {
99
+ const extension = path_1.default.extname(file).toLowerCase();
100
+ switch (extension) {
101
+ case '.ts':
102
+ return ArkFile_1.Language.TYPESCRIPT;
103
+ case '.ets':
104
+ return ArkFile_1.Language.ARKTS1_1;
105
+ default:
106
+ return ArkFile_1.Language.UNKNOWN;
107
+ }
108
+ }
97
109
  }
98
110
  exports.FileUtils = FileUtils;
99
111
  FileUtils.FILE_FILTER = {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) 2024 Huawei Device Co., Ltd.
3
+ * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
6
6
  * You may obtain a copy of the License at
@@ -57,7 +57,7 @@ function getAllFiles(srcPath, exts, ignore = [], filenameArr = [], visited = new
57
57
  let ignoreFiles = new Set(ignore);
58
58
  // 如果源目录不存在,直接结束程序
59
59
  if (!fs_1.default.existsSync(srcPath)) {
60
- logger.error(`Input directory is not exist, please check!`);
60
+ logger.error(`Input directory ${srcPath} is not exist, please check!`);
61
61
  return filenameArr;
62
62
  }
63
63
  // 获取src的绝对路径
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "arkanalyzer",
3
- "version": "1.0.21",
4
- "commit_id": "dac9a2dc",
3
+ "version": "1.0.23",
4
+ "commit_id": "13cb2fa7",
5
5
  "files": [
6
6
  "docs",
7
7
  "lib",