arkanalyzer 1.0.42 → 1.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Scene.d.ts +1 -2
- package/lib/Scene.d.ts.map +1 -1
- package/lib/Scene.js +59 -47
- package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts +11 -5
- package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PTAUtils.js +42 -24
- package/lib/callgraph/pointerAnalysis/Pag.d.ts +6 -11
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +26 -23
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +11 -63
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +62 -495
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +4 -2
- package/lib/callgraph/pointerAnalysis/plugins/ContainerPlugin.d.ts +24 -0
- package/lib/callgraph/pointerAnalysis/plugins/ContainerPlugin.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/plugins/ContainerPlugin.js +167 -0
- package/lib/callgraph/pointerAnalysis/plugins/FunctionPlugin.d.ts +26 -0
- package/lib/callgraph/pointerAnalysis/plugins/FunctionPlugin.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/plugins/FunctionPlugin.js +151 -0
- package/lib/callgraph/pointerAnalysis/plugins/IPagPlugin.d.ts +15 -0
- package/lib/callgraph/pointerAnalysis/plugins/IPagPlugin.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/plugins/IPagPlugin.js +16 -0
- package/lib/callgraph/pointerAnalysis/plugins/PluginManager.d.ts +25 -0
- package/lib/callgraph/pointerAnalysis/plugins/PluginManager.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/plugins/PluginManager.js +66 -0
- package/lib/callgraph/pointerAnalysis/plugins/SdkPlugin.d.ts +37 -0
- package/lib/callgraph/pointerAnalysis/plugins/SdkPlugin.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/plugins/SdkPlugin.js +160 -0
- package/lib/callgraph/pointerAnalysis/plugins/StoragePlugin.d.ts +68 -0
- package/lib/callgraph/pointerAnalysis/plugins/StoragePlugin.d.ts.map +1 -0
- package/lib/callgraph/pointerAnalysis/plugins/StoragePlugin.js +288 -0
- package/lib/core/common/DummyMainCreater.js +1 -1
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +4 -0
- package/lib/core/common/SdkUtils.d.ts +1 -1
- package/lib/core/common/SdkUtils.d.ts.map +1 -1
- package/lib/core/common/SdkUtils.js +18 -18
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +11 -2
- package/lib/core/graph/builder/CfgBuilder.js +1 -1
- package/lib/core/graph/builder/ConditionBuilder.js +1 -1
- package/lib/core/model/ArkClass.d.ts.map +1 -1
- package/lib/core/model/ArkClass.js +2 -1
- package/lib/core/model/builder/ArkMethodBuilder.d.ts +1 -0
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +40 -5
- package/lib/core/model/builder/BodyBuilder.js +1 -1
- package/lib/pass/Dispatcher.d.ts +2 -2
- package/lib/pass/Dispatcher.d.ts.map +1 -1
- package/lib/pass/Pass.d.ts +3 -3
- package/lib/pass/Pass.d.ts.map +1 -1
- package/lib/pass/ScenePassMgr.d.ts +4 -4
- package/lib/pass/ScenePassMgr.d.ts.map +1 -1
- package/lib/pass/validators/Exprs.d.ts +9 -0
- package/lib/pass/validators/Exprs.d.ts.map +1 -0
- package/lib/pass/validators/Exprs.js +40 -0
- package/lib/pass/validators/Models.d.ts +14 -0
- package/lib/pass/validators/Models.d.ts.map +1 -0
- package/lib/pass/validators/Models.js +42 -0
- package/lib/pass/validators/SceneValidator.d.ts +19 -0
- package/lib/pass/validators/SceneValidator.d.ts.map +1 -0
- package/lib/pass/validators/SceneValidator.js +77 -0
- package/lib/pass/validators/Stmts.d.ts +7 -0
- package/lib/pass/validators/Stmts.d.ts.map +1 -0
- package/lib/pass/validators/Stmts.js +36 -0
- package/lib/pass/{SceneValidator.d.ts → validators/Validator.d.ts} +100 -108
- package/lib/pass/validators/Validator.d.ts.map +1 -0
- package/lib/pass/{SceneValidator.js → validators/Validator.js} +147 -143
- package/lib/pass/validators/Values.d.ts +7 -0
- package/lib/pass/validators/Values.d.ts.map +1 -0
- package/lib/pass/validators/Values.js +34 -0
- package/lib/save/source/SourceStmt.js +1 -1
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +16 -1
- package/lib/utils/FileUtils.js +1 -1
- package/package.json +2 -2
- package/lib/pass/SceneValidator.d.ts.map +0 -1
package/lib/Scene.d.ts
CHANGED
|
@@ -46,7 +46,6 @@ export declare class Scene {
|
|
|
46
46
|
private buildStage;
|
|
47
47
|
private fileLanguages;
|
|
48
48
|
private options;
|
|
49
|
-
private indexPathArray;
|
|
50
49
|
private unhandledFilePaths;
|
|
51
50
|
private unhandledSdkFilePaths;
|
|
52
51
|
constructor();
|
|
@@ -87,7 +86,7 @@ export declare class Scene {
|
|
|
87
86
|
private parseOhPackage;
|
|
88
87
|
private findTsConfigInfoDeeply;
|
|
89
88
|
private addTsConfigInfo;
|
|
90
|
-
private
|
|
89
|
+
private updateOrAddDefaultConstructors;
|
|
91
90
|
private buildAllMethodBody;
|
|
92
91
|
private genArkFiles;
|
|
93
92
|
private getFilesOrderByDependency;
|
package/lib/Scene.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../src/Scene.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,EAAY,MAAM,UAAU,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/G,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK1C,OAAO,EAAE,SAAS,EAA0B,MAAM,wBAAwB,CAAC;AAG3E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAYxD,aAAK,eAAe;IAChB,UAAU,IAAA;IACV,YAAY,IAAA;IACZ,UAAU,IAAA;IACV,WAAW,IAAA;IACX,eAAe,IAAA;IACf,gBAAgB,IAAA;IAChB,aAAa,IAAA;CAChB;AAED;;;GAGG;AACH,qBAAa,KAAK;IACd,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,cAAc,CAAc;IAEpC,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,kBAAkB,CAAkD;IAE5E,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,aAAa,CAA+B;IAGpD,OAAO,CAAC,YAAY,CAAoC;IAGxD,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,UAAU,CAAqC;IAEvD,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,YAAY,CAAwD;IAC5E,OAAO,CAAC,eAAe,CAAsF;IAC7G,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,qBAAqB,CAAmC;IAChE,OAAO,CAAC,wBAAwB,CAAC,CAAwC;IACzE,OAAO,CAAC,OAAO,CAAC,CAAqB;IAErC,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,aAAa,CAAoC;IAEzD,OAAO,CAAC,OAAO,CAAgB;
|
|
1
|
+
{"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../src/Scene.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,EAAY,MAAM,UAAU,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/G,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK1C,OAAO,EAAE,SAAS,EAA0B,MAAM,wBAAwB,CAAC;AAG3E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAYxD,aAAK,eAAe;IAChB,UAAU,IAAA;IACV,YAAY,IAAA;IACZ,UAAU,IAAA;IACV,WAAW,IAAA;IACX,eAAe,IAAA;IACf,gBAAgB,IAAA;IAChB,aAAa,IAAA;CAChB;AAED;;;GAGG;AACH,qBAAa,KAAK;IACd,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,cAAc,CAAc;IAEpC,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,kBAAkB,CAAkD;IAE5E,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,aAAa,CAA+B;IAGpD,OAAO,CAAC,YAAY,CAAoC;IAGxD,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,UAAU,CAAqC;IAEvD,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,YAAY,CAAwD;IAC5E,OAAO,CAAC,eAAe,CAAsF;IAC7G,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,qBAAqB,CAAmC;IAChE,OAAO,CAAC,wBAAwB,CAAC,CAAwC;IACzE,OAAO,CAAC,OAAO,CAAC,CAAqB;IAErC,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,aAAa,CAAoC;IAEzD,OAAO,CAAC,OAAO,CAAgB;IAE/B,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,qBAAqB,CAAgB;;IAQtC,OAAO,IAAI,IAAI;IAOf,UAAU,IAAI,YAAY;IAI1B,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAInC,wBAAwB,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAIhD,KAAK,IAAI,IAAI;IAoBb,QAAQ,IAAI,eAAe;IAIlC;;;;;;;;;;;;;;;;;;OAkBG;IACI,wBAAwB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAKxD,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAO1D;;;;OAIG;IACI,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAoDrD,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,8BAA8B;IAatC,OAAO,CAAC,kBAAkB;IAgC1B,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,wBAAwB;IAoChC,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,+BAA+B;IAoBvC,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,QAAQ;IAgChB;;;;OAIG;IACI,yBAAyB,IAAI,IAAI;IAYxC,OAAO,CAAC,oBAAoB;IAUrB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI;IA6BhG,OAAO,CAAC,yBAAyB;IAoBjC;;;;;;;;OAQG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;;OAGG;IACI,cAAc,IAAI,MAAM;IAIxB,eAAe,IAAI,MAAM,EAAE;IAI3B,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIzD;;;;;;;;;;;;;;;;;;OAkBG;IACI,OAAO,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,GAAG,IAAI;IAWrD,qBAAqB,IAAI,MAAM,EAAE;IAOjC,wBAAwB,IAAI,MAAM,EAAE;IAIpC,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAI5B,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO;IAIxD;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,QAAQ,IAAI,OAAO,EAAE;IAIrB,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIzC,cAAc,IAAI,OAAO,EAAE;IAI3B,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;IAIrC,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;IAIpC,YAAY,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI;IAgBhF,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,gBAAgB;IAWjB,aAAa,IAAI,YAAY,EAAE;IAItC;;;;OAIG;IACI,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI;IAsBhE,OAAO,CAAC,aAAa;IAoBd,UAAU,IAAI,QAAQ,EAAE;IAIxB,SAAS,CAAC,eAAe,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;IAgBvF,OAAO,CAAC,aAAa;IAerB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACI,UAAU,IAAI,SAAS,EAAE;IAIzB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAIxC,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAIxC,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAIxC,eAAe,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO;IAIjD,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAIlC,aAAa,IAAI,OAAO;IAKxB,cAAc,IAAI,eAAe,EAAE;IAI1C,+CAA+C;IACxC,eAAe,IAAI,YAAY;IAI/B,eAAe,IAAI;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;IAI3C,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAI3D,gBAAgB,IAAI,MAAM;IAI1B,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,SAAS;IAO3D,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,SAAS;IAOlE;;;;;;;;;;;OAWG;IACI,UAAU,IAAI,IAAI;IAgBzB;;;;;;;;;;;;;OAaG;IACI,gBAAgB,IAAI,IAAI;IAU/B,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,oBAAoB;IAoC5B,OAAO,CAAC,sBAAsB;IAqCvB,WAAW,IAAI,GAAG,CAAC,aAAa,GAAG,kBAAkB,EAAE,QAAQ,EAAE,CAAC;IA8BzE,OAAO,CAAC,WAAW;IA+BnB,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,mBAAmB;IAwC3B,OAAO,CAAC,oBAAoB;IAUrB,oBAAoB,IAAI,GAAG,CAAC,aAAa,GAAG,kBAAkB,EAAE,KAAK,EAAE,CAAC;IAoCxE,oBAAoB,IAAI,SAAS,EAAE;IAUnC,cAAc,IAAI,OAAO;IAIzB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI3D,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAI7C,2BAA2B,IAAI;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS;IAIpE,UAAU,IAAI,MAAM,GAAG,SAAS;CAG1C;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,aAAa,CAAmC;IAExD,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,YAAY,CAAgC;gBAExC,YAAY,EAAE,KAAK;IAIxB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,WAAW,GAAE,OAAe,GAAG,IAAI;IAczH,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAUhF;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;;OAGG;IACI,aAAa,IAAI,MAAM;IAIvB,aAAa,IAAI,MAAM;IAIvB,gBAAgB,IAAI,MAAM;IAI1B,eAAe,IAAI;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;IAI3C,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAIzC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIzC,OAAO,CAAC,WAAW;CAgBtB"}
|
package/lib/Scene.js
CHANGED
|
@@ -106,8 +106,7 @@ class Scene {
|
|
|
106
106
|
this.overRideDependencyMap = new Map();
|
|
107
107
|
this.buildStage = SceneBuildStage.BUILD_INIT;
|
|
108
108
|
this.fileLanguages = new Map();
|
|
109
|
-
this.
|
|
110
|
-
this.unhandledFilePaths = [];
|
|
109
|
+
this.unhandledFilePaths = new Set();
|
|
111
110
|
this.unhandledSdkFilePaths = [];
|
|
112
111
|
}
|
|
113
112
|
/*
|
|
@@ -205,7 +204,7 @@ class Scene {
|
|
|
205
204
|
}
|
|
206
205
|
// handle sdks
|
|
207
206
|
if (this.options.enableBuiltIn && !sceneConfig.getSdksObj().find(sdk => sdk.name === SdkUtils_1.SdkUtils.BUILT_IN_NAME)) {
|
|
208
|
-
sceneConfig.getSdksObj().unshift(SdkUtils_1.SdkUtils.
|
|
207
|
+
sceneConfig.getSdksObj().unshift(SdkUtils_1.SdkUtils.getBuiltInSdk());
|
|
209
208
|
}
|
|
210
209
|
(_a = sceneConfig.getSdksObj()) === null || _a === void 0 ? void 0 : _a.forEach(sdk => {
|
|
211
210
|
if (!sdk.moduleName) {
|
|
@@ -305,12 +304,13 @@ class Scene {
|
|
|
305
304
|
this.baseUrl = tsConfigObj.compilerOptions.baseUrl;
|
|
306
305
|
}
|
|
307
306
|
}
|
|
308
|
-
|
|
307
|
+
updateOrAddDefaultConstructors() {
|
|
309
308
|
for (const file of this.getFiles()) {
|
|
310
309
|
for (const cls of ModelUtils_1.ModelUtils.getAllClassesInFile(file)) {
|
|
311
310
|
(0, ArkMethodBuilder_1.buildDefaultConstructor)(cls);
|
|
312
311
|
const constructor = cls.getMethodWithName(TSConst_1.CONSTRUCTOR_NAME);
|
|
313
312
|
if (constructor !== null) {
|
|
313
|
+
(0, ArkMethodBuilder_1.replaceSuper2Constructor)(constructor);
|
|
314
314
|
(0, ArkMethodBuilder_1.addInitInConstructor)(constructor);
|
|
315
315
|
}
|
|
316
316
|
}
|
|
@@ -354,32 +354,34 @@ class Scene {
|
|
|
354
354
|
const arkFile = new ArkFile_1.ArkFile(FileUtils_1.FileUtils.getFileLanguage(file, this.fileLanguages));
|
|
355
355
|
arkFile.setScene(this);
|
|
356
356
|
(0, ArkFileBuilder_1.buildArkFileFromFile)(file, this.realProjectDir, arkFile, this.projectName);
|
|
357
|
-
this.
|
|
357
|
+
this.setFile(arkFile);
|
|
358
358
|
}
|
|
359
359
|
catch (error) {
|
|
360
360
|
logger.error('Error parsing file:', file, error);
|
|
361
|
-
this.unhandledFilePaths.
|
|
361
|
+
this.unhandledFilePaths.add(file);
|
|
362
362
|
return;
|
|
363
363
|
}
|
|
364
364
|
});
|
|
365
365
|
this.buildAllMethodBody();
|
|
366
|
-
this.
|
|
366
|
+
this.updateOrAddDefaultConstructors();
|
|
367
367
|
}
|
|
368
368
|
getFilesOrderByDependency() {
|
|
369
369
|
for (const projectFile of this.projectFiles) {
|
|
370
370
|
this.getDependencyFilesDeeply(projectFile);
|
|
371
371
|
}
|
|
372
372
|
this.buildAllMethodBody();
|
|
373
|
-
this.
|
|
373
|
+
this.updateOrAddDefaultConstructors();
|
|
374
374
|
}
|
|
375
375
|
getDependencyFilesDeeply(projectFile) {
|
|
376
376
|
if (!this.options.supportFileExts.includes(path_1.default.extname(projectFile))) {
|
|
377
377
|
return;
|
|
378
378
|
}
|
|
379
379
|
const fileSignature = new ArkSignature_1.FileSignature(this.getProjectName(), path_1.default.relative(this.getRealProjectDir(), projectFile));
|
|
380
|
-
if (this.filesMap.has(fileSignature.toMapKey()) || this.isRepeatBuildFile(projectFile)) {
|
|
380
|
+
if (this.filesMap.has(fileSignature.toMapKey()) || this.isRepeatBuildFile(projectFile) || this.unhandledFilePaths.has(projectFile)) {
|
|
381
381
|
return;
|
|
382
382
|
}
|
|
383
|
+
// Here use unhandledFilePaths to temporarily store current file until add it to fileMaps to avoid recursively import issue.
|
|
384
|
+
this.unhandledFilePaths.add(projectFile);
|
|
383
385
|
try {
|
|
384
386
|
const arkFile = new ArkFile_1.ArkFile(FileUtils_1.FileUtils.getFileLanguage(projectFile, this.fileLanguages));
|
|
385
387
|
arkFile.setScene(this);
|
|
@@ -390,16 +392,17 @@ class Scene {
|
|
|
390
392
|
break;
|
|
391
393
|
}
|
|
392
394
|
}
|
|
393
|
-
this.filesMap.set(arkFile.getFileSignature().toMapKey(), arkFile);
|
|
394
395
|
const importInfos = arkFile.getImportInfos();
|
|
395
396
|
const repeatFroms = [];
|
|
396
397
|
this.findDependencyFiles(importInfos, arkFile, repeatFroms);
|
|
397
398
|
const exportInfos = arkFile.getExportInfos();
|
|
398
399
|
this.findDependencyFiles(exportInfos, arkFile, repeatFroms);
|
|
400
|
+
// add currently file to files map after adding all its dependencies, and remove it from unhandledFilePaths
|
|
401
|
+
this.setFile(arkFile);
|
|
402
|
+
this.unhandledFilePaths.delete(projectFile);
|
|
399
403
|
}
|
|
400
404
|
catch (error) {
|
|
401
405
|
logger.error('Error parsing file:', projectFile, error);
|
|
402
|
-
this.unhandledFilePaths.push(projectFile);
|
|
403
406
|
return;
|
|
404
407
|
}
|
|
405
408
|
}
|
|
@@ -437,28 +440,31 @@ class Scene {
|
|
|
437
440
|
}
|
|
438
441
|
}
|
|
439
442
|
parseFrom(from, arkFile) {
|
|
440
|
-
if (/^@[a-z|\-]+?\/?/.test(from)) {
|
|
443
|
+
if (/^@[a-z|\-]+?\/?/.test(from) || /^[a-z][a-z0-9._-]*[a-z0-9]$/.test(from)) {
|
|
444
|
+
// TODO: if there are more than one modules with the same name e.g. @lib1, here may got the wrong dependency
|
|
445
|
+
// It is better to loop all oh pkg with priority rather than the map key order. But it should be very complicated.
|
|
446
|
+
// Currently it is ok because it's with low probability and order error only affects type accuracy but has no other impact.
|
|
441
447
|
for (const [ohPkgContentPath, ohPkgContent] of this.ohPkgContentMap) {
|
|
442
|
-
this.findDependenciesByOhPkg(ohPkgContentPath, ohPkgContent, from
|
|
448
|
+
this.findDependenciesByOhPkg(ohPkgContentPath, ohPkgContent, from);
|
|
443
449
|
}
|
|
444
450
|
}
|
|
445
451
|
else if (/^([^@]*\/)([^\/]*)$/.test(from) || /^[\.\./|\.\.]+$/.test(from)) {
|
|
446
452
|
this.findRelativeDependenciesByOhPkg(from, arkFile);
|
|
447
453
|
}
|
|
448
454
|
else if (/^[@a-zA-Z0-9]+(\/[a-zA-Z0-9]+)*$/.test(from)) {
|
|
449
|
-
this.findDependenciesByTsConfig(from
|
|
455
|
+
this.findDependenciesByTsConfig(from);
|
|
450
456
|
}
|
|
451
457
|
}
|
|
452
|
-
findDependenciesByTsConfig(from
|
|
458
|
+
findDependenciesByTsConfig(from) {
|
|
453
459
|
if (this.globalModule2PathMapping) {
|
|
454
460
|
const paths = this.globalModule2PathMapping;
|
|
455
|
-
Object.keys(paths).forEach(key => this.parseTsConfigParms(paths, key, from
|
|
461
|
+
Object.keys(paths).forEach(key => this.parseTsConfigParms(paths, key, from));
|
|
456
462
|
}
|
|
457
463
|
}
|
|
458
|
-
parseTsConfigParms(paths, key, from
|
|
464
|
+
parseTsConfigParms(paths, key, from) {
|
|
459
465
|
const module2pathMapping = paths[key];
|
|
460
466
|
if (key.includes(TSConst_1.ALL)) {
|
|
461
|
-
this.processFuzzyMapping(key, from, module2pathMapping
|
|
467
|
+
this.processFuzzyMapping(key, from, module2pathMapping);
|
|
462
468
|
}
|
|
463
469
|
else if (from.startsWith(key)) {
|
|
464
470
|
let tail = from.substring(key.length, from.length);
|
|
@@ -467,11 +473,11 @@ class Scene {
|
|
|
467
473
|
if (this.baseUrl) {
|
|
468
474
|
originPath = path_1.default.resolve(this.baseUrl, originPath);
|
|
469
475
|
}
|
|
470
|
-
this.findDependenciesByRule(originPath
|
|
476
|
+
this.findDependenciesByRule(originPath);
|
|
471
477
|
});
|
|
472
478
|
}
|
|
473
479
|
}
|
|
474
|
-
processFuzzyMapping(key, from, module2pathMapping
|
|
480
|
+
processFuzzyMapping(key, from, module2pathMapping) {
|
|
475
481
|
key = key.substring(0, key.indexOf(TSConst_1.ALL) - 1);
|
|
476
482
|
if (from.substring(0, key.indexOf(TSConst_1.ALL) - 1) === key) {
|
|
477
483
|
let tail = from.substring(key.indexOf(TSConst_1.ALL) - 1, from.length);
|
|
@@ -481,31 +487,36 @@ class Scene {
|
|
|
481
487
|
if (this.baseUrl) {
|
|
482
488
|
originPath = path_1.default.join(this.baseUrl, originPath);
|
|
483
489
|
}
|
|
484
|
-
this.findDependenciesByRule(originPath
|
|
490
|
+
this.findDependenciesByRule(originPath);
|
|
485
491
|
});
|
|
486
492
|
}
|
|
487
493
|
}
|
|
488
|
-
findDependenciesByRule(originPath
|
|
489
|
-
if (!this.findFilesByPathArray(originPath
|
|
490
|
-
!this.findFilesByExtNameArray(originPath, this.options.supportFileExts
|
|
494
|
+
findDependenciesByRule(originPath) {
|
|
495
|
+
if (!this.findFilesByPathArray(originPath) &&
|
|
496
|
+
!this.findFilesByExtNameArray(originPath, this.options.supportFileExts)) {
|
|
491
497
|
logger.trace(originPath + 'module mapperInfo is not found!');
|
|
492
498
|
}
|
|
493
499
|
}
|
|
494
|
-
findFilesByPathArray(originPath
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
500
|
+
findFilesByPathArray(originPath) {
|
|
501
|
+
if (!fs_1.default.existsSync(originPath)) {
|
|
502
|
+
return false;
|
|
503
|
+
}
|
|
504
|
+
const indexFileName = FileUtils_1.FileUtils.getIndexFileName(originPath);
|
|
505
|
+
if (!indexFileName) {
|
|
506
|
+
return false;
|
|
507
|
+
}
|
|
508
|
+
const curPath = path_1.default.join(originPath, indexFileName);
|
|
509
|
+
if (!this.isRepeatBuildFile(curPath)) {
|
|
510
|
+
this.addFileNode2DependencyGrap(curPath);
|
|
511
|
+
return true;
|
|
501
512
|
}
|
|
502
513
|
return false;
|
|
503
514
|
}
|
|
504
|
-
findFilesByExtNameArray(originPath, pathArray
|
|
515
|
+
findFilesByExtNameArray(originPath, pathArray) {
|
|
505
516
|
for (const pathInfo of pathArray) {
|
|
506
517
|
const curPath = originPath + pathInfo;
|
|
507
518
|
if (fs_1.default.existsSync(curPath) && !this.isRepeatBuildFile(curPath)) {
|
|
508
|
-
this.addFileNode2DependencyGrap(curPath
|
|
519
|
+
this.addFileNode2DependencyGrap(curPath);
|
|
509
520
|
return true;
|
|
510
521
|
}
|
|
511
522
|
}
|
|
@@ -525,12 +536,12 @@ class Scene {
|
|
|
525
536
|
let originPath = this.getOriginPath(from, arkFile);
|
|
526
537
|
if (fs_1.default.existsSync(path_1.default.join(originPath, EtsConst_1.OH_PACKAGE_JSON5))) {
|
|
527
538
|
for (const [ohPkgContentPath, ohPkgContent] of this.ohPkgContentMap) {
|
|
528
|
-
this.findDependenciesByOhPkg(ohPkgContentPath, ohPkgContent, from
|
|
539
|
+
this.findDependenciesByOhPkg(ohPkgContentPath, ohPkgContent, from);
|
|
529
540
|
}
|
|
530
541
|
}
|
|
531
|
-
this.findDependenciesByRule(originPath
|
|
542
|
+
this.findDependenciesByRule(originPath);
|
|
532
543
|
}
|
|
533
|
-
findDependenciesByOhPkg(ohPkgContentPath, ohPkgContentInfo, from
|
|
544
|
+
findDependenciesByOhPkg(ohPkgContentPath, ohPkgContentInfo, from) {
|
|
534
545
|
//module name @ohos/from
|
|
535
546
|
const ohPkgContent = ohPkgContentInfo;
|
|
536
547
|
//module main name is must be
|
|
@@ -539,22 +550,22 @@ class Scene {
|
|
|
539
550
|
if (ohPkgContent.main) {
|
|
540
551
|
originPath = path_1.default.join(ohPkgContentPath.toString().replace(EtsConst_1.OH_PACKAGE_JSON5, ''), ohPkgContent.main.toString());
|
|
541
552
|
if (ohPkgContent.dependencies) {
|
|
542
|
-
this.getDependenciesMapping(ohPkgContent.dependencies, ohPkgContentPath, from
|
|
553
|
+
this.getDependenciesMapping(ohPkgContent.dependencies, ohPkgContentPath, from);
|
|
543
554
|
}
|
|
544
555
|
else if (ohPkgContent.devDependencies) {
|
|
545
|
-
this.getDependenciesMapping(ohPkgContent.devDependencies, ohPkgContentPath, from
|
|
556
|
+
this.getDependenciesMapping(ohPkgContent.devDependencies, ohPkgContentPath, from);
|
|
546
557
|
}
|
|
547
558
|
else if (ohPkgContent.dynamicDependencies) {
|
|
548
559
|
// dynamicDependencies not support
|
|
549
560
|
}
|
|
550
|
-
this.addFileNode2DependencyGrap(originPath
|
|
561
|
+
this.addFileNode2DependencyGrap(originPath);
|
|
551
562
|
}
|
|
552
|
-
if (!this.findFilesByPathArray(originPath
|
|
563
|
+
if (!this.findFilesByPathArray(originPath)) {
|
|
553
564
|
logger.trace(originPath + 'module mapperInfo is not found!');
|
|
554
565
|
}
|
|
555
566
|
}
|
|
556
567
|
}
|
|
557
|
-
getDependenciesMapping(dependencies, ohPkgContentPath, from
|
|
568
|
+
getDependenciesMapping(dependencies, ohPkgContentPath, from) {
|
|
558
569
|
for (let [moduleName, modulePath] of Object.entries(dependencies)) {
|
|
559
570
|
logger.debug('dependencies:' + moduleName);
|
|
560
571
|
if (modulePath.startsWith('file:')) {
|
|
@@ -563,7 +574,7 @@ class Scene {
|
|
|
563
574
|
const innerOhpackagePath = path_1.default.join(ohPkgContentPath.replace(EtsConst_1.OH_PACKAGE_JSON5, ''), modulePath.toString(), EtsConst_1.OH_PACKAGE_JSON5);
|
|
564
575
|
if (!this.ohPkgContentMap.has(innerOhpackagePath)) {
|
|
565
576
|
const innerModuleOhPkgContent = (0, json5parser_1.fetchDependenciesFromFile)(innerOhpackagePath);
|
|
566
|
-
this.findDependenciesByOhPkg(innerOhpackagePath, innerModuleOhPkgContent, from
|
|
577
|
+
this.findDependenciesByOhPkg(innerOhpackagePath, innerModuleOhPkgContent, from);
|
|
567
578
|
}
|
|
568
579
|
}
|
|
569
580
|
}
|
|
@@ -571,16 +582,17 @@ class Scene {
|
|
|
571
582
|
const parentPath = /^\.{1,2}\//.test(from) ? path_1.default.dirname(arkFile.getFilePath()) : arkFile.getProjectDir();
|
|
572
583
|
return path_1.default.resolve(parentPath, from);
|
|
573
584
|
}
|
|
574
|
-
addFileNode2DependencyGrap(filePath
|
|
585
|
+
addFileNode2DependencyGrap(filePath) {
|
|
575
586
|
this.getDependencyFilesDeeply(filePath);
|
|
576
|
-
this.filesMap.set(arkFile.getFileSignature().toMapKey(), arkFile);
|
|
577
587
|
}
|
|
578
588
|
buildSdk(sdkName, sdkPath) {
|
|
579
589
|
var _a;
|
|
580
590
|
let allFiles;
|
|
581
591
|
if (sdkName === SdkUtils_1.SdkUtils.BUILT_IN_NAME) {
|
|
582
592
|
allFiles = SdkUtils_1.SdkUtils.fetchBuiltInFiles(sdkPath);
|
|
583
|
-
|
|
593
|
+
if (allFiles.length > 0) {
|
|
594
|
+
(_a = this.getOptions().sdkGlobalFolders) === null || _a === void 0 ? void 0 : _a.push(sdkPath);
|
|
595
|
+
}
|
|
584
596
|
}
|
|
585
597
|
else {
|
|
586
598
|
allFiles = (0, getAllFiles_1.getAllFiles)(sdkPath, this.options.supportFileExts, this.options.ignoreFileNames);
|
|
@@ -622,7 +634,7 @@ class Scene {
|
|
|
622
634
|
});
|
|
623
635
|
(0, ModelUtils_1.initModulePathMap)(this.ohPkgContentMap);
|
|
624
636
|
this.buildAllMethodBody();
|
|
625
|
-
this.
|
|
637
|
+
this.updateOrAddDefaultConstructors();
|
|
626
638
|
}
|
|
627
639
|
buildOhPkgContentMap() {
|
|
628
640
|
this.modulePath2NameMap.forEach((value, key) => {
|
|
@@ -734,7 +746,7 @@ class Scene {
|
|
|
734
746
|
* Returns the absolute file paths that cannot be handled currently.
|
|
735
747
|
*/
|
|
736
748
|
getUnhandledFilePaths() {
|
|
737
|
-
return this.unhandledFilePaths;
|
|
749
|
+
return Array.from(this.unhandledFilePaths);
|
|
738
750
|
}
|
|
739
751
|
/*
|
|
740
752
|
* Returns the absolute sdk file paths that cannot be handled currently.
|
|
@@ -1,12 +1,18 @@
|
|
|
1
|
-
import { ClassSignature, MethodSignature } from '../../core/model/ArkSignature';
|
|
1
|
+
import { ClassSignature, FieldSignature, MethodSignature } from '../../core/model/ArkSignature';
|
|
2
2
|
export declare function IsCollectionClass(classSignature: ClassSignature): boolean;
|
|
3
3
|
export declare enum BuiltApiType {
|
|
4
4
|
SetAdd = 0,
|
|
5
5
|
MapSet = 1,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
MapGet = 2,
|
|
7
|
+
ArrayPush = 3,
|
|
8
|
+
Foreach = 4,
|
|
9
|
+
FunctionCall = 5,
|
|
10
|
+
FunctionApply = 6,
|
|
11
|
+
FunctionBind = 7,
|
|
12
|
+
NotBuiltIn = 8
|
|
10
13
|
}
|
|
14
|
+
export declare const ARRAY_FIELD_SIGNATURE: FieldSignature;
|
|
15
|
+
export declare const SET_FIELD_SIGNATURE: FieldSignature;
|
|
16
|
+
export declare const MAP_FIELD_SIGNATURE: FieldSignature;
|
|
11
17
|
export declare function getBuiltInApiType(method: MethodSignature): BuiltApiType;
|
|
12
18
|
//# sourceMappingURL=PTAUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PTAUtils.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PTAUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PTAUtils.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PTAUtils.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAiB,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAE/G,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAKzE;AAED,oBAAY,YAAY;IACpB,MAAM,IAAA;IACN,MAAM,IAAA;IACN,MAAM,IAAA;IACN,SAAS,IAAA;IACT,OAAO,IAAA;IACP,YAAY,IAAA;IACZ,aAAa,IAAA;IACb,YAAY,IAAA;IACZ,UAAU,IAAA;CACb;AAED,eAAO,MAAM,qBAAqB,gBAIjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,gBAI/B,CAAC;AAEF,eAAO,MAAM,mBAAmB,gBAI/B,CAAC;AAsBF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,CAoBvE"}
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.getBuiltInApiType = exports.BuiltApiType = exports.IsCollectionClass = void 0;
|
|
17
|
+
exports.getBuiltInApiType = exports.MAP_FIELD_SIGNATURE = exports.SET_FIELD_SIGNATURE = exports.ARRAY_FIELD_SIGNATURE = exports.BuiltApiType = exports.IsCollectionClass = void 0;
|
|
18
|
+
const Type_1 = require("../../core/base/Type");
|
|
19
|
+
const ArkSignature_1 = require("../../core/model/ArkSignature");
|
|
18
20
|
function IsCollectionClass(classSignature) {
|
|
19
21
|
if (classSignature.toString().endsWith('lib.es2015.collection.d.ts: Set') || classSignature.toString().endsWith('lib.es2015.collection.d.ts: Map')) {
|
|
20
22
|
return true;
|
|
@@ -26,33 +28,49 @@ var BuiltApiType;
|
|
|
26
28
|
(function (BuiltApiType) {
|
|
27
29
|
BuiltApiType[BuiltApiType["SetAdd"] = 0] = "SetAdd";
|
|
28
30
|
BuiltApiType[BuiltApiType["MapSet"] = 1] = "MapSet";
|
|
29
|
-
BuiltApiType[BuiltApiType["
|
|
30
|
-
BuiltApiType[BuiltApiType["
|
|
31
|
-
BuiltApiType[BuiltApiType["
|
|
32
|
-
BuiltApiType[BuiltApiType["
|
|
31
|
+
BuiltApiType[BuiltApiType["MapGet"] = 2] = "MapGet";
|
|
32
|
+
BuiltApiType[BuiltApiType["ArrayPush"] = 3] = "ArrayPush";
|
|
33
|
+
BuiltApiType[BuiltApiType["Foreach"] = 4] = "Foreach";
|
|
34
|
+
BuiltApiType[BuiltApiType["FunctionCall"] = 5] = "FunctionCall";
|
|
35
|
+
BuiltApiType[BuiltApiType["FunctionApply"] = 6] = "FunctionApply";
|
|
36
|
+
BuiltApiType[BuiltApiType["FunctionBind"] = 7] = "FunctionBind";
|
|
37
|
+
BuiltApiType[BuiltApiType["NotBuiltIn"] = 8] = "NotBuiltIn";
|
|
33
38
|
})(BuiltApiType = exports.BuiltApiType || (exports.BuiltApiType = {}));
|
|
39
|
+
exports.ARRAY_FIELD_SIGNATURE = new ArkSignature_1.FieldSignature('field', new ArkSignature_1.ClassSignature('Array', new ArkSignature_1.FileSignature('container', 'lib.es5.d.ts')), new Type_1.UnclearReferenceType(''));
|
|
40
|
+
exports.SET_FIELD_SIGNATURE = new ArkSignature_1.FieldSignature('field', new ArkSignature_1.ClassSignature('Set', new ArkSignature_1.FileSignature('container', 'lib.es2015.collection.d.ts')), new Type_1.UnclearReferenceType(''));
|
|
41
|
+
exports.MAP_FIELD_SIGNATURE = new ArkSignature_1.FieldSignature('field', new ArkSignature_1.ClassSignature('Map', new ArkSignature_1.FileSignature('container', 'lib.es2015.collection.d.ts')), new Type_1.UnclearReferenceType(''));
|
|
42
|
+
const BUILTIN_API_PATTERNS = new Map([
|
|
43
|
+
// set
|
|
44
|
+
['lib.es2015.collection.d.ts: Set.add(T)', BuiltApiType.SetAdd],
|
|
45
|
+
['lib.es2015.collection.d.ts: Set.forEach(', BuiltApiType.Foreach],
|
|
46
|
+
// map
|
|
47
|
+
['lib.es2015.collection.d.ts: Map.set(K, V)', BuiltApiType.MapSet],
|
|
48
|
+
['lib.es2015.collection.d.ts: Map.get(K)', BuiltApiType.MapGet],
|
|
49
|
+
['lib.es2015.collection.d.ts: Map.forEach(', BuiltApiType.Foreach],
|
|
50
|
+
// array
|
|
51
|
+
['lib.es5.d.ts: Array.push(T[])', BuiltApiType.ArrayPush],
|
|
52
|
+
['lib.es5.d.ts: Array.forEach(', BuiltApiType.Foreach],
|
|
53
|
+
]);
|
|
54
|
+
const FUNCTION_METHOD_REGEX = /lib\.es5\.d\.ts: Function\.(call|apply|bind)\(/;
|
|
55
|
+
const FUNCTION_METHOD_MAP = {
|
|
56
|
+
'call': BuiltApiType.FunctionCall,
|
|
57
|
+
'apply': BuiltApiType.FunctionApply,
|
|
58
|
+
'bind': BuiltApiType.FunctionBind
|
|
59
|
+
};
|
|
34
60
|
function getBuiltInApiType(method) {
|
|
35
61
|
let methodSigStr = method.toString();
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
62
|
+
for (const [pattern, apiType] of BUILTIN_API_PATTERNS.entries()) {
|
|
63
|
+
const escapedPattern = pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
64
|
+
const regex = new RegExp(escapedPattern);
|
|
65
|
+
if (regex.test(methodSigStr)) {
|
|
66
|
+
return apiType;
|
|
67
|
+
}
|
|
42
68
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
case 'call':
|
|
49
|
-
return BuiltApiType.FunctionCall;
|
|
50
|
-
case 'apply':
|
|
51
|
-
return BuiltApiType.FunctionApply;
|
|
52
|
-
case 'bind':
|
|
53
|
-
return BuiltApiType.FunctionBind;
|
|
54
|
-
default:
|
|
55
|
-
}
|
|
69
|
+
const match = methodSigStr.match(FUNCTION_METHOD_REGEX);
|
|
70
|
+
if (match) {
|
|
71
|
+
const functionName = match[1];
|
|
72
|
+
if (functionName in FUNCTION_METHOD_MAP) {
|
|
73
|
+
return FUNCTION_METHOD_MAP[functionName];
|
|
56
74
|
}
|
|
57
75
|
}
|
|
58
76
|
return BuiltApiType.NotBuiltIn;
|
|
@@ -5,11 +5,13 @@ import { ArkAssignStmt, Stmt } from '../../core/base/Stmt';
|
|
|
5
5
|
import { AbstractExpr } from '../../core/base/Expr';
|
|
6
6
|
import { AbstractFieldRef, ArkArrayRef, ArkInstanceFieldRef, ArkParameterRef, ArkStaticFieldRef, ArkThisRef } from '../../core/base/Ref';
|
|
7
7
|
import { Local } from '../../core/base/Local';
|
|
8
|
+
import { Constant } from '../../core/base/Constant';
|
|
8
9
|
import { MethodSignature } from '../../core/model/ArkSignature';
|
|
9
10
|
import { ExportInfo } from '../../core/model/ArkExport';
|
|
10
11
|
import { BuiltApiType } from './PTAUtils';
|
|
11
12
|
import { IPtsCollection } from './PtsDS';
|
|
12
13
|
import { ContextID } from './context/Context';
|
|
14
|
+
import { StorageType } from './plugins/StoragePlugin';
|
|
13
15
|
export type PagNodeType = Value;
|
|
14
16
|
export declare enum PagEdgeKind {
|
|
15
17
|
Address = 0,
|
|
@@ -20,16 +22,6 @@ export declare enum PagEdgeKind {
|
|
|
20
22
|
Unknown = 5,
|
|
21
23
|
InterProceduralCopy = 6
|
|
22
24
|
}
|
|
23
|
-
export declare enum StorageType {
|
|
24
|
-
APP_STORAGE = 0,
|
|
25
|
-
LOCAL_STORAGE = 1,
|
|
26
|
-
Undefined = 2
|
|
27
|
-
}
|
|
28
|
-
export declare enum StorageLinkEdgeType {
|
|
29
|
-
Property2Local = 0,
|
|
30
|
-
Local2Property = 1,
|
|
31
|
-
TwoWay = 2
|
|
32
|
-
}
|
|
33
25
|
export declare class PagEdge extends BaseEdge {
|
|
34
26
|
private stmt;
|
|
35
27
|
constructor(n: PagNode, d: PagNode, k: PagEdgeKind, s?: Stmt);
|
|
@@ -155,6 +147,9 @@ export declare class PagArrayNode extends PagNode {
|
|
|
155
147
|
base: Value;
|
|
156
148
|
constructor(id: NodeID, cid: number | undefined, expr: ArkArrayRef, stmt?: Stmt);
|
|
157
149
|
}
|
|
150
|
+
export declare class PagConstantNode extends PagNode {
|
|
151
|
+
constructor(id: NodeID, cid: number | undefined, constant: Constant, stmt?: Stmt);
|
|
152
|
+
}
|
|
158
153
|
/**
|
|
159
154
|
* below is heapObj like Node
|
|
160
155
|
*/
|
|
@@ -215,7 +210,7 @@ export declare class Pag extends BaseExplicitGraph {
|
|
|
215
210
|
getCG(): CallGraph;
|
|
216
211
|
getOrClonePagNode(src: PagNode, basePt: NodeID): PagNode;
|
|
217
212
|
getOrClonePagFieldNode(src: PagInstanceFieldNode, basePt: NodeID): PagInstanceFieldNode | undefined;
|
|
218
|
-
getOrClonePagContainerFieldNode(basePt: NodeID,
|
|
213
|
+
getOrClonePagContainerFieldNode(basePt: NodeID, base: Local, className: string): PagInstanceFieldNode | undefined;
|
|
219
214
|
getOrClonePagFuncNode(basePt: NodeID): PagFuncNode | undefined;
|
|
220
215
|
addPagNode(cid: ContextID, value: PagNodeType, stmt?: Stmt, refresh?: boolean): PagNode;
|
|
221
216
|
private handleLocalNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pag.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/Pag.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAiB,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAA+B,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzI,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Pag.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/Pag.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
37
37
|
return result;
|
|
38
38
|
};
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.InterFuncPag = exports.FuncPag = exports.Pag = exports.PagGlobalThisNode = exports.PagFuncNode = exports.PagParamNode = exports.PagNewContainerExprNode = exports.PagNewExprNode = exports.PagArrayNode = exports.PagThisRefNode = exports.PagStaticFieldNode = exports.PagInstanceFieldNode = exports.PagLocalNode = exports.PagNode = exports.PagNodeKind = exports.ThisPagEdge = exports.WritePagEdge = exports.LoadPagEdge = exports.CopyPagEdge = exports.AddrPagEdge = exports.PagEdge = exports.
|
|
40
|
+
exports.InterFuncPag = exports.FuncPag = exports.Pag = exports.PagGlobalThisNode = exports.PagFuncNode = exports.PagParamNode = exports.PagNewContainerExprNode = exports.PagNewExprNode = exports.PagConstantNode = exports.PagArrayNode = exports.PagThisRefNode = exports.PagStaticFieldNode = exports.PagInstanceFieldNode = exports.PagLocalNode = exports.PagNode = exports.PagNodeKind = exports.ThisPagEdge = exports.WritePagEdge = exports.LoadPagEdge = exports.CopyPagEdge = exports.AddrPagEdge = exports.PagEdge = exports.PagEdgeKind = void 0;
|
|
41
41
|
const BaseExplicitGraph_1 = require("../../core/graph/BaseExplicitGraph");
|
|
42
42
|
const Stmt_1 = require("../../core/base/Stmt");
|
|
43
43
|
const Expr_1 = require("../../core/base/Expr");
|
|
@@ -47,7 +47,6 @@ const GraphPrinter_1 = require("../../save/GraphPrinter");
|
|
|
47
47
|
const PrinterBuilder_1 = require("../../save/PrinterBuilder");
|
|
48
48
|
const Constant_1 = require("../../core/base/Constant");
|
|
49
49
|
const Type_1 = require("../../core/base/Type");
|
|
50
|
-
const ArkSignature_1 = require("../../core/model/ArkSignature");
|
|
51
50
|
const logger_1 = __importStar(require("../../utils/logger"));
|
|
52
51
|
const TSConst_1 = require("../../core/common/TSConst");
|
|
53
52
|
const ArkExport_1 = require("../../core/model/ArkExport");
|
|
@@ -67,18 +66,6 @@ var PagEdgeKind;
|
|
|
67
66
|
PagEdgeKind[PagEdgeKind["Unknown"] = 5] = "Unknown";
|
|
68
67
|
PagEdgeKind[PagEdgeKind["InterProceduralCopy"] = 6] = "InterProceduralCopy";
|
|
69
68
|
})(PagEdgeKind = exports.PagEdgeKind || (exports.PagEdgeKind = {}));
|
|
70
|
-
var StorageType;
|
|
71
|
-
(function (StorageType) {
|
|
72
|
-
StorageType[StorageType["APP_STORAGE"] = 0] = "APP_STORAGE";
|
|
73
|
-
StorageType[StorageType["LOCAL_STORAGE"] = 1] = "LOCAL_STORAGE";
|
|
74
|
-
StorageType[StorageType["Undefined"] = 2] = "Undefined";
|
|
75
|
-
})(StorageType = exports.StorageType || (exports.StorageType = {}));
|
|
76
|
-
var StorageLinkEdgeType;
|
|
77
|
-
(function (StorageLinkEdgeType) {
|
|
78
|
-
StorageLinkEdgeType[StorageLinkEdgeType["Property2Local"] = 0] = "Property2Local";
|
|
79
|
-
StorageLinkEdgeType[StorageLinkEdgeType["Local2Property"] = 1] = "Local2Property";
|
|
80
|
-
StorageLinkEdgeType[StorageLinkEdgeType["TwoWay"] = 2] = "TwoWay";
|
|
81
|
-
})(StorageLinkEdgeType = exports.StorageLinkEdgeType || (exports.StorageLinkEdgeType = {}));
|
|
82
69
|
class PagEdge extends BaseExplicitGraph_1.BaseEdge {
|
|
83
70
|
constructor(n, d, k, s) {
|
|
84
71
|
super(n, d, k);
|
|
@@ -416,6 +403,12 @@ class PagArrayNode extends PagNode {
|
|
|
416
403
|
}
|
|
417
404
|
}
|
|
418
405
|
exports.PagArrayNode = PagArrayNode;
|
|
406
|
+
class PagConstantNode extends PagNode {
|
|
407
|
+
constructor(id, cid = undefined, constant, stmt) {
|
|
408
|
+
super(id, cid, constant, PagNodeKind.LocalVar, stmt);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
exports.PagConstantNode = PagConstantNode;
|
|
419
412
|
/**
|
|
420
413
|
* below is heapObj like Node
|
|
421
414
|
*/
|
|
@@ -601,24 +594,31 @@ class Pag extends BaseExplicitGraph_1.BaseExplicitGraph {
|
|
|
601
594
|
return undefined;
|
|
602
595
|
}
|
|
603
596
|
}
|
|
604
|
-
getOrClonePagContainerFieldNode(basePt,
|
|
597
|
+
getOrClonePagContainerFieldNode(basePt, base, className) {
|
|
605
598
|
let baseNode = this.getNode(basePt);
|
|
606
599
|
if (baseNode instanceof PagNewContainerExprNode) {
|
|
607
600
|
// check if Array Ref real node has been created or not, if not: create a real Array Ref node
|
|
608
601
|
let existedNode = baseNode.getElementNode();
|
|
609
602
|
let fieldNode;
|
|
603
|
+
let fieldRef;
|
|
610
604
|
if (existedNode) {
|
|
611
605
|
return this.getNode(existedNode);
|
|
612
606
|
}
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
607
|
+
switch (className) {
|
|
608
|
+
case 'Array':
|
|
609
|
+
fieldRef = new Ref_1.ArkInstanceFieldRef(base, PTAUtils_1.ARRAY_FIELD_SIGNATURE);
|
|
610
|
+
break;
|
|
611
|
+
case 'Set':
|
|
612
|
+
fieldRef = new Ref_1.ArkInstanceFieldRef(base, PTAUtils_1.SET_FIELD_SIGNATURE);
|
|
613
|
+
break;
|
|
614
|
+
case 'Map':
|
|
615
|
+
fieldRef = new Ref_1.ArkInstanceFieldRef(base, PTAUtils_1.MAP_FIELD_SIGNATURE);
|
|
616
|
+
break;
|
|
617
|
+
default:
|
|
618
|
+
logger.error(`Error clone array field node ${className}`);
|
|
619
|
+
return undefined;
|
|
621
620
|
}
|
|
621
|
+
fieldNode = this.addPagNode(0, fieldRef);
|
|
622
622
|
baseNode.addElementNode(fieldNode.getID());
|
|
623
623
|
fieldNode.setBasePt(basePt);
|
|
624
624
|
return fieldNode;
|
|
@@ -674,6 +674,9 @@ class Pag extends BaseExplicitGraph_1.BaseExplicitGraph {
|
|
|
674
674
|
else if (value instanceof Ref_1.ArkThisRef) {
|
|
675
675
|
pagNode = new PagThisRefNode(id, cid, value);
|
|
676
676
|
}
|
|
677
|
+
else if (value instanceof Constant_1.Constant) {
|
|
678
|
+
pagNode = new PagConstantNode(id, cid, value, stmt);
|
|
679
|
+
}
|
|
677
680
|
else {
|
|
678
681
|
throw new Error('unsupported Value type ' + value.getType().toString());
|
|
679
682
|
}
|