arkanalyzer 1.0.39 → 1.0.41
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/config/arkanalyzer.json +6 -2
- package/lib/Config.d.ts +1 -0
- package/lib/Config.d.ts.map +1 -1
- package/lib/Scene.d.ts +6 -5
- package/lib/Scene.d.ts.map +1 -1
- package/lib/Scene.js +36 -18
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +3 -4
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +7 -8
- package/lib/callgraph/model/CallGraph.d.ts +5 -5
- package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
- package/lib/callgraph/model/CallGraph.js +18 -21
- package/lib/callgraph/model/CallSite.d.ts +16 -6
- package/lib/callgraph/model/CallSite.d.ts.map +1 -1
- package/lib/callgraph/model/CallSite.js +48 -8
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +0 -1
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts.map +1 -1
- package/lib/callgraph/model/builder/CallGraphBuilder.js +0 -8
- package/lib/callgraph/pointerAnalysis/Pag.d.ts +3 -6
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +6 -29
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +6 -15
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +61 -85
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +2 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +12 -8
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +10 -3
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +20 -5
- package/lib/callgraph/pointerAnalysis/context/Context.d.ts +69 -0
- package/lib/callgraph/pointerAnalysis/context/Context.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/context/Context.js +202 -0
- package/lib/callgraph/pointerAnalysis/context/ContextItem.d.ts +40 -0
- package/lib/callgraph/pointerAnalysis/context/ContextItem.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/context/ContextItem.js +99 -0
- package/lib/callgraph/pointerAnalysis/context/ContextSelector.d.ts +46 -0
- package/lib/callgraph/pointerAnalysis/context/ContextSelector.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/context/ContextSelector.js +138 -0
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +11 -1
- package/lib/core/base/Local.js +1 -1
- package/lib/core/common/ArkIRTransformer.d.ts +2 -0
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +90 -0
- package/lib/core/common/ArkValueTransformer.d.ts +1 -1
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +48 -33
- package/lib/core/common/Builtin.d.ts.map +1 -1
- package/lib/core/common/Builtin.js +2 -2
- package/lib/core/common/DummyMainCreater.js +1 -1
- package/lib/core/common/IRInference.d.ts +1 -0
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +60 -44
- package/lib/core/common/ModelUtils.d.ts +1 -0
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +7 -0
- package/lib/core/common/SdkUtils.d.ts +14 -1
- package/lib/core/common/SdkUtils.d.ts.map +1 -1
- package/lib/core/common/SdkUtils.js +118 -24
- package/lib/core/common/TypeInference.d.ts +2 -1
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +21 -12
- package/lib/core/common/ValueUtil.d.ts +1 -0
- package/lib/core/common/ValueUtil.d.ts.map +1 -1
- package/lib/core/common/ValueUtil.js +7 -0
- package/lib/core/graph/BaseExplicitGraph.d.ts +1 -0
- package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
- package/lib/core/graph/BaseExplicitGraph.js +3 -0
- package/lib/core/graph/Scc.js +1 -1
- package/lib/core/graph/builder/CfgBuilder.d.ts +2 -0
- package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/CfgBuilder.js +59 -7
- package/lib/core/model/ArkImport.js +1 -1
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +8 -2
- package/lib/core/model/builder/ArkClassBuilder.js +21 -1
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +2 -2
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +2 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -4
- package/lib/save/JsonPrinter.d.ts +1 -0
- package/lib/save/JsonPrinter.d.ts.map +1 -1
- package/lib/save/JsonPrinter.js +15 -5
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts.map +1 -1
- package/lib/save/arkir/ArkIRMethodPrinter.js +13 -5
- package/lib/save/source/SourceBody.d.ts +1 -1
- package/lib/save/source/SourceBody.d.ts.map +1 -1
- package/lib/save/source/SourceBody.js +3 -2
- package/lib/save/source/SourceStmt.d.ts.map +1 -1
- package/lib/save/source/SourceStmt.js +12 -4
- package/lib/save/source/SourceTransformer.d.ts +3 -3
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +11 -10
- package/lib/transformer/StaticSingleAssignmentFormer.js +1 -1
- package/package.json +7 -7
- package/lib/callgraph/pointerAnalysis/Context.d.ts +0 -38
- package/lib/callgraph/pointerAnalysis/Context.d.ts.map +0 -1
- package/lib/callgraph/pointerAnalysis/Context.js +0 -154
|
@@ -394,6 +394,24 @@ function buildParameterProperty2ArkField(params, cls, sourceFile) {
|
|
|
394
394
|
return;
|
|
395
395
|
}
|
|
396
396
|
params.forEach(parameter => {
|
|
397
|
+
let fieldName;
|
|
398
|
+
if (ohos_typescript_1.default.isIdentifier(parameter.name)) {
|
|
399
|
+
fieldName = parameter.name.text;
|
|
400
|
+
}
|
|
401
|
+
else if (ohos_typescript_1.default.isObjectBindingPattern(parameter.name)) {
|
|
402
|
+
// TODO
|
|
403
|
+
logger.warn(`Need to support param property with ObjectBindingPattern node type: ${cls.getSignature().toString()}!`);
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
else if (ohos_typescript_1.default.isArrayBindingPattern(parameter.name)) {
|
|
407
|
+
// TODO
|
|
408
|
+
logger.warn(`Need to support param property with ArrayBindingPattern node type: ${cls.getSignature().toString()}!`);
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
else {
|
|
412
|
+
logger.warn(`Need to support param property with new node type: ${cls.getSignature().toString()}!`);
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
397
415
|
if (parameter.modifiers === undefined || !ohos_typescript_1.default.isIdentifier(parameter.name)) {
|
|
398
416
|
return;
|
|
399
417
|
}
|
|
@@ -402,7 +420,6 @@ function buildParameterProperty2ArkField(params, cls, sourceFile) {
|
|
|
402
420
|
field.setCode(parameter.getText(sourceFile));
|
|
403
421
|
field.setCategory(ArkField_1.FieldCategory.PARAMETER_PROPERTY);
|
|
404
422
|
field.setOriginPosition(Position_1.LineColPosition.buildFromNode(parameter, sourceFile));
|
|
405
|
-
let fieldName = parameter.name.text;
|
|
406
423
|
let fieldType;
|
|
407
424
|
if (parameter.type) {
|
|
408
425
|
fieldType = (0, builderUtils_1.buildGenericType)((0, builderUtils_1.tsNode2Type)(parameter.type, sourceFile, field), field);
|
|
@@ -413,6 +430,9 @@ function buildParameterProperty2ArkField(params, cls, sourceFile) {
|
|
|
413
430
|
const fieldSignature = new ArkSignature_1.FieldSignature(fieldName, cls.getSignature(), fieldType, false);
|
|
414
431
|
field.setSignature(fieldSignature);
|
|
415
432
|
field.setModifiers((0, builderUtils_1.buildModifiers)(parameter));
|
|
433
|
+
if (parameter.questionToken) {
|
|
434
|
+
field.setQuestionToken(true);
|
|
435
|
+
}
|
|
416
436
|
cls.addField(field);
|
|
417
437
|
});
|
|
418
438
|
}
|
|
@@ -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,EAAkE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvG,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AASzC,MAAM,MAAM,cAAc,GACpB,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;AAE1B,wBAAgB,iCAAiC,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,GAAG,IAAI,CAYxJ;AAED,wBAAgB,0BAA0B,CACtC,UAAU,EAAE,cAAc,EAC1B,cAAc,EAAE,QAAQ,EACxB,GAAG,EAAE,SAAS,EACd,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,eAAe,CAAC,EAAE,SAAS,GAC5B,IAAI,
|
|
1
|
+
{"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,13 +104,13 @@ function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile,
|
|
|
104
104
|
mtd.setImplementationSignature(methodSignature);
|
|
105
105
|
mtd.setLine(line + 1);
|
|
106
106
|
mtd.setColumn(character + 1);
|
|
107
|
+
let bodyBuilder = new BodyBuilder_1.BodyBuilder(mtd.getSignature(), methodNode, mtd, sourceFile);
|
|
108
|
+
mtd.setBodyBuilder(bodyBuilder);
|
|
107
109
|
}
|
|
108
110
|
else {
|
|
109
111
|
mtd.setDeclareSignatures(methodSignature);
|
|
110
112
|
mtd.setDeclareLinesAndCols([line + 1], [character + 1]);
|
|
111
113
|
}
|
|
112
|
-
let bodyBuilder = new BodyBuilder_1.BodyBuilder(mtd.getSignature(), methodNode, mtd, sourceFile);
|
|
113
|
-
mtd.setBodyBuilder(bodyBuilder);
|
|
114
114
|
if (mtd.hasBuilderDecorator()) {
|
|
115
115
|
mtd.setViewTree((0, ViewTreeBuilder_1.buildViewTree)(mtd));
|
|
116
116
|
}
|
|
@@ -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,EAA4D,eAAe,EAAiC,MAAM,oBAAoB,CAAC;AAyB9I,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,CAC/B,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,WAAW,EAAE,SAAS,GAAG,QAAQ,GAClC,WAAW,EAAE,CAyBf;AA4ED,wBAAgB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,eAAe,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,EAA4D,eAAe,EAAiC,MAAM,oBAAoB,CAAC;AAyB9I,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,CAC/B,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,WAAW,EAAE,SAAS,GAAG,QAAQ,GAClC,WAAW,EAAE,CAyBf;AA4ED,wBAAgB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,eAAe,EAAE,CA+C3J;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAsDhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAMlG;AAED,wBAAgB,WAAW,CACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,EACnD,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAC7C,IAAI,CA8FN;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAiDxD"}
|
|
@@ -281,7 +281,8 @@ function buildParameters(params, arkInstance, sourceFile) {
|
|
|
281
281
|
}
|
|
282
282
|
// initializer
|
|
283
283
|
if (parameter.initializer) {
|
|
284
|
-
//
|
|
284
|
+
// For param with initializer, it is actually optional param. The cfgBuilder will do the last initializer things.
|
|
285
|
+
methodParameter.setOptional(true);
|
|
285
286
|
}
|
|
286
287
|
// dotDotDotToken
|
|
287
288
|
if (parameter.dotDotDotToken) {
|
package/lib/index.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ export { RapidTypeAnalysis } from './callgraph/algorithm/RapidTypeAnalysis';
|
|
|
4
4
|
export { PTAStat, PAGStat, CGStat } from './callgraph/common/Statistics';
|
|
5
5
|
export * from './callgraph/model/CallGraph';
|
|
6
6
|
export { CallGraphBuilder } from './callgraph/model/builder/CallGraphBuilder';
|
|
7
|
-
export { KLimitedContextSensitive } from './callgraph/pointerAnalysis/Context';
|
|
8
7
|
export { DummyCallCreator } from './callgraph/pointerAnalysis/DummyCallCreator';
|
|
9
8
|
export * from './callgraph/pointerAnalysis/Pag';
|
|
10
9
|
export { CSFuncID, PagBuilder } from './callgraph/pointerAnalysis/PagBuilder';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAG5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAGzE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAG9E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -31,8 +31,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
31
31
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
32
32
|
};
|
|
33
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
-
exports.ArkFile = exports.SCCDetection = exports.BaseExplicitGraph = exports.BaseNode = exports.BaseEdge = exports.DominanceTree = exports.DominanceFinder = exports.Cfg = exports.BasicBlock = exports.UndefinedVariableSolver = exports.UndefinedVariableChecker = exports.Fact = exports.PathEdge = exports.PathEdgePoint = exports.DataflowSolver = exports.DataflowResult = exports.DataflowProblem = exports.Scope = exports.VisibleValue = exports.ValueUtil = exports.TypeInference = exports.StmtUseReplacer = exports.RefUseReplacer = exports.IRUtils = exports.ExprUseReplacer = exports.DummyMainCreater = exports.ModelUtils = exports.FullPosition = exports.LineColPosition = exports.Local = exports.DefUseChain = exports.Decorator = exports.Constant = exports.DVFGBuilder = exports.DVFG = exports.DiffPTData = exports.PtsSet = exports.PointerAnalysisConfig = exports.PointerAnalysis = exports.PagBuilder = exports.CSFuncID = exports.DummyCallCreator = exports.
|
|
35
|
-
exports.ts = exports.Logger = exports.LOG_MODULE_TYPE = exports.LOG_LEVEL = exports.ViewTreePrinter = exports.GraphPrinter = exports.JsonPrinter = exports.SourceFilePrinter = exports.SourceNamespacePrinter = exports.SourceClassPrinter = exports.SourceMethodPrinter = exports.DotFilePrinter = exports.DotNamespacePrinter = exports.DotClassPrinter = exports.DotMethodPrinter = exports.PrinterBuilder = exports.Printer = exports.Scene = exports.SceneConfig = exports.ArkBody = exports.ImportInfo = exports.ExportInfo = exports.ArkField = exports.ArkMethod = exports.ArkClass =
|
|
34
|
+
exports.ArkNamespace = exports.ArkFile = exports.SCCDetection = exports.BaseExplicitGraph = exports.BaseNode = exports.BaseEdge = exports.DominanceTree = exports.DominanceFinder = exports.Cfg = exports.BasicBlock = exports.UndefinedVariableSolver = exports.UndefinedVariableChecker = exports.Fact = exports.PathEdge = exports.PathEdgePoint = exports.DataflowSolver = exports.DataflowResult = exports.DataflowProblem = exports.Scope = exports.VisibleValue = exports.ValueUtil = exports.TypeInference = exports.StmtUseReplacer = exports.RefUseReplacer = exports.IRUtils = exports.ExprUseReplacer = exports.DummyMainCreater = exports.ModelUtils = exports.FullPosition = exports.LineColPosition = exports.Local = exports.DefUseChain = exports.Decorator = exports.Constant = exports.DVFGBuilder = exports.DVFG = exports.DiffPTData = exports.PtsSet = exports.PointerAnalysisConfig = exports.PointerAnalysis = exports.PagBuilder = exports.CSFuncID = exports.DummyCallCreator = exports.CallGraphBuilder = exports.CGStat = exports.PAGStat = exports.PTAStat = exports.RapidTypeAnalysis = exports.ClassHierarchyAnalysis = exports.AbstractAnalysis = void 0;
|
|
35
|
+
exports.ts = exports.Logger = exports.LOG_MODULE_TYPE = exports.LOG_LEVEL = exports.ViewTreePrinter = exports.GraphPrinter = exports.JsonPrinter = exports.SourceFilePrinter = exports.SourceNamespacePrinter = exports.SourceClassPrinter = exports.SourceMethodPrinter = exports.DotFilePrinter = exports.DotNamespacePrinter = exports.DotClassPrinter = exports.DotMethodPrinter = exports.PrinterBuilder = exports.Printer = exports.Scene = exports.SceneConfig = exports.ArkBody = exports.ImportInfo = exports.ExportInfo = exports.ArkField = exports.ArkMethod = exports.ArkClass = void 0;
|
|
36
36
|
// callgraph/algorithm
|
|
37
37
|
var AbstractAnalysis_1 = require("./callgraph/algorithm/AbstractAnalysis");
|
|
38
38
|
Object.defineProperty(exports, "AbstractAnalysis", { enumerable: true, get: function () { return AbstractAnalysis_1.AbstractAnalysis; } });
|
|
@@ -50,8 +50,6 @@ __exportStar(require("./callgraph/model/CallGraph"), exports);
|
|
|
50
50
|
var CallGraphBuilder_1 = require("./callgraph/model/builder/CallGraphBuilder");
|
|
51
51
|
Object.defineProperty(exports, "CallGraphBuilder", { enumerable: true, get: function () { return CallGraphBuilder_1.CallGraphBuilder; } });
|
|
52
52
|
// callgraph/pointerAnalysis
|
|
53
|
-
var Context_1 = require("./callgraph/pointerAnalysis/Context");
|
|
54
|
-
Object.defineProperty(exports, "KLimitedContextSensitive", { enumerable: true, get: function () { return Context_1.KLimitedContextSensitive; } });
|
|
55
53
|
var DummyCallCreator_1 = require("./callgraph/pointerAnalysis/DummyCallCreator");
|
|
56
54
|
Object.defineProperty(exports, "DummyCallCreator", { enumerable: true, get: function () { return DummyCallCreator_1.DummyCallCreator; } });
|
|
57
55
|
__exportStar(require("./callgraph/pointerAnalysis/Pag"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonPrinter.d.ts","sourceRoot":"","sources":["../../src/save/JsonPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"JsonPrinter.d.ts","sourceRoot":"","sources":["../../src/save/JsonPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAuEhD,qBAAa,WAAY,SAAQ,OAAO;IACxB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO;IAI7B,IAAI,IAAI,MAAM;IAKrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,aAAa;IAoIrB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,cAAc;IAsKtB,OAAO,CAAC,aAAa;CAuCxB"}
|
package/lib/save/JsonPrinter.js
CHANGED
|
@@ -266,6 +266,14 @@ class JsonPrinter extends Printer_1.Printer {
|
|
|
266
266
|
originType: type.getOriginType(),
|
|
267
267
|
};
|
|
268
268
|
}
|
|
269
|
+
else if (type instanceof Type_1.EnumValueType) {
|
|
270
|
+
const c = type.getConstant();
|
|
271
|
+
return {
|
|
272
|
+
_: 'EnumValueType',
|
|
273
|
+
signature: this.serializeFieldSignature(type.getFieldSignature()),
|
|
274
|
+
constant: c && this.serializeValue(c),
|
|
275
|
+
};
|
|
276
|
+
}
|
|
269
277
|
else {
|
|
270
278
|
console.warn(`Unhandled Type: ${type.constructor.name} (${type.toString()})`);
|
|
271
279
|
return {
|
|
@@ -367,6 +375,12 @@ class JsonPrinter extends Printer_1.Printer {
|
|
|
367
375
|
type: this.serializeType(local.getType()),
|
|
368
376
|
};
|
|
369
377
|
}
|
|
378
|
+
serializeConstant(constant) {
|
|
379
|
+
return {
|
|
380
|
+
value: constant.getValue(),
|
|
381
|
+
type: this.serializeType(constant.getType()),
|
|
382
|
+
};
|
|
383
|
+
}
|
|
370
384
|
serializeValue(value) {
|
|
371
385
|
if (value === undefined) {
|
|
372
386
|
throw new Error('Value is undefined');
|
|
@@ -375,11 +389,7 @@ class JsonPrinter extends Printer_1.Printer {
|
|
|
375
389
|
return Object.assign({ _: 'Local' }, this.serializeLocal(value));
|
|
376
390
|
}
|
|
377
391
|
else if (value instanceof Constant_1.Constant) {
|
|
378
|
-
return {
|
|
379
|
-
_: 'Constant',
|
|
380
|
-
value: value.getValue(),
|
|
381
|
-
type: this.serializeType(value.getType()),
|
|
382
|
-
};
|
|
392
|
+
return Object.assign({ _: 'Constant' }, this.serializeConstant(value));
|
|
383
393
|
}
|
|
384
394
|
else if (value instanceof Expr_1.ArkNewExpr) {
|
|
385
395
|
return {
|
|
@@ -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;
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
131
|
+
isFirstBB = false;
|
|
124
132
|
}
|
|
125
133
|
}
|
|
126
134
|
}
|
|
@@ -33,7 +33,7 @@ export declare class SourceBody implements StmtPrinterContext {
|
|
|
33
33
|
isLocalDefined(local: Local): boolean;
|
|
34
34
|
getStmtReader(): StmtReader;
|
|
35
35
|
setTempCode(temp: string, code: string): void;
|
|
36
|
-
transTemp2Code(temp: Local): string;
|
|
36
|
+
transTemp2Code(temp: Local, isLeftOp?: boolean): string;
|
|
37
37
|
getTempCodeMap(): Map<string, string>;
|
|
38
38
|
hasTempVisit(temp: string): boolean;
|
|
39
39
|
setTempVisit(temp: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceBody.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceBody.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAA2C,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAGrF,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAWH,UAAU,EAIV,kBAAkB,EACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D,qBAAa,UAAW,YAAW,kBAAkB;IACjD,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC;IACjC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,QAAQ,CAAO;gBAEJ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO;IAcxE,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI7B,iBAAiB,IAAI,OAAO;IAG5B,iBAAiB,IAAI,OAAO;IAGrB,UAAU,IAAI,OAAO;IAIrB,wBAAwB,IAAI,YAAY,GAAG,SAAS;IAIpD,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI;IAQvD,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI;IAIpD,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAI/B,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI/B,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIrC,aAAa,IAAI,UAAU;IAI3B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7C,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"SourceBody.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceBody.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAA2C,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAGrF,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAWH,UAAU,EAIV,kBAAkB,EACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D,qBAAa,UAAW,YAAW,kBAAkB;IACjD,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC;IACjC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,QAAQ,CAAO;gBAEJ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO;IAcxE,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI7B,iBAAiB,IAAI,OAAO;IAG5B,iBAAiB,IAAI,OAAO;IAGrB,UAAU,IAAI,OAAO;IAIrB,wBAAwB,IAAI,YAAY,GAAG,SAAS;IAIpD,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI;IAQvD,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI;IAIpD,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAI/B,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI/B,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIrC,aAAa,IAAI,UAAU;IAI3B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7C,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,GAAE,OAAe,GAAG,MAAM;IAU9D,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIrC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,UAAU,IAAI,aAAa;IAI3B,IAAI,IAAI,MAAM;IAKrB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAmDvB,OAAO,CAAC,UAAU;IASX,QAAQ,IAAI,UAAU,EAAE;IAIxB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IASvC,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,QAAQ;CAqCnB;AAED,qBAAa,UAAU;IACnB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,GAAG,CAAS;gBAER,KAAK,EAAE,IAAI,EAAE;IAKzB,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,OAAO;IAIlB,IAAI,IAAI,IAAI;IAUZ,QAAQ,IAAI,IAAI;CAOnB"}
|
|
@@ -103,8 +103,9 @@ class SourceBody {
|
|
|
103
103
|
setTempCode(temp, code) {
|
|
104
104
|
this.tempCodeMap.set(temp, code);
|
|
105
105
|
}
|
|
106
|
-
transTemp2Code(temp) {
|
|
107
|
-
if
|
|
106
|
+
transTemp2Code(temp, isLeftOp = false) {
|
|
107
|
+
// if the temp local is not the left op of ArkAssignStmt, it should get the actual text from tempCodeMap
|
|
108
|
+
if (!isLeftOp && this.tempCodeMap.has(temp.getName()) && PrinterUtils_1.PrinterUtils.isTemp(temp.getName())) {
|
|
108
109
|
this.tempVisitor.add(temp.getName());
|
|
109
110
|
return this.tempCodeMap.get(temp.getName());
|
|
110
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceStmt.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceStmt.ts"],"names":[],"mappings":"AAgBA,OAAO,
|
|
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,15 +131,19 @@ 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;
|
|
139
144
|
return;
|
|
140
145
|
}
|
|
141
|
-
this.leftCode = this.transformer.valueToString(this.leftOp);
|
|
146
|
+
this.leftCode = this.transformer.valueToString(this.leftOp, true);
|
|
142
147
|
if (this.leftOp instanceof Local_1.Local && this.rightOp instanceof Expr_1.ArkNewExpr) {
|
|
143
148
|
this.transferRightNewExpr();
|
|
144
149
|
}
|
|
@@ -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
|
}
|
|
@@ -358,8 +366,8 @@ class SourceInvokeStmt extends SourceStmt {
|
|
|
358
366
|
}
|
|
359
367
|
}
|
|
360
368
|
else if (invokeExpr instanceof Expr_1.ArkInstanceInvokeExpr) {
|
|
361
|
-
code = this.transformer.instanceInvokeExprToString(invokeExpr);
|
|
362
369
|
isAttr = PrinterUtils_1.PrinterUtils.isComponentAttributeInvoke(invokeExpr);
|
|
370
|
+
code = this.transformer.instanceInvokeExprToString(invokeExpr, isAttr);
|
|
363
371
|
}
|
|
364
372
|
if (code.length > 0 && !isAttr) {
|
|
365
373
|
this.setText(`${code};`);
|
|
@@ -467,7 +475,7 @@ class SourceWhileStmt extends SourceStmt {
|
|
|
467
475
|
if (!(iterator instanceof Expr_1.ArkInstanceInvokeExpr)) {
|
|
468
476
|
return false;
|
|
469
477
|
}
|
|
470
|
-
if (iterator.getMethodSignature().getMethodSubSignature().getMethodName() !== 'iterator') {
|
|
478
|
+
if (iterator.getMethodSignature().getMethodSubSignature().getMethodName() !== 'Symbol.iterator') {
|
|
471
479
|
return false;
|
|
472
480
|
}
|
|
473
481
|
let successors = this.block.getSuccessors();
|
|
@@ -16,7 +16,7 @@ export interface TransformerContext {
|
|
|
16
16
|
getMethod(signature: MethodSignature): ArkMethod | null;
|
|
17
17
|
getClass(signature: ClassSignature): ArkClass | null;
|
|
18
18
|
getPrinter(): ArkCodeBuffer;
|
|
19
|
-
transTemp2Code(temp: Local): string;
|
|
19
|
+
transTemp2Code(temp: Local, isLeftOp: boolean): string;
|
|
20
20
|
isInBuilderMethod(): boolean;
|
|
21
21
|
}
|
|
22
22
|
export declare class SourceTransformer {
|
|
@@ -24,7 +24,7 @@ export declare class SourceTransformer {
|
|
|
24
24
|
constructor(context: TransformerContext);
|
|
25
25
|
private anonymousMethodToString;
|
|
26
26
|
private anonymousClassToString;
|
|
27
|
-
instanceInvokeExprToString(invokeExpr: ArkInstanceInvokeExpr): string;
|
|
27
|
+
instanceInvokeExprToString(invokeExpr: ArkInstanceInvokeExpr, isAttr: boolean): string;
|
|
28
28
|
private transBuilderMethod;
|
|
29
29
|
staticInvokeExprToString(invokeExpr: ArkStaticInvokeExpr): string;
|
|
30
30
|
private genericTypesToString;
|
|
@@ -32,7 +32,7 @@ export declare class SourceTransformer {
|
|
|
32
32
|
static constToString(value: Constant): string;
|
|
33
33
|
private exprToString;
|
|
34
34
|
refToString(value: AbstractRef): string;
|
|
35
|
-
valueToString(value: Value, operator?: string): string;
|
|
35
|
+
valueToString(value: Value, isLeftOp?: boolean, operator?: string): string;
|
|
36
36
|
private localToString;
|
|
37
37
|
literalObjectToString(type: ClassType): string;
|
|
38
38
|
typeToString(type: Type): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceTransformer.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAMH,qBAAqB,EAKrB,mBAAmB,EAKtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAiB,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,OAAO,EAGH,SAAS,EAQT,IAAI,EAKP,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAmE,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"SourceTransformer.d.ts","sourceRoot":"","sources":["../../../src/save/source/SourceTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAMH,qBAAqB,EAKrB,mBAAmB,EAKtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAiB,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,OAAO,EAGH,SAAS,EAQT,IAAI,EAKP,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAmE,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AASnD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAU7D,MAAM,WAAW,kBAAkB;IAC/B,UAAU,IAAI,OAAO,CAAC;IAEtB,wBAAwB,IAAI,YAAY,GAAG,SAAS,CAAC;IAErD,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;IAExD,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI,CAAC;IAErD,UAAU,IAAI,aAAa,CAAC;IAE5B,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAEvD,iBAAiB,IAAI,OAAO,CAAC;CAChC;AAED,qBAAa,iBAAiB;IAC1B,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAE1B,OAAO,EAAE,kBAAkB;IAIvC,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,sBAAsB;IAKvB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM;IAiB7F,OAAO,CAAC,kBAAkB;IAuCnB,wBAAwB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM;IA8BxE,OAAO,CAAC,oBAAoB;IAYrB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,GAAE,MAAa,GAAG,MAAM;WASvD,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAUpD,OAAO,CAAC,YAAY;IA4Db,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;IA0BvC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAE,OAAe,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAqBxF,OAAO,CAAC,aAAa;IA4Bd,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAW9C,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IA+DvC,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,gBAAgB;CAkB3B"}
|
|
@@ -73,7 +73,7 @@ class SourceTransformer {
|
|
|
73
73
|
let clsPrinter = new SourceClass_1.SourceClass(cls, indent);
|
|
74
74
|
return clsPrinter.dump().trimStart();
|
|
75
75
|
}
|
|
76
|
-
instanceInvokeExprToString(invokeExpr) {
|
|
76
|
+
instanceInvokeExprToString(invokeExpr, isAttr) {
|
|
77
77
|
let methodName = invokeExpr.getMethodSignature().getMethodSubSignature().getMethodName();
|
|
78
78
|
if (methodName === Const_1.INSTANCE_INIT_METHOD_NAME) {
|
|
79
79
|
return '';
|
|
@@ -82,8 +82,8 @@ class SourceTransformer {
|
|
|
82
82
|
invokeExpr.getArgs().forEach(v => {
|
|
83
83
|
args.push(this.valueToString(v));
|
|
84
84
|
});
|
|
85
|
-
let genericCode = this.genericTypesToString(invokeExpr.getRealGenericTypes());
|
|
86
|
-
if (
|
|
85
|
+
let genericCode = isAttr ? '' : this.genericTypesToString(invokeExpr.getRealGenericTypes());
|
|
86
|
+
if (isAttr && this.context.isInBuilderMethod()) {
|
|
87
87
|
return `.${methodName}${genericCode}(${args.join(', ')})`;
|
|
88
88
|
}
|
|
89
89
|
return `${this.valueToString(invokeExpr.getBase())}.${methodName}${genericCode}(${args.join(', ')})`;
|
|
@@ -178,7 +178,8 @@ class SourceTransformer {
|
|
|
178
178
|
}
|
|
179
179
|
exprToString(expr) {
|
|
180
180
|
if (expr instanceof Expr_1.ArkInstanceInvokeExpr) {
|
|
181
|
-
|
|
181
|
+
const isAttr = PrinterUtils_1.PrinterUtils.isComponentAttributeInvoke(expr);
|
|
182
|
+
return `${this.instanceInvokeExprToString(expr, isAttr)}`;
|
|
182
183
|
}
|
|
183
184
|
if (expr instanceof Expr_1.ArkStaticInvokeExpr) {
|
|
184
185
|
return `${this.staticInvokeExprToString(expr)}`;
|
|
@@ -196,7 +197,7 @@ class SourceTransformer {
|
|
|
196
197
|
let op1 = expr.getOp1();
|
|
197
198
|
let op2 = expr.getOp2();
|
|
198
199
|
let operator = expr.getOperator();
|
|
199
|
-
return `${this.valueToString(op1, operator)} ${operator} ${this.valueToString(op2, operator)}`;
|
|
200
|
+
return `${this.valueToString(op1, false, operator)} ${operator} ${this.valueToString(op2, false, operator)}`;
|
|
200
201
|
}
|
|
201
202
|
if (expr instanceof Expr_1.ArkTypeOfExpr) {
|
|
202
203
|
return `typeof(${this.valueToString(expr.getOp())})`;
|
|
@@ -242,7 +243,7 @@ class SourceTransformer {
|
|
|
242
243
|
logger.info(`refToString ${value.constructor} not support.`);
|
|
243
244
|
return `${value}`;
|
|
244
245
|
}
|
|
245
|
-
valueToString(value, operator) {
|
|
246
|
+
valueToString(value, isLeftOp = false, operator) {
|
|
246
247
|
if (value instanceof Expr_1.AbstractExpr) {
|
|
247
248
|
return this.exprToString(value);
|
|
248
249
|
}
|
|
@@ -253,12 +254,12 @@ class SourceTransformer {
|
|
|
253
254
|
return SourceTransformer.constToString(value);
|
|
254
255
|
}
|
|
255
256
|
if (value instanceof Local_1.Local) {
|
|
256
|
-
return this.localToString(value, operator);
|
|
257
|
+
return this.localToString(value, isLeftOp, operator);
|
|
257
258
|
}
|
|
258
259
|
logger.info(`valueToString ${value.constructor} not support.`);
|
|
259
260
|
return `${value}`;
|
|
260
261
|
}
|
|
261
|
-
localToString(value, operator) {
|
|
262
|
+
localToString(value, isLeftOp = false, operator) {
|
|
262
263
|
if (PrinterUtils_1.PrinterUtils.isAnonymousMethod(value.getName())) {
|
|
263
264
|
let methodSignature = value.getType().getMethodSignature();
|
|
264
265
|
let anonymousMethod = this.context.getMethod(methodSignature);
|
|
@@ -277,11 +278,11 @@ class SourceTransformer {
|
|
|
277
278
|
if (PrinterUtils_1.PrinterUtils.isTemp(value.getName())) {
|
|
278
279
|
let stmt = value.getDeclaringStmt();
|
|
279
280
|
if (stmt instanceof Stmt_1.ArkAssignStmt && stmt.getRightOp() instanceof Expr_1.ArkNormalBinopExpr) {
|
|
280
|
-
return `(${this.context.transTemp2Code(value)})`;
|
|
281
|
+
return `(${this.context.transTemp2Code(value, isLeftOp)})`;
|
|
281
282
|
}
|
|
282
283
|
}
|
|
283
284
|
}
|
|
284
|
-
return this.context.transTemp2Code(value);
|
|
285
|
+
return this.context.transTemp2Code(value, isLeftOp);
|
|
285
286
|
}
|
|
286
287
|
literalObjectToString(type) {
|
|
287
288
|
let name = type.getClassSignature().getClassName();
|
|
@@ -62,7 +62,7 @@ class StaticSingleAssignmentFormer {
|
|
|
62
62
|
let phiBlocks = localToPhiBlock.get(local);
|
|
63
63
|
let blocks = Array.from(localToBlocks.get(local));
|
|
64
64
|
while (blocks.length !== 0) {
|
|
65
|
-
let block = blocks.splice(0, 1)
|
|
65
|
+
let block = blocks.splice(0, 1)[0];
|
|
66
66
|
let dfs = dominanceFinder.getDominanceFrontiers(block);
|
|
67
67
|
for (const df of dfs) {
|
|
68
68
|
this.handleDf(blockToPhiStmts, blockToPhiLocals, phiBlocks, df, local, blockToDefs, blocks);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arkanalyzer",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"commit_id": "
|
|
3
|
+
"version": "1.0.41",
|
|
4
|
+
"commit_id": "49dc535b",
|
|
5
5
|
"files": [
|
|
6
6
|
"docs",
|
|
7
7
|
"lib",
|
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
"scripts": {
|
|
12
12
|
"build": "tsc",
|
|
13
13
|
"prepack": "tsc -p ./tsconfig.prod.json",
|
|
14
|
-
"test": "
|
|
15
|
-
"testonce": "
|
|
16
|
-
"coverage": "
|
|
14
|
+
"test": "vitest",
|
|
15
|
+
"testonce": "vitest --no-color run",
|
|
16
|
+
"coverage": "vitest run --coverage",
|
|
17
17
|
"heapdump": "npm run build && node --expose-gc out/tests/HeapDumpTest.js",
|
|
18
18
|
"gendoc": "npx typedoc",
|
|
19
19
|
"copyCollectionDefintion": "ts-node script/typescriptCollectionDefinitionCopy.ts"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"commander": "
|
|
23
|
-
"log4js": "6.
|
|
22
|
+
"commander": "13.1.0",
|
|
23
|
+
"log4js": "6.9.1",
|
|
24
24
|
"ohos-typescript": "^4.9.5-r4"
|
|
25
25
|
},
|
|
26
26
|
"bundledDependencies": [
|
|
@@ -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"}
|