arkanalyzer 1.0.27 → 1.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/config/arkanalyzer.json +1 -0
  2. package/lib/Config.d.ts.map +1 -1
  3. package/lib/Config.js +9 -1
  4. package/lib/VFG/DVFG.d.ts +43 -0
  5. package/lib/VFG/DVFG.d.ts.map +1 -0
  6. package/lib/VFG/DVFG.js +109 -0
  7. package/lib/VFG/builder/DVFGBuilder.d.ts +17 -0
  8. package/lib/VFG/builder/DVFGBuilder.d.ts.map +1 -0
  9. package/lib/VFG/builder/DVFGBuilder.js +111 -0
  10. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
  11. package/lib/callgraph/algorithm/AbstractAnalysis.js +1 -0
  12. package/lib/callgraph/model/CallGraph.d.ts +5 -1
  13. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  14. package/lib/callgraph/model/CallGraph.js +35 -2
  15. package/lib/callgraph/pointerAnalysis/Pag.js +3 -3
  16. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +11 -3
  17. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  18. package/lib/callgraph/pointerAnalysis/PagBuilder.js +151 -62
  19. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +2 -0
  20. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  21. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +33 -7
  22. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +7 -2
  23. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -1
  24. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +10 -4
  25. package/lib/core/base/Expr.d.ts.map +1 -1
  26. package/lib/core/base/Expr.js +6 -4
  27. package/lib/core/base/Ref.d.ts +0 -1
  28. package/lib/core/base/Ref.d.ts.map +1 -1
  29. package/lib/core/base/Ref.js +0 -11
  30. package/lib/core/base/Type.d.ts.map +1 -1
  31. package/lib/core/common/IRInference.d.ts +3 -0
  32. package/lib/core/common/IRInference.d.ts.map +1 -1
  33. package/lib/core/common/IRInference.js +62 -23
  34. package/lib/core/common/SdkUtils.js +1 -1
  35. package/lib/core/common/TypeInference.d.ts +5 -3
  36. package/lib/core/common/TypeInference.d.ts.map +1 -1
  37. package/lib/core/common/TypeInference.js +93 -60
  38. package/lib/core/dataflow/ReachingDef.d.ts.map +1 -1
  39. package/lib/core/dataflow/ReachingDef.js +1 -0
  40. package/lib/core/graph/BaseImplicitGraph.d.ts +1 -0
  41. package/lib/core/graph/BaseImplicitGraph.d.ts.map +1 -1
  42. package/lib/core/graph/BaseImplicitGraph.js +6 -0
  43. package/lib/index.d.ts +2 -0
  44. package/lib/index.d.ts.map +1 -1
  45. package/lib/index.js +6 -2
  46. package/lib/utils/pathTransfer.d.ts +1 -0
  47. package/lib/utils/pathTransfer.d.ts.map +1 -1
  48. package/lib/utils/pathTransfer.js +10 -1
  49. package/package.json +2 -2
@@ -9,6 +9,7 @@
9
9
  "ignoreFileNames": [
10
10
  "oh_modules",
11
11
  "node_modules",
12
+ "build-tools",
12
13
  "hvigorfile.ts"
13
14
  ],
