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.
- package/README.en.md +8 -0
- package/README.md +9 -0
- package/config/arkanalyzer.json +14 -13
- package/lib/Scene.js +4 -4
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/AbstractAnalysis.js +4 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +3 -2
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +58 -26
- package/lib/core/base/Expr.d.ts +24 -5
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +49 -9
- package/lib/core/base/Ref.d.ts +1 -0
- package/lib/core/base/Ref.d.ts.map +1 -1
- package/lib/core/base/Ref.js +17 -17
- package/lib/core/base/Type.d.ts +1 -1
- package/lib/core/base/Type.d.ts.map +1 -1
- package/lib/core/base/Type.js +1 -0
- package/lib/core/common/ArkIRTransformer.d.ts +1 -0
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +15 -0
- package/lib/core/common/Builtin.d.ts.map +1 -1
- package/lib/core/common/Builtin.js +3 -3
- package/lib/core/common/Const.d.ts +1 -0
- package/lib/core/common/Const.d.ts.map +1 -1
- package/lib/core/common/Const.js +3 -1
- package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
- package/lib/core/common/DummyMainCreater.js +1 -1
- package/lib/core/common/IRInference.d.ts +11 -2
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +125 -29
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +26 -17
- package/lib/core/common/SdkUtils.d.ts +3 -0
- package/lib/core/common/SdkUtils.d.ts.map +1 -1
- package/lib/core/common/SdkUtils.js +26 -4
- package/lib/core/common/TSConst.d.ts +2 -0
- package/lib/core/common/TSConst.d.ts.map +1 -1
- package/lib/core/common/TSConst.js +4 -2
- package/lib/core/common/TypeInference.d.ts +6 -3
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +107 -46
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts +1 -0
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/ViewTreeBuilder.js +48 -0
- package/lib/core/model/ArkClass.d.ts +11 -2
- package/lib/core/model/ArkClass.d.ts.map +1 -1
- package/lib/core/model/ArkClass.js +28 -6
- package/lib/core/model/ArkExport.d.ts +5 -1
- package/lib/core/model/ArkExport.d.ts.map +1 -1
- package/lib/core/model/ArkExport.js +6 -0
- package/lib/core/model/ArkField.d.ts +5 -0
- package/lib/core/model/ArkField.d.ts.map +1 -1
- package/lib/core/model/ArkField.js +6 -0
- package/lib/core/model/ArkFile.d.ts +13 -1
- package/lib/core/model/ArkFile.d.ts.map +1 -1
- package/lib/core/model/ArkFile.js +19 -2
- package/lib/core/model/ArkImport.d.ts +5 -1
- package/lib/core/model/ArkImport.d.ts.map +1 -1
- package/lib/core/model/ArkImport.js +6 -0
- package/lib/core/model/ArkMethod.d.ts +8 -0
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +13 -0
- package/lib/core/model/ArkNamespace.d.ts +5 -1
- package/lib/core/model/ArkNamespace.d.ts.map +1 -1
- package/lib/core/model/ArkNamespace.js +6 -0
- package/lib/core/model/ArkSignature.d.ts +7 -2
- package/lib/core/model/ArkSignature.d.ts.map +1 -1
- package/lib/core/model/ArkSignature.js +20 -5
- package/lib/core/model/builder/ArkClassBuilder.d.ts +1 -1
- package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkClassBuilder.js +16 -47
- package/lib/core/model/builder/ArkFileBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkFileBuilder.js +5 -0
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +5 -6
- package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkNamespaceBuilder.js +1 -0
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +15 -2
- package/lib/utils/FileUtils.d.ts +2 -0
- package/lib/utils/FileUtils.d.ts.map +1 -1
- package/lib/utils/FileUtils.js +12 -0
- package/lib/utils/getAllFiles.js +2 -2
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
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
|
-
|
|
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,
|
|
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":"AAeA,OAAO,EAAa,IAAI,EAAe,MAAM,iBAAiB,CAAC;AAG/D,OAAO,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAgBjC,OAAO,EAAmD,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAExF,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAgBzC,MAAM,MAAM,cAAc,GACtB,EAAE,CAAC,mBAAmB,GACtB,EAAE,CAAC,iBAAiB,GACpB,EAAE,CAAC,sBAAsB,GACzB,EAAE,CAAC,aAAa,GAChB,EAAE,CAAC,mBAAmB,GACtB,EAAE,CAAC,kBAAkB,GACrB,EAAE,CAAC,eAAe,GAClB,EAAE,CAAC,6BAA6B,GAChC,EAAE,CAAC,wBAAwB,GAC3B,EAAE,CAAC,gBAAgB,CAAC;AAExB,wBAAgB,iCAAiC,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EACxC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,QAYvG;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,SAAS,
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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,
|
|
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,
|
|
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 =
|
|
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(++
|
|
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;
|
package/lib/utils/FileUtils.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|
package/lib/utils/FileUtils.js
CHANGED
|
@@ -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 = {
|
package/lib/utils/getAllFiles.js
CHANGED
|
@@ -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的绝对路径
|