arkanalyzer 1.0.48 → 1.0.49

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.
@@ -34,6 +34,7 @@ export declare class PTAStat extends StatTraits {
34
34
  endStat(): void;
35
35
  getNow(): number;
36
36
  private getInferedStat;
37
+ private getNotInferredUnknownStat;
37
38
  private getUnhandledFuncStat;
38
39
  getStat(): string;
39
40
  printStat(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Statistics.d.ts","sourceRoot":"","sources":["../../../src/callgraph/common/Statistics.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAiB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAMrE,uBAAe,UAAU;IACrB,SAAS,EAAE,MAAM,CAAK;IACtB,SAAS,EAAE,MAAM,CAAK;IACtB,OAAO,EAAE,MAAM,CAAK;IAEb,OAAO,IAAI,MAAM;IAIjB,SAAS,IAAI,IAAI;CAG3B;AAED,qBAAa,OAAQ,SAAQ,UAAU;IACnC,GAAG,EAAE,eAAe,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAK;IAC7B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,iBAAiB,EAAE,MAAM,CAAK;IAC9B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,YAAY,EAAE,MAAM,CAAK;IACzB,WAAW,EAAE,MAAM,CAAK;IAExB,eAAe,EAAE,MAAM,CAAK;IAC5B,yBAAyB,EAAE,MAAM,CAAK;IACtC,oBAAoB,EAAE,MAAM,CAAK;IAGjC,sBAAsB,EAAE,MAAM,CAAK;IAEnC,uBAAuB,EAAE,MAAM,CAAK;IAEpC,wBAAwB,EAAE,MAAM,CAAK;IAErC,yBAAyB,EAAE,MAAM,CAAK;IACtC,gBAAgB,EAAE,MAAM,CAAK;IAE7B,SAAS,EAAE,MAAM,CAAK;IAEtB,aAAa,EAAE,GAAG,CAAC;IACnB,WAAW,EAAE,GAAG,CAAC;IACjB,OAAO,EAAE,MAAM,CAAK;IACpB,QAAQ,EAAE,MAAM,CAAK;gBAET,GAAG,EAAE,eAAe;IAKzB,SAAS,IAAI,IAAI;IAKjB,OAAO,IAAI,IAAI;IAUf,MAAM,IAAI,MAAM;IAIvB,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,oBAAoB;IAerB,OAAO,IAAI,MAAM;IAqBjB,SAAS,IAAI,IAAI;CAG3B;AAED,qBAAa,OAAQ,SAAQ,UAAU;IACnC,cAAc,EAAE,MAAM,CAAK;IAC3B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,YAAY,EAAE,MAAM,CAAK;IAElB,OAAO,IAAI,MAAM;IAUjB,SAAS,IAAI,IAAI;CAG3B;AAED,qBAAa,MAAO,SAAQ,UAAU;IAElC,YAAY,EAAE,MAAM,CAAK;IACzB,OAAO,EAAE,MAAM,CAAK;IACpB,UAAU,EAAE,MAAM,CAAK;IACvB,YAAY,EAAE,MAAM,CAAK;IACzB,cAAc,EAAE,MAAM,CAAK;IAC3B,QAAQ,EAAE,MAAM,CAAK;IAEd,SAAS,IAAI,IAAI;IAIjB,OAAO,IAAI,IAAI;IAKf,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAoB1C,OAAO,IAAI,MAAM;CAa3B"}
1
+ {"version":3,"file":"Statistics.d.ts","sourceRoot":"","sources":["../../../src/callgraph/common/Statistics.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAiB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAQrE,uBAAe,UAAU;IACrB,SAAS,EAAE,MAAM,CAAK;IACtB,SAAS,EAAE,MAAM,CAAK;IACtB,OAAO,EAAE,MAAM,CAAK;IAEb,OAAO,IAAI,MAAM;IAIjB,SAAS,IAAI,IAAI;CAG3B;AAED,qBAAa,OAAQ,SAAQ,UAAU;IACnC,GAAG,EAAE,eAAe,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAK;IAC7B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,iBAAiB,EAAE,MAAM,CAAK;IAC9B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,YAAY,EAAE,MAAM,CAAK;IACzB,WAAW,EAAE,MAAM,CAAK;IAExB,eAAe,EAAE,MAAM,CAAK;IAC5B,yBAAyB,EAAE,MAAM,CAAK;IACtC,oBAAoB,EAAE,MAAM,CAAK;IAGjC,sBAAsB,EAAE,MAAM,CAAK;IAEnC,uBAAuB,EAAE,MAAM,CAAK;IAEpC,wBAAwB,EAAE,MAAM,CAAK;IAErC,yBAAyB,EAAE,MAAM,CAAK;IACtC,gBAAgB,EAAE,MAAM,CAAK;IAE7B,SAAS,EAAE,MAAM,CAAK;IAEtB,aAAa,EAAE,GAAG,CAAC;IACnB,WAAW,EAAE,GAAG,CAAC;IACjB,OAAO,EAAE,MAAM,CAAK;IACpB,QAAQ,EAAE,MAAM,CAAK;gBAET,GAAG,EAAE,eAAe;IAKzB,SAAS,IAAI,IAAI;IAKjB,OAAO,IAAI,IAAI;IAUf,MAAM,IAAI,MAAM;IAIvB,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,yBAAyB;IA4BjC,OAAO,CAAC,oBAAoB;IAerB,OAAO,IAAI,MAAM;IAqBjB,SAAS,IAAI,IAAI;CAG3B;AAED,qBAAa,OAAQ,SAAQ,UAAU;IACnC,cAAc,EAAE,MAAM,CAAK;IAC3B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,YAAY,EAAE,MAAM,CAAK;IAElB,OAAO,IAAI,MAAM;IAUjB,SAAS,IAAI,IAAI;CAG3B;AAED,qBAAa,MAAO,SAAQ,UAAU;IAElC,YAAY,EAAE,MAAM,CAAK;IACzB,OAAO,EAAE,MAAM,CAAK;IACpB,UAAU,EAAE,MAAM,CAAK;IACvB,YAAY,EAAE,MAAM,CAAK;IACzB,cAAc,EAAE,MAAM,CAAK;IAC3B,QAAQ,EAAE,MAAM,CAAK;IAEd,SAAS,IAAI,IAAI;IAIjB,OAAO,IAAI,IAAI;IAKf,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAoB1C,OAAO,IAAI,MAAM;CAa3B"}
@@ -42,6 +42,8 @@ const Stmt_1 = require("../../core/base/Stmt");
42
42
  const Type_1 = require("../../core/base/Type");
43
43
  const CallGraph_1 = require("../model/CallGraph");
44
44
  const logger_1 = __importStar(require("../../utils/logger"));
45
+ const Local_1 = require("../../core/base/Local");
46
+ const Ref_1 = require("../../core/base/Ref");
45
47
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'PTA');
46
48
  const LABEL_WIDTH = 55;
47
49
  class StatTraits {
@@ -101,6 +103,40 @@ class PTAStat extends StatTraits {
101
103
  return new Date().getTime();
102
104
  }
103
105
  getInferedStat() {
106
+ let dm = this.pta.getTypeDiffMap();
107
+ for (let [v] of dm) {
108
+ if (v instanceof Local_1.Local) {
109
+ if (v.getName() === 'this') {
110
+ continue;
111
+ }
112
+ let s = v.getDeclaringStmt();
113
+ if (s instanceof Stmt_1.ArkAssignStmt &&
114
+ s.getLeftOp() instanceof Local_1.Local &&
115
+ s.getLeftOp().getName() === 'this' &&
116
+ s.getRightOp() instanceof Ref_1.ArkThisRef) {
117
+ continue;
118
+ }
119
+ if (v.getType() instanceof Type_1.UnknownType) {
120
+ this.numInferedUnknownValue++;
121
+ }
122
+ else {
123
+ this.numInferedDiffTypeValue++;
124
+ }
125
+ }
126
+ else {
127
+ if (v.getType() instanceof Type_1.UnknownType) {
128
+ this.numInferedUnknownValue++;
129
+ }
130
+ else {
131
+ this.numInferedDiffTypeValue++;
132
+ }
133
+ }
134
+ }
135
+ this.getNotInferredUnknownStat();
136
+ }
137
+ getNotInferredUnknownStat() {
138
+ let inferred = new Set(this.pta.getTypeDiffMap().keys());
139
+ let visited = new Set();
104
140
  let stmtStat = (s) => {
105
141
  if (!(s instanceof Stmt_1.ArkAssignStmt)) {
106
142
  return;
@@ -110,23 +146,11 @@ class PTAStat extends StatTraits {
110
146
  return;
111
147
  }
112
148
  visited.add(lop);
113
- if (inferred.includes(lop)) {
114
- if (lop.getType() instanceof Type_1.UnknownType) {
115
- this.numInferedUnknownValue++;
116
- }
117
- else {
118
- this.numInferedDiffTypeValue++;
119
- }
120
- }
121
- else {
122
- if (lop.getType() instanceof Type_1.UnknownType) {
123
- this.numNotInferedUnknownValue++;
124
- }
149
+ if (!inferred.has(lop) && lop.getType() instanceof Type_1.UnknownType) {
150
+ this.numNotInferedUnknownValue++;
125
151
  }
126
152
  this.totalValuesInVisitedFunc++;
127
153
  };
128
- let inferred = Array.from(this.pta.getTypeDiffMap().keys());
129
- let visited = new Set();
130
154
  let cg = this.pta.getCallGraph();
131
155
  this.pta.getHandledFuncs().forEach(funcID => {
132
156
  var _a;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "arkanalyzer",
3
- "version": "1.0.48",
4
- "commit_id": "95f81fb1",
3
+ "version": "1.0.49",
4
+ "commit_id": "4ee0dc84",
5
5
  "files": [
6
6
  "docs",
7
7
  "lib",