14
15
  "sdkGlobalFolders": [
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD,MAAM,WAAW,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE;YACJ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;SAC3B,CAAC;KACL,CAAC;CAEL;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAC9G,MAAM,WAAW,YAAY;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sBAAsB,CAAC,EAAC,OAAO,CAAA;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAAC;CACvC;AAID,qBAAa,WAAW;IACpB,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,sBAAsB,CAAc;IAE5C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAa;IAE5B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,WAAW,CAAsD;IAEzE,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,aAAa,CAAoC;IAEzD,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,CAAC,EAAE,YAAY;IAK3B,UAAU,IAAI,YAAY;IAIjC;;;;;;;OAOG;IACI,WAAW,CACd,iBAAiB,EAAE,MAAM,EACzB,sBAAsB,EAAE,MAAM,EAC9B,IAAI,EAAE,GAAG,EAAE,EACX,YAAY,CAAC,EAAE,MAAM,EAAE;IAU3B;;;;;;;;;;;;OAYG;IACI,mBAAmB,CAAC,sBAAsB,EAAE,MAAM;IAUlD,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,EACnF,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI;IAgBxE,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,sBAAsB;IAiBvB,aAAa,CAAC,cAAc,EAAE,MAAM;IAmCpC,oBAAoB;IAIpB,yBAAyB;IAIzB,eAAe;IAIf,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIzC,WAAW;IAIX,cAAc;IAId,aAAa;IAIb,UAAU;IAIjB,OAAO,CAAC,iBAAiB;CAY5B"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKhD,MAAM,WAAW,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE;YACJ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;SAC3B,CAAC;KACL,CAAC;CAEL;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAC9G,MAAM,WAAW,YAAY;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sBAAsB,CAAC,EAAC,OAAO,CAAA;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAAC;CACvC;AAID,qBAAa,WAAW;IACpB,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,sBAAsB,CAAc;IAE5C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAa;IAE5B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,WAAW,CAAsD;IAEzE,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,aAAa,CAAoC;IAEzD,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,CAAC,EAAE,YAAY;IAK3B,UAAU,IAAI,YAAY;IAIjC;;;;;;;OAOG;IACI,WAAW,CACd,iBAAiB,EAAE,MAAM,EACzB,sBAAsB,EAAE,MAAM,EAC9B,IAAI,EAAE,GAAG,EAAE,EACX,YAAY,CAAC,EAAE,MAAM,EAAE;IAU3B;;;;;;;;;;;;OAYG;IACI,mBAAmB,CAAC,sBAAsB,EAAE,MAAM;IAUlD,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,EACnF,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI;IAgBxE,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,sBAAsB;IAiBvB,aAAa,CAAC,cAAc,EAAE,MAAM;IAmCpC,oBAAoB;IAIpB,yBAAyB;IAIzB,eAAe;IAIf,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIzC,WAAW;IAIX,cAAc;IAId,aAAa;IAIb,UAAU;IAIjB,OAAO,CAAC,iBAAiB;CAmB5B"}
package/lib/Config.js CHANGED
@@ -45,6 +45,7 @@ const fs_1 = __importDefault(require("fs"));
45
45
  const path_1 = __importDefault(require("path"));
46
46
  const logger_1 = __importStar(require("./utils/logger"));
47
47
  const getAllFiles_1 = require("./utils/getAllFiles");
48
+ const pathTransfer_1 = require("./utils/pathTransfer");
48
49
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'Config');
49
50
  const CONFIG_FILENAME = 'arkanalyzer.json';
50
51
  const DEFAULT_CONFIG_FILE = path_1.default.join(__dirname, '../config', CONFIG_FILENAME);
@@ -209,13 +210,20 @@ class SceneConfig {
209
210
  }
210
211
  loadDefaultConfig(options) {
211
212
  let configFile = DEFAULT_CONFIG_FILE;
213
+ const modulePath = (0, pathTransfer_1.getArkAnalyzerModulePath)('arkanalyzer');
214
+ if (modulePath !== null) {
215
+ configFile = path_1.default.join(modulePath, 'config', CONFIG_FILENAME);
216
+ }
212
217
  if (!fs_1.default.existsSync(configFile)) {
213
218
  configFile = path_1.default.join(__dirname, 'config', CONFIG_FILENAME);
214
219
  }
220
+ logger.info(`try to parse config file ${configFile}`);
215
221
  try {
216
222
  this.options = Object.assign(Object.assign({}, this.options), JSON.parse(fs_1.default.readFileSync(configFile, 'utf-8')));
217
223
  }
218
- catch (error) { }
224
+ catch (error) {
225
+ logger.error(`Failed to parse config file with error: ${error}`);
226
+ }
219
227
  if (options) {
220
228
  this.options = Object.assign(Object.assign({}, this.options), options);
221
229
  }
@@ -0,0 +1,43 @@
1
+ import { BaseEdge, BaseExplicitGraph, BaseNode, NodeID } from '../core/graph/BaseExplicitGraph';
2
+ import { CallGraph } from '../callgraph/model/CallGraph';
3
+ import { Stmt } from '../core/base/Stmt';
4
+ /**
5
+ * Direct value flow graph
6
+ * Consist of stmt(node) and direct Def-Use edge
7
+ * Is basic of VFG. And VFG is building on DVFG
8
+ */
9
+ export declare class DVFG extends BaseExplicitGraph {
10
+ private cg;
11
+ private stmtToVFGMap;
12
+ constructor(cg: CallGraph);
13
+ getCG(): CallGraph;
14
+ getGraphName(): string;
15
+ getOrNewDVFGNode(stmt: Stmt): DVFGNode;
16
+ addDVFGNode(stmt: Stmt, kind: DVFGNodeKind): DVFGNode;
17
+ addDVFGEdge(src: DVFGNode, dst: DVFGNode): boolean;
18
+ dump(name: string): void;
19
+ }
20
+ export declare enum DVFGNodeKind {
21
+ assign = 0,
22
+ copy = 1,
23
+ write = 2,
24
+ load = 3,
25
+ addr = 4,
26
+ if = 5,
27
+ actualParm = 6,
28
+ formalParm = 7,
29
+ actualRet = 8,
30
+ formalRet = 9,
31
+ unary = 10,
32
+ binary = 11,
33
+ normal = 12
34
+ }
35
+ export declare class DVFGNode extends BaseNode {
36
+ private stmt;
37
+ constructor(i: NodeID, k: DVFGNodeKind, s: Stmt);
38
+ getDotLabel(): string;
39
+ getStmt(): Stmt;
40
+ }
41
+ export declare class DVFGEdge extends BaseEdge {
42
+ }
43
+ //# sourceMappingURL=DVFG.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DVFG.d.ts","sourceRoot":"","sources":["../../src/VFG/DVFG.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAiB,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAIxD;;;;GAIG;AACH,qBAAa,IAAK,SAAQ,iBAAiB;IACvC,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,YAAY,CAAoB;gBAC5B,EAAE,EAAE,SAAS;IAMlB,KAAK,IAAI,SAAS;IAIlB,YAAY,IAAI,MAAM;IAItB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ;IAiBtC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,GAAG,QAAQ;IASrD,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO;IAalD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAIlC;AAED,oBAAY,YAAY;IACpB,MAAM,IAAA;IAAE,IAAI,IAAA;IAAE,KAAK,IAAA;IAAE,IAAI,IAAA;IAAE,IAAI,IAAA;IAAE,EAAE,IAAA;IAAE,UAAU,IAAA;IAAE,UAAU,IAAA;IAAE,SAAS,IAAA;IACtE,SAAS,IAAA;IAAE,KAAK,KAAA;IAAE,MAAM,KAAA;IAAE,MAAM,KAAA;CACnC;AAED,qBAAa,QAAS,SAAQ,QAAQ;IAClC,OAAO,CAAC,IAAI,CAAO;gBAEP,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI;IAKxC,WAAW,IAAI,MAAM;IAMrB,OAAO,IAAI,IAAI;CAGzB;AAED,qBAAa,QAAS,SAAQ,QAAQ;CAAG"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DVFGEdge = exports.DVFGNode = exports.DVFGNodeKind = exports.DVFG = void 0;
4
+ /*
5
+ * Copyright (c) 2025 Huawei Device Co., Ltd.
6
+ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ const BaseExplicitGraph_1 = require("../core/graph/BaseExplicitGraph");
18
+ const Stmt_1 = require("../core/base/Stmt");
19
+ const GraphPrinter_1 = require("../save/GraphPrinter");
20
+ const PrinterBuilder_1 = require("../save/PrinterBuilder");
21
+ /**
22
+ * Direct value flow graph
23
+ * Consist of stmt(node) and direct Def-Use edge
24
+ * Is basic of VFG. And VFG is building on DVFG
25
+ */
26
+ class DVFG extends BaseExplicitGraph_1.BaseExplicitGraph {
27
+ constructor(cg) {
28
+ super();
29
+ this.cg = cg;
30
+ this.stmtToVFGMap = new Map();
31
+ }
32
+ getCG() {
33
+ return this.cg;
34
+ }
35
+ getGraphName() {
36
+ return 'Direct-VFG';
37
+ }
38
+ getOrNewDVFGNode(stmt) {
39
+ let node = this.stmtToVFGMap.get(stmt);
40
+ if (node) {
41
+ return this.getNode(node);
42
+ }
43
+ let kind = DVFGNodeKind.normal;
44
+ if (stmt instanceof Stmt_1.ArkAssignStmt) {
45
+ //TODO: split assign to copy, write, load
46
+ kind = DVFGNodeKind.assign;
47
+ }
48
+ else {
49
+ // TODO: handle other type of stmt
50
+ }
51
+ return this.addDVFGNode(stmt, kind);
52
+ }
53
+ addDVFGNode(stmt, kind) {
54
+ let id = this.nodeNum;
55
+ let dvfgNode = new DVFGNode(id, kind, stmt);
56
+ this.addNode(dvfgNode);
57
+ this.stmtToVFGMap.set(stmt, dvfgNode.getID());
58
+ return dvfgNode;
59
+ }
60
+ addDVFGEdge(src, dst) {
61
+ let kind = 0; //common kind
62
+ let edge = new DVFGEdge(src, dst, kind);
63
+ if (this.ifEdgeExisting(edge)) {
64
+ return false;
65
+ }
66
+ src.addOutgoingEdge(edge);
67
+ dst.addIncomingEdge(edge);
68
+ return true;
69
+ }
70
+ dump(name) {
71
+ let printer = new GraphPrinter_1.GraphPrinter(this);
72
+ PrinterBuilder_1.PrinterBuilder.dump(printer, name);
73
+ }
74
+ }
75
+ exports.DVFG = DVFG;
76
+ var DVFGNodeKind;
77
+ (function (DVFGNodeKind) {
78
+ DVFGNodeKind[DVFGNodeKind["assign"] = 0] = "assign";
79
+ DVFGNodeKind[DVFGNodeKind["copy"] = 1] = "copy";
80
+ DVFGNodeKind[DVFGNodeKind["write"] = 2] = "write";
81
+ DVFGNodeKind[DVFGNodeKind["load"] = 3] = "load";
82
+ DVFGNodeKind[DVFGNodeKind["addr"] = 4] = "addr";
83
+ DVFGNodeKind[DVFGNodeKind["if"] = 5] = "if";
84
+ DVFGNodeKind[DVFGNodeKind["actualParm"] = 6] = "actualParm";
85
+ DVFGNodeKind[DVFGNodeKind["formalParm"] = 7] = "formalParm";
86
+ DVFGNodeKind[DVFGNodeKind["actualRet"] = 8] = "actualRet";
87
+ DVFGNodeKind[DVFGNodeKind["formalRet"] = 9] = "formalRet";
88
+ DVFGNodeKind[DVFGNodeKind["unary"] = 10] = "unary";
89
+ DVFGNodeKind[DVFGNodeKind["binary"] = 11] = "binary";
90
+ DVFGNodeKind[DVFGNodeKind["normal"] = 12] = "normal";
91
+ })(DVFGNodeKind = exports.DVFGNodeKind || (exports.DVFGNodeKind = {}));
92
+ class DVFGNode extends BaseExplicitGraph_1.BaseNode {
93
+ constructor(i, k, s) {
94
+ super(i, k);
95
+ this.stmt = s;
96
+ }
97
+ getDotLabel() {
98
+ let label = 'ID: ' + this.getID() + '\n';
99
+ label = label + this.stmt.toString();
100
+ return label;
101
+ }
102
+ getStmt() {
103
+ return this.stmt;
104
+ }
105
+ }
106
+ exports.DVFGNode = DVFGNode;
107
+ class DVFGEdge extends BaseExplicitGraph_1.BaseEdge {
108
+ }
109
+ exports.DVFGEdge = DVFGEdge;
@@ -0,0 +1,17 @@
1
+ import { Stmt } from '../../core/base/Stmt';
2
+ import { ArkMethod } from '../../core/model/ArkMethod';
3
+ import { Scene } from '../../Scene';
4
+ import { DVFG } from '../DVFG';
5
+ export declare class DVFGBuilder {
6
+ private dvfg;
7
+ private scene;
8
+ constructor(dvfg: DVFG, s: Scene);
9
+ build(): void;
10
+ buildForSingleMethod(m: ArkMethod): void;
11
+ private getStmtUsedValues;
12
+ private getUsedValues;
13
+ getOrNewDVFGNode(stmt: Stmt): import("../DVFG").DVFGNode;
14
+ addDVFGNodes(): void;
15
+ addDVFGEdges(): void;
16
+ }
17
+ //# sourceMappingURL=DVFGBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DVFGBuilder.d.ts","sourceRoot":"","sources":["../../../src/VFG/builder/DVFGBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwE,IAAI,EAA6C,MAAM,sBAAsB,CAAC;AAK7J,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,qBAAa,WAAW;IACpB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,KAAK,CAAQ;gBAET,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK;IAKzB,KAAK;IAIL,oBAAoB,CAAC,CAAC,EAAE,SAAS;IAsCxC,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,aAAa;IAcd,gBAAgB,CAAC,IAAI,EAAE,IAAI;IAI3B,YAAY,IAAI,IAAI;IAEpB,YAAY,IAAI,IAAI;CAC9B"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2025 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.DVFGBuilder = void 0;
17
+ const Constant_1 = require("../../core/base/Constant");
18
+ const Expr_1 = require("../../core/base/Expr");
19
+ const Ref_1 = require("../../core/base/Ref");
20
+ const Stmt_1 = require("../../core/base/Stmt");
21
+ const ArkIRTransformer_1 = require("../../core/common/ArkIRTransformer");
22
+ const GenericDataFlow_1 = require("../../core/dataflow/GenericDataFlow");
23
+ const ReachingDef_1 = require("../../core/dataflow/ReachingDef");
24
+ class DVFGBuilder {
25
+ constructor(dvfg, s) {
26
+ this.dvfg = dvfg;
27
+ this.scene = s;
28
+ }
29
+ build() {
30
+ this.scene.getMethods().map(m => this.buildForSingleMethod(m));
31
+ }
32
+ buildForSingleMethod(m) {
33
+ let problem = new ReachingDef_1.ReachingDefProblem(m);
34
+ let solver = new GenericDataFlow_1.MFPDataFlowSolver();
35
+ let solution = solver.calculateMopSolutionForwards(problem);
36
+ let defMap = new Map();
37
+ m.getCfg().getStmts().forEach((s) => {
38
+ var _a;
39
+ let def = s.getDef();
40
+ if (def != null) {
41
+ if (def instanceof Ref_1.AbstractFieldRef) {
42
+ def = def.getFieldSignature();
43
+ }
44
+ let defStmts = (_a = defMap.get(def)) !== null && _a !== void 0 ? _a : new Set();
45
+ defStmts.add(s);
46
+ defMap.set(def, defStmts);
47
+ }
48
+ });
49
+ solution.in.forEach((defs, reach) => {
50
+ const reachStmt = problem.flowGraph.getNode(reach);
51
+ this.getStmtUsedValues(reachStmt).forEach(use => {
52
+ var _a;
53
+ let target = use;
54
+ if (target instanceof Ref_1.AbstractFieldRef) {
55
+ target = target.getFieldSignature();
56
+ }
57
+ (_a = defMap.get(target)) === null || _a === void 0 ? void 0 : _a.forEach((defStmt) => {
58
+ let defId = problem.flowGraph.getNodeID(defStmt);
59
+ if (defs.test(defId)) {
60
+ let srcNode = this.dvfg.getOrNewDVFGNode(defStmt);
61
+ let dstNode = this.dvfg.getOrNewDVFGNode(reachStmt);
62
+ this.dvfg.addDVFGEdge(srcNode, dstNode);
63
+ }
64
+ });
65
+ });
66
+ });
67
+ }
68
+ getStmtUsedValues(stmt) {
69
+ if (stmt instanceof Stmt_1.ArkAssignStmt) {
70
+ return this.getUsedValues(stmt.getRightOp());
71
+ }
72
+ else if (stmt instanceof Stmt_1.ArkInvokeStmt) {
73
+ return this.getUsedValues(stmt.getInvokeExpr());
74
+ }
75
+ else if (stmt instanceof Stmt_1.ArkIfStmt) {
76
+ return this.getUsedValues(stmt.getConditionExpr());
77
+ }
78
+ else if (stmt instanceof Stmt_1.ArkReturnStmt) {
79
+ return this.getUsedValues(stmt.getOp());
80
+ }
81
+ else if (stmt instanceof Stmt_1.ArkThrowStmt) {
82
+ return this.getUsedValues(stmt.getOp());
83
+ }
84
+ else if (stmt instanceof Stmt_1.ArkReturnVoidStmt || stmt instanceof Stmt_1.ArkAliasTypeDefineStmt || stmt instanceof ArkIRTransformer_1.DummyStmt) {
85
+ return [];
86
+ }
87
+ else {
88
+ throw new Error('unsupported stmt');
89
+ }
90
+ }
91
+ getUsedValues(val) {
92
+ if (val instanceof Expr_1.AbstractExpr) {
93
+ if (val instanceof Expr_1.AbstractInvokeExpr) {
94
+ return val.getArgs().flatMap((current) => { return this.getUsedValues(current); }, []);
95
+ }
96
+ else {
97
+ return val.getUses().flatMap((current) => { return this.getUsedValues(current); }, []);
98
+ }
99
+ }
100
+ if (val instanceof Constant_1.Constant) {
101
+ return [];
102
+ }
103
+ return [val];
104
+ }
105
+ getOrNewDVFGNode(stmt) {
106
+ return this.dvfg.getOrNewDVFGNode(stmt);
107
+ }
108
+ addDVFGNodes() { }
109
+ addDVFGEdges() { }
110
+ }
111
+ exports.DVFGBuilder = DVFGBuilder;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/algorithm/AbstractAnalysis.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAIrE,8BAAsB,gBAAgB;IAClC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,EAAE,EAAG,SAAS,CAAC;IACzB,SAAS,CAAC,SAAS,EAAG,gBAAgB,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IAClC,SAAS,CAAC,eAAe,EAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBAE5B,CAAC,EAAE,KAAK;IAIb,QAAQ,IAAI,KAAK;IAIjB,YAAY,IAAI,SAAS;IAIhC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,QAAQ,EAAE;IAClF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE;IAExD,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,GAAG,SAAS;IAOxE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE;IAgBjD,KAAK,CAAC,sBAAsB,EAAE,OAAO,GAAG,IAAI;IA8BnD,SAAS,CAAC,IAAI,IAAI,IAAI;IAOtB,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IAyBrD,SAAS,CAAC,uBAAuB,CAAC,UAAU,EAAE,kBAAkB,GAAG,eAAe,EAAE;IAapF,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,GAAG,IAAI;CAU5H"}
1
+ {"version":3,"file":"AbstractAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/algorithm/AbstractAnalysis.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAIrE,8BAAsB,gBAAgB;IAClC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,EAAE,EAAG,SAAS,CAAC;IACzB,SAAS,CAAC,SAAS,EAAG,gBAAgB,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IAClC,SAAS,CAAC,eAAe,EAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBAE5B,CAAC,EAAE,KAAK;IAIb,QAAQ,IAAI,KAAK;IAIjB,YAAY,IAAI,SAAS;IAIhC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,QAAQ,EAAE;IAClF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE;IAExD,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,GAAG,SAAS;IAOxE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE;IAgBjD,KAAK,CAAC,sBAAsB,EAAE,OAAO,GAAG,IAAI;IA8BnD,SAAS,CAAC,IAAI,IAAI,IAAI;IAOtB,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IA0BrD,SAAS,CAAC,uBAAuB,CAAC,UAAU,EAAE,kBAAkB,GAAG,eAAe,EAAE;IAapF,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,GAAG,IAAI;CAU5H"}
@@ -117,6 +117,7 @@ class AbstractAnalysis {
117
117
  this.resolveCall(cgNode.getID(), stmt).forEach((callSite) => {
118
118
  calleeMethods.push(callSite);
119
119
  this.cg.addStmtToCallSiteMap(stmt, callSite);
120
+ this.cg.addMethodToCallSiteMap(callSite.calleeFuncID, callSite);
120
121
  });
121
122
  }
122
123
  });
@@ -63,6 +63,7 @@ export declare class CallGraph extends BaseExplicitGraph {
63
63
  private stmtToDynCallSitemap;
64
64
  private methodToCGNodeMap;
65
65
  private callPairToEdgeMap;
66
+ private methodToCallSiteMap;
66
67
  private callSiteNum;
67
68
  private entries;
68
69
  private cgStat;
@@ -79,7 +80,10 @@ export declare class CallGraph extends BaseExplicitGraph {
79
80
  addDynamicCallEdge(callerID: NodeID, calleeID: NodeID, callStmt: Stmt): void;
80
81
  getDynCallsiteByStmt(stmt: Stmt): DynCallSite | undefined;
81
82
  addStmtToCallSiteMap(stmt: Stmt, cs: CallSite): boolean;
82
- getCallSiteByStmt(stmt: Stmt): CallSite | undefined;
83
+ getCallSiteByStmt(stmt: Stmt): CallSite[];
84
+ addMethodToCallSiteMap(funcID: FuncID, cs: CallSite): void;
85
+ getCallSitesByMethod(func: FuncID | MethodSignature): Set<CallSite>;
86
+ getInvokeStmtByMethod(func: FuncID | MethodSignature): Stmt[];
83
87
  getDynEdges(): Map<Method, Set<Method>>;
84
88
  getMethodByFuncID(id: FuncID): Method | null;
85
89
  getArkMethodByFuncID(id: FuncID): ArkMethod | null;
@@ -1 +1 @@
1
- {"version":3,"file":"CallGraph.d.ts","sourceRoot":"","sources":["../../../src/callgraph/model/CallGraph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CallGraph.d.ts","sourceRoot":"","sources":["../../../src/callgraph/model/CallGraph.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@
15
15
  */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.CallGraph = exports.CallGraphNode = exports.CallGraphEdge = exports.CSCallSite = exports.DynCallSite = exports.CallSite = exports.CallGraphNodeKind = void 0;
18
+ const ArkSignature_1 = require("../../core/model/ArkSignature");
18
19
  const GraphPrinter_1 = require("../../save/GraphPrinter");
19
20
  const PrinterBuilder_1 = require("../../save/PrinterBuilder");
20
21
  const BaseExplicitGraph_1 = require("../../core/graph/BaseExplicitGraph");
@@ -135,6 +136,7 @@ class CallGraph extends BaseExplicitGraph_1.BaseExplicitGraph {
135
136
  this.stmtToDynCallSitemap = new Map();
136
137
  this.methodToCGNodeMap = new Map();
137
138
  this.callPairToEdgeMap = new Map();
139
+ this.methodToCallSiteMap = new Map();
138
140
  this.callSiteNum = 0;
139
141
  this.scene = s;
140
142
  this.cgStat = new Statistics_1.CGStat();
@@ -251,14 +253,45 @@ class CallGraph extends BaseExplicitGraph_1.BaseExplicitGraph {
251
253
  return this.stmtToDynCallSitemap.get(stmt);
252
254
  }
253
255
  addStmtToCallSiteMap(stmt, cs) {
256
+ var _a;
254
257
  if (this.stmtToCallSitemap.has(stmt)) {
258
+ let callSites = (_a = this.stmtToCallSitemap.get(stmt)) !== null && _a !== void 0 ? _a : [];
259
+ this.stmtToCallSitemap.set(stmt, [...callSites, cs]);
255
260
  return false;
256
261
  }
257
- this.stmtToCallSitemap.set(stmt, cs);
262
+ this.stmtToCallSitemap.set(stmt, [cs]);
258
263
  return true;
259
264
  }
260
265
  getCallSiteByStmt(stmt) {
261
- return this.stmtToCallSitemap.get(stmt);
266
+ var _a;
267
+ return (_a = this.stmtToCallSitemap.get(stmt)) !== null && _a !== void 0 ? _a : [];
268
+ }
269
+ addMethodToCallSiteMap(funcID, cs) {
270
+ if (this.methodToCallSiteMap.has(funcID)) {
271
+ this.methodToCallSiteMap.get(funcID).add(cs);
272
+ }
273
+ else {
274
+ this.methodToCallSiteMap.set(funcID, new Set([cs]));
275
+ }
276
+ }
277
+ getCallSitesByMethod(func) {
278
+ var _a;
279
+ let funcID;
280
+ if (func instanceof ArkSignature_1.MethodSignature) {
281
+ funcID = this.getCallGraphNodeByMethod(func).getID();
282
+ }
283
+ else {
284
+ funcID = func;
285
+ }
286
+ return (_a = this.methodToCallSiteMap.get(funcID)) !== null && _a !== void 0 ? _a : new Set();
287
+ }
288
+ getInvokeStmtByMethod(func) {
289
+ let callSites = this.getCallSitesByMethod(func);
290
+ let invokeStmts = [];
291
+ callSites.forEach((cs) => {
292
+ invokeStmts.push(cs.callStmt);
293
+ });
294
+ return invokeStmts;
262
295
  }
263
296
  getDynEdges() {
264
297
  let callMap = new Map();
@@ -610,7 +610,7 @@ class Pag extends BaseExplicitGraph_1.BaseExplicitGraph {
610
610
  return undefined;
611
611
  }
612
612
  addPagNode(cid, value, stmt, refresh = true) {
613
- let id = this.nodeNum;
613
+ let id = this.nodeNum + 1;
614
614
  let pagNode;
615
615
  if (value instanceof Local_1.Local) {
616
616
  pagNode = this.handleLocalNode(id, cid, value, stmt);
@@ -738,13 +738,13 @@ class Pag extends BaseExplicitGraph_1.BaseExplicitGraph {
738
738
  * but point to node info
739
739
  */
740
740
  addPagThisRefNode(value) {
741
- let id = this.nodeNum;
741
+ let id = this.nodeNum + 1;
742
742
  let pagNode = new PagThisRefNode(id, value);
743
743
  this.addNode(pagNode);
744
744
  return pagNode;
745
745
  }
746
746
  addPagThisLocalNode(ptNode, value) {
747
- let id = this.nodeNum;
747
+ let id = this.nodeNum + 1;
748
748
  let pagNode = new PagLocalNode(id, ptNode, value);
749
749
  this.addNode(pagNode);
750
750
  return pagNode;
@@ -8,6 +8,7 @@ import { NodeID } from '../../core/graph/BaseExplicitGraph';
8
8
  import { ContextID } from './Context';
9
9
  import { FuncPag, InterFuncPag, Pag, PagNode, PagNodeType, StorageType } from './Pag';
10
10
  import { IPtsCollection } from './PtsDS';
11
+ import { PtaAnalysisScale } from './PointerAnalysisConfig';
11
12
  export declare class CSFuncID {
12
13
  cid: ContextID;
13
14
  funcID: FuncID;
@@ -16,6 +17,7 @@ export declare class CSFuncID {
16
17
  export declare class PagBuilder {
17
18
  private pag;
18
19
  private cg;
20
+ private scale;
19
21
  private funcPags;
20
22
  private interFuncPags?;
21
23
  private handledFunc;
@@ -29,7 +31,7 @@ export declare class PagBuilder {
29
31
  private cid2ThisRefMap;
30
32
  private cid2ThisLocalMap;
31
33
  private sdkMethodReturnValueMap;
32
- private sdkMethodParamValueMap;
34
+ private methodParamValueMap;
33
35
  private fakeSdkMethodParamDeclaringStmt;
34
36
  private funcHandledThisRound;
35
37
  private updatedNodesThisRound;
@@ -38,19 +40,24 @@ export declare class PagBuilder {
38
40
  private globalThisPagNode?;
39
41
  private storagePropertyMap;
40
42
  private externalScopeVariableMap;
41
- constructor(p: Pag, cg: CallGraph, s: Scene, kLimit: number);
43
+ constructor(p: Pag, cg: CallGraph, s: Scene, kLimit: number, scale: PtaAnalysisScale);
42
44
  private buildFuncPagAndAddToWorklist;
43
45
  private addToFuncHandledListThisRound;
44
46
  buildForEntries(funcIDs: FuncID[]): void;
45
47
  handleReachable(): boolean;
46
48
  build(): void;
47
49
  buildFuncPag(funcID: FuncID): boolean;
50
+ private buildInvokeExprInAssignStmt;
51
+ private addFuncPagCallSite;
52
+ private buildInvokeExprInInvokeStmt;
48
53
  /**
49
54
  * will not create real funcPag, only create param values
50
55
  */
51
56
  private buildSDKFuncPag;
57
+ private createDummyParamValue;
58
+ private createDummyParamPagNodes;
52
59
  buildPagFromFuncPag(funcID: FuncID, cid: ContextID): void;
53
- addEdgesFromFuncPag(funcPag: FuncPag, cid: ContextID): boolean;
60
+ addEdgesFromFuncPag(funcPag: FuncPag, cid: ContextID, funcID: FuncID): boolean;
54
61
  addCallsEdgesFromFuncPag(funcPag: FuncPag, cid: ContextID): boolean;
55
62
  /**
56
63
  * process Storage API
@@ -74,6 +81,7 @@ export declare class PagBuilder {
74
81
  handleUnprocessedCallSites(processedCallSites: Set<DynCallSite>): NodeID[];
75
82
  private addThisRefCallEdge;
76
83
  addStaticPagCallEdge(cs: CallSite, callerCid: ContextID, calleeCid?: ContextID): NodeID[];
84
+ addStaticPagCallReturnEdge(cs: CallSite, callerCid: ContextID, calleeCid: ContextID): NodeID[];
77
85
  addCallParamPagEdge(params: Value[], cs: CallSite, callerCid: ContextID, calleeCid: ContextID): NodeID[];
78
86
  private addSDKMethodPagCallEdge;
79
87
  private addSDKMethodReturnPagEdge;
@@ -1 +1 @@
1
- {"version":3,"file":"PagBuilder.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PagBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PagBuilder.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PagBuilder.ts"],"names":[],"mappings":"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"}