arkanalyzer 1.0.20 → 1.0.21
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/Config.d.ts +70 -70
- package/lib/Config.js +198 -198
- package/lib/Scene.d.ts +316 -316
- package/lib/Scene.js +1316 -1316
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +28 -28
- package/lib/callgraph/algorithm/AbstractAnalysis.js +144 -144
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts +10 -10
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +69 -69
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts +15 -15
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +146 -146
- package/lib/callgraph/common/Statistics.d.ts +57 -57
- package/lib/callgraph/common/Statistics.js +228 -228
- package/lib/callgraph/model/CallGraph.d.ts +96 -96
- package/lib/callgraph/model/CallGraph.js +354 -354
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +15 -15
- package/lib/callgraph/model/builder/CallGraphBuilder.js +106 -106
- package/lib/callgraph/pointerAnalysis/Context.d.ts +37 -37
- package/lib/callgraph/pointerAnalysis/Context.js +155 -155
- package/lib/callgraph/pointerAnalysis/DummyCallCreator.d.ts +22 -22
- package/lib/callgraph/pointerAnalysis/DummyCallCreator.js +104 -104
- package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts +5 -5
- package/lib/callgraph/pointerAnalysis/PTAUtils.js +46 -46
- package/lib/callgraph/pointerAnalysis/Pag.d.ts +261 -261
- package/lib/callgraph/pointerAnalysis/Pag.js +930 -930
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +157 -157
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +1399 -1399
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +72 -72
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +573 -573
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +15 -15
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +81 -81
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts +80 -80
- package/lib/callgraph/pointerAnalysis/PtsDS.js +308 -308
- package/lib/core/base/Constant.d.ts +48 -48
- package/lib/core/base/Constant.js +103 -103
- package/lib/core/base/Decorator.d.ts +15 -15
- package/lib/core/base/Decorator.js +46 -46
- package/lib/core/base/DefUseChain.d.ts +8 -8
- package/lib/core/base/DefUseChain.js +25 -25
- package/lib/core/base/Expr.d.ts +340 -340
- package/lib/core/base/Expr.js +917 -917
- package/lib/core/base/Local.d.ts +104 -104
- package/lib/core/base/Local.js +176 -176
- package/lib/core/base/Position.d.ts +30 -30
- package/lib/core/base/Position.js +147 -147
- package/lib/core/base/Ref.d.ts +173 -173
- package/lib/core/base/Ref.js +374 -374
- package/lib/core/base/Stmt.d.ts +237 -237
- package/lib/core/base/Stmt.js +525 -525
- package/lib/core/base/Trap.d.ts +8 -8
- package/lib/core/base/Trap.js +30 -30
- package/lib/core/base/Type.d.ts +308 -308
- package/lib/core/base/Type.js +639 -639
- package/lib/core/base/TypeExpr.d.ts +71 -71
- package/lib/core/base/TypeExpr.js +155 -155
- package/lib/core/base/Value.d.ts +32 -32
- package/lib/core/base/Value.js +16 -16
- package/lib/core/common/ArkError.d.ts +14 -14
- package/lib/core/common/ArkError.js +28 -28
- package/lib/core/common/ArkIRTransformer.d.ts +67 -67
- package/lib/core/common/ArkIRTransformer.js +690 -690
- package/lib/core/common/ArkValueTransformer.d.ts +89 -89
- package/lib/core/common/ArkValueTransformer.js +1478 -1478
- package/lib/core/common/Builtin.d.ts +36 -36
- package/lib/core/common/Builtin.js +81 -81
- package/lib/core/common/Const.d.ts +21 -21
- package/lib/core/common/Const.js +43 -43
- package/lib/core/common/DummyMainCreater.d.ts +46 -46
- package/lib/core/common/DummyMainCreater.js +319 -319
- package/lib/core/common/EtsConst.d.ts +73 -73
- package/lib/core/common/EtsConst.js +1021 -1021
- package/lib/core/common/ExprUseReplacer.d.ts +21 -21
- package/lib/core/common/ExprUseReplacer.js +124 -124
- package/lib/core/common/IRInference.d.ts +36 -36
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +651 -648
- package/lib/core/common/IRUtils.d.ts +18 -18
- package/lib/core/common/IRUtils.js +141 -141
- package/lib/core/common/ModelUtils.d.ts +70 -70
- package/lib/core/common/ModelUtils.js +712 -712
- package/lib/core/common/RefUseReplacer.d.ts +13 -13
- package/lib/core/common/RefUseReplacer.js +52 -52
- package/lib/core/common/SdkUtils.d.ts +8 -8
- package/lib/core/common/SdkUtils.js +105 -105
- package/lib/core/common/StmtDefReplacer.d.ts +12 -12
- package/lib/core/common/StmtDefReplacer.js +41 -41
- package/lib/core/common/StmtUseReplacer.d.ts +16 -16
- package/lib/core/common/StmtUseReplacer.js +108 -108
- package/lib/core/common/TSConst.d.ts +18 -18
- package/lib/core/common/TSConst.js +36 -36
- package/lib/core/common/TypeInference.d.ts +102 -102
- package/lib/core/common/TypeInference.js +748 -748
- package/lib/core/common/ValueUtil.d.ts +12 -12
- package/lib/core/common/ValueUtil.js +54 -54
- package/lib/core/common/VisibleValue.d.ts +36 -36
- package/lib/core/common/VisibleValue.js +212 -212
- package/lib/core/dataflow/DataflowProblem.d.ts +20 -20
- package/lib/core/dataflow/DataflowProblem.js +20 -20
- package/lib/core/dataflow/DataflowResult.d.ts +7 -7
- package/lib/core/dataflow/DataflowResult.js +26 -26
- package/lib/core/dataflow/DataflowSolver.d.ts +43 -43
- package/lib/core/dataflow/DataflowSolver.js +307 -307
- package/lib/core/dataflow/Edge.d.ts +11 -11
- package/lib/core/dataflow/Edge.js +31 -31
- package/lib/core/dataflow/Fact.d.ts +6 -6
- package/lib/core/dataflow/Fact.js +24 -24
- package/lib/core/dataflow/GenericDataFlow.d.ts +142 -142
- package/lib/core/dataflow/GenericDataFlow.js +109 -109
- package/lib/core/dataflow/ReachingDef.d.ts +62 -62
- package/lib/core/dataflow/ReachingDef.js +168 -168
- package/lib/core/dataflow/UndefinedVariable.d.ts +45 -45
- package/lib/core/dataflow/UndefinedVariable.js +288 -288
- package/lib/core/dataflow/Util.d.ts +9 -9
- package/lib/core/dataflow/Util.js +64 -64
- package/lib/core/graph/BaseExplicitGraph.d.ts +58 -58
- package/lib/core/graph/BaseExplicitGraph.js +157 -157
- package/lib/core/graph/BaseImplicitGraph.d.ts +77 -77
- package/lib/core/graph/BaseImplicitGraph.js +78 -78
- package/lib/core/graph/BasicBlock.d.ts +104 -104
- package/lib/core/graph/BasicBlock.js +280 -280
- package/lib/core/graph/Cfg.d.ts +59 -59
- package/lib/core/graph/Cfg.js +282 -282
- package/lib/core/graph/DependsGraph.d.ts +35 -35
- package/lib/core/graph/DependsGraph.js +87 -87
- package/lib/core/graph/DominanceFinder.d.ts +15 -15
- package/lib/core/graph/DominanceFinder.js +121 -121
- package/lib/core/graph/DominanceTree.d.ts +12 -12
- package/lib/core/graph/DominanceTree.js +70 -70
- package/lib/core/graph/GraphTraits.d.ts +7 -7
- package/lib/core/graph/GraphTraits.js +16 -16
- package/lib/core/graph/Scc.d.ts +61 -61
- package/lib/core/graph/Scc.js +222 -222
- package/lib/core/graph/ViewTree.d.ts +114 -114
- package/lib/core/graph/ViewTree.js +16 -16
- package/lib/core/graph/builder/CfgBuilder.d.ts +176 -176
- package/lib/core/graph/builder/CfgBuilder.js +1139 -1139
- package/lib/core/graph/builder/ConditionBuilder.d.ts +15 -15
- package/lib/core/graph/builder/ConditionBuilder.js +252 -252
- package/lib/core/graph/builder/LoopBuilder.d.ts +20 -20
- package/lib/core/graph/builder/LoopBuilder.js +251 -251
- package/lib/core/graph/builder/SwitchBuilder.d.ts +11 -11
- package/lib/core/graph/builder/SwitchBuilder.js +152 -152
- package/lib/core/graph/builder/TrapBuilder.d.ts +16 -16
- package/lib/core/graph/builder/TrapBuilder.js +272 -272
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts +203 -203
- package/lib/core/graph/builder/ViewTreeBuilder.js +1055 -1055
- package/lib/core/model/ArkBaseModel.d.ts +59 -59
- package/lib/core/model/ArkBaseModel.js +274 -274
- package/lib/core/model/ArkBody.d.ts +24 -24
- package/lib/core/model/ArkBody.js +65 -65
- package/lib/core/model/ArkClass.d.ts +206 -206
- package/lib/core/model/ArkClass.js +439 -439
- package/lib/core/model/ArkExport.d.ts +72 -72
- package/lib/core/model/ArkExport.js +147 -147
- package/lib/core/model/ArkField.d.ts +62 -62
- package/lib/core/model/ArkField.js +113 -113
- package/lib/core/model/ArkFile.d.ts +131 -131
- package/lib/core/model/ArkFile.js +267 -267
- package/lib/core/model/ArkImport.d.ts +44 -44
- package/lib/core/model/ArkImport.js +108 -108
- package/lib/core/model/ArkMetadata.d.ts +31 -31
- package/lib/core/model/ArkMetadata.js +55 -55
- package/lib/core/model/ArkMethod.d.ts +261 -261
- package/lib/core/model/ArkMethod.js +592 -592
- package/lib/core/model/ArkNamespace.d.ts +66 -66
- package/lib/core/model/ArkNamespace.js +209 -209
- package/lib/core/model/ArkSignature.d.ts +162 -162
- package/lib/core/model/ArkSignature.js +379 -379
- package/lib/core/model/builder/ArkClassBuilder.d.ts +12 -12
- package/lib/core/model/builder/ArkClassBuilder.js +454 -454
- package/lib/core/model/builder/ArkExportBuilder.d.ts +24 -24
- package/lib/core/model/builder/ArkExportBuilder.js +210 -210
- package/lib/core/model/builder/ArkFieldBuilder.d.ts +8 -8
- package/lib/core/model/builder/ArkFieldBuilder.js +193 -193
- package/lib/core/model/builder/ArkFileBuilder.d.ts +9 -9
- package/lib/core/model/builder/ArkFileBuilder.js +165 -165
- package/lib/core/model/builder/ArkImportBuilder.d.ts +4 -4
- package/lib/core/model/builder/ArkImportBuilder.js +128 -128
- package/lib/core/model/builder/ArkMethodBuilder.d.ts +63 -63
- package/lib/core/model/builder/ArkMethodBuilder.js +486 -486
- package/lib/core/model/builder/ArkNamespaceBuilder.d.ts +5 -5
- package/lib/core/model/builder/ArkNamespaceBuilder.js +205 -205
- package/lib/core/model/builder/ArkSignatureBuilder.d.ts +8 -8
- package/lib/core/model/builder/ArkSignatureBuilder.js +40 -40
- package/lib/core/model/builder/BodyBuilder.d.ts +55 -30
- package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/BodyBuilder.js +542 -371
- package/lib/core/model/builder/builderUtils.d.ts +18 -18
- package/lib/core/model/builder/builderUtils.js +558 -558
- package/lib/index.d.ts +82 -80
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +201 -196
- package/lib/save/ArkStream.d.ts +23 -23
- package/lib/save/ArkStream.js +83 -83
- package/lib/save/DotPrinter.d.ts +43 -43
- package/lib/save/DotPrinter.js +170 -170
- package/lib/save/GraphPrinter.d.ts +16 -16
- package/lib/save/GraphPrinter.js +134 -134
- package/lib/save/JsonPrinter.d.ts +30 -30
- package/lib/save/JsonPrinter.js +580 -580
- package/lib/save/Printer.d.ts +12 -12
- package/lib/save/Printer.js +27 -27
- package/lib/save/PrinterBuilder.d.ts +53 -53
- package/lib/save/PrinterBuilder.js +145 -145
- package/lib/save/ViewTreePrinter.d.ts +14 -14
- package/lib/save/ViewTreePrinter.js +123 -123
- package/lib/save/arkir/ArkIRClassPrinter.d.ts +13 -13
- package/lib/save/arkir/ArkIRClassPrinter.js +92 -92
- package/lib/save/arkir/ArkIRFieldPrinter.d.ts +11 -11
- package/lib/save/arkir/ArkIRFieldPrinter.js +64 -64
- package/lib/save/arkir/ArkIRFilePrinter.d.ts +12 -12
- package/lib/save/arkir/ArkIRFilePrinter.js +54 -54
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts +16 -16
- package/lib/save/arkir/ArkIRMethodPrinter.js +159 -159
- package/lib/save/arkir/ArkIRNamespacePrinter.d.ts +11 -11
- package/lib/save/arkir/ArkIRNamespacePrinter.js +66 -66
- package/lib/save/base/BasePrinter.d.ts +23 -23
- package/lib/save/base/BasePrinter.js +70 -70
- package/lib/save/base/ExportPrinter.d.ts +8 -8
- package/lib/save/base/ExportPrinter.js +67 -67
- package/lib/save/base/ImportPrinter.d.ts +9 -9
- package/lib/save/base/ImportPrinter.js +92 -92
- package/lib/save/base/PrinterUtils.d.ts +24 -24
- package/lib/save/base/PrinterUtils.js +208 -208
- package/lib/save/serializeArkIR.d.ts +8 -8
- package/lib/save/serializeArkIR.js +294 -294
- package/lib/save/source/SourceBase.d.ts +22 -22
- package/lib/save/source/SourceBase.js +64 -64
- package/lib/save/source/SourceBody.d.ts +58 -58
- package/lib/save/source/SourceBody.js +296 -296
- package/lib/save/source/SourceClass.d.ts +25 -25
- package/lib/save/source/SourceClass.js +187 -187
- package/lib/save/source/SourceField.d.ts +13 -13
- package/lib/save/source/SourceField.js +73 -73
- package/lib/save/source/SourceFilePrinter.d.ts +12 -12
- package/lib/save/source/SourceFilePrinter.js +69 -69
- package/lib/save/source/SourceMethod.d.ts +22 -22
- package/lib/save/source/SourceMethod.d.ts.map +1 -1
- package/lib/save/source/SourceMethod.js +196 -193
- package/lib/save/source/SourceNamespace.d.ts +11 -11
- package/lib/save/source/SourceNamespace.js +83 -83
- package/lib/save/source/SourceStmt.d.ts +178 -178
- package/lib/save/source/SourceStmt.js +838 -838
- package/lib/save/source/SourceTransformer.d.ts +46 -46
- package/lib/save/source/SourceTransformer.js +446 -446
- package/lib/transformer/FunctionTransformer.d.ts +2 -2
- package/lib/transformer/FunctionTransformer.js +17 -17
- package/lib/transformer/SceneTransformer.d.ts +2 -2
- package/lib/transformer/SceneTransformer.js +17 -17
- package/lib/transformer/StaticSingleAssignmentFormer.d.ts +12 -12
- package/lib/transformer/StaticSingleAssignmentFormer.js +259 -259
- package/lib/transformer/Transformer.d.ts +6 -6
- package/lib/transformer/Transformer.js +22 -22
- package/lib/utils/AstTreeUtils.d.ts +4 -4
- package/lib/utils/AstTreeUtils.js +26 -26
- package/lib/utils/CfgStructualAnalysis.d.ts +110 -110
- package/lib/utils/CfgStructualAnalysis.js +1277 -1277
- package/lib/utils/FileUtils.d.ts +18 -18
- package/lib/utils/FileUtils.js +135 -135
- package/lib/utils/SparseBitVector.d.ts +100 -100
- package/lib/utils/SparseBitVector.js +445 -445
- package/lib/utils/callGraphUtils.d.ts +30 -30
- package/lib/utils/callGraphUtils.js +205 -205
- package/lib/utils/crypto_utils.d.ts +5 -5
- package/lib/utils/crypto_utils.js +57 -57
- package/lib/utils/entryMethodUtils.d.ts +13 -13
- package/lib/utils/entryMethodUtils.js +110 -110
- package/lib/utils/getAllFiles.d.ts +9 -9
- package/lib/utils/getAllFiles.js +90 -90
- package/lib/utils/json5parser.d.ts +6 -6
- package/lib/utils/json5parser.js +146 -146
- package/lib/utils/logger.d.ts +18 -18
- package/lib/utils/logger.d.ts.map +1 -1
- package/lib/utils/logger.js +97 -90
- package/lib/utils/pathTransfer.d.ts +1 -1
- package/lib/utils/pathTransfer.js +25 -25
- package/node_modules/json5/lib/cli.js +0 -0
- package/node_modules/ohos-typescript/bin/tsc +0 -0
- package/node_modules/ohos-typescript/bin/tsserver +0 -0
- package/package.json +3 -3
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { BaseEdge, BaseNode, NodeID } from '../core/graph/BaseExplicitGraph';
|
|
2
|
-
import { GraphTraits } from '../core/graph/GraphTraits';
|
|
3
|
-
import { Printer } from './Printer';
|
|
4
|
-
export declare class GraphPrinter<GraphType extends GraphTraits<BaseNode>> extends Printer {
|
|
5
|
-
graph: GraphType;
|
|
6
|
-
title: string;
|
|
7
|
-
startID: NodeID | undefined;
|
|
8
|
-
constructor(g: GraphType, t?: string);
|
|
9
|
-
setStartID(n: NodeID): void;
|
|
10
|
-
dump(): string;
|
|
11
|
-
writeGraph(): void;
|
|
12
|
-
writeNodes(): void;
|
|
13
|
-
writeEdge(edge: BaseEdge): void;
|
|
14
|
-
writeHeader(): void;
|
|
15
|
-
writeFooter(): void;
|
|
16
|
-
}
|
|
1
|
+
import { BaseEdge, BaseNode, NodeID } from '../core/graph/BaseExplicitGraph';
|
|
2
|
+
import { GraphTraits } from '../core/graph/GraphTraits';
|
|
3
|
+
import { Printer } from './Printer';
|
|
4
|
+
export declare class GraphPrinter<GraphType extends GraphTraits<BaseNode>> extends Printer {
|
|
5
|
+
graph: GraphType;
|
|
6
|
+
title: string;
|
|
7
|
+
startID: NodeID | undefined;
|
|
8
|
+
constructor(g: GraphType, t?: string);
|
|
9
|
+
setStartID(n: NodeID): void;
|
|
10
|
+
dump(): string;
|
|
11
|
+
writeGraph(): void;
|
|
12
|
+
writeNodes(): void;
|
|
13
|
+
writeEdge(edge: BaseEdge): void;
|
|
14
|
+
writeHeader(): void;
|
|
15
|
+
writeFooter(): void;
|
|
16
|
+
}
|
|
17
17
|
//# sourceMappingURL=GraphPrinter.d.ts.map
|
package/lib/save/GraphPrinter.js
CHANGED
|
@@ -1,134 +1,134 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.GraphPrinter = void 0;
|
|
18
|
-
const Printer_1 = require("./Printer");
|
|
19
|
-
function escapeStr(input) {
|
|
20
|
-
let str = input;
|
|
21
|
-
for (let i = 0; i < str.length; ++i) {
|
|
22
|
-
switch (str[i]) {
|
|
23
|
-
case '\n':
|
|
24
|
-
str = str.substring(0, i) + '\\n' + str.substring(i + 1);
|
|
25
|
-
++i;
|
|
26
|
-
break;
|
|
27
|
-
case '\t':
|
|
28
|
-
str = str.substring(0, i) + ' ' + str.substring(i + 1);
|
|
29
|
-
++i;
|
|
30
|
-
break;
|
|
31
|
-
case '\\':
|
|
32
|
-
if (i + 1 < str.length) {
|
|
33
|
-
switch (str[i + 1]) {
|
|
34
|
-
case 'l':
|
|
35
|
-
continue; // don't disturb \l
|
|
36
|
-
case '|':
|
|
37
|
-
case '{':
|
|
38
|
-
case '}':
|
|
39
|
-
str = str.substring(0, i) + str.substring(i + 1);
|
|
40
|
-
continue;
|
|
41
|
-
default:
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
str = str.substring(0, i) + '\\\\' + str.substring(i + 1);
|
|
46
|
-
++i;
|
|
47
|
-
break;
|
|
48
|
-
case '{':
|
|
49
|
-
case '}':
|
|
50
|
-
case '<':
|
|
51
|
-
case '>':
|
|
52
|
-
case '|':
|
|
53
|
-
case '"':
|
|
54
|
-
str = str.substring(0, i) + '\\' + str[i] + str.substring(i + 1);
|
|
55
|
-
++i;
|
|
56
|
-
break;
|
|
57
|
-
default:
|
|
58
|
-
;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return str;
|
|
62
|
-
}
|
|
63
|
-
class GraphPrinter extends Printer_1.Printer {
|
|
64
|
-
constructor(g, t) {
|
|
65
|
-
super();
|
|
66
|
-
this.startID = undefined;
|
|
67
|
-
this.graph = g;
|
|
68
|
-
if (t) {
|
|
69
|
-
this.title = t;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
setStartID(n) {
|
|
73
|
-
this.startID = n;
|
|
74
|
-
}
|
|
75
|
-
dump() {
|
|
76
|
-
this.printer.clear();
|
|
77
|
-
this.writeGraph();
|
|
78
|
-
return this.printer.toString();
|
|
79
|
-
}
|
|
80
|
-
writeGraph() {
|
|
81
|
-
this.writeHeader();
|
|
82
|
-
this.writeNodes();
|
|
83
|
-
this.writeFooter();
|
|
84
|
-
}
|
|
85
|
-
writeNodes() {
|
|
86
|
-
var _a;
|
|
87
|
-
let itor = this.graph.nodesItor();
|
|
88
|
-
if (this.startID) {
|
|
89
|
-
// from start id
|
|
90
|
-
let nodes = new Set();
|
|
91
|
-
let startNode = this.graph.getNode(this.startID);
|
|
92
|
-
let worklist = [startNode];
|
|
93
|
-
while (worklist.length > 0) {
|
|
94
|
-
let n = worklist.shift();
|
|
95
|
-
if (nodes.has(n)) {
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
nodes.add(n);
|
|
99
|
-
(_a = n.getOutgoingEdges()) === null || _a === void 0 ? void 0 : _a.forEach(e => worklist.push(e.getDstNode()));
|
|
100
|
-
}
|
|
101
|
-
itor = nodes.values();
|
|
102
|
-
}
|
|
103
|
-
for (let node of itor) {
|
|
104
|
-
let nodeAttr = node.getDotAttr();
|
|
105
|
-
if (nodeAttr === '') {
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
let nodeLabel = escapeStr(node.getDotLabel());
|
|
109
|
-
this.printer.writeLine(`\tNode${node.getID()} [shape=recode,${nodeAttr},label="${nodeLabel}"];`);
|
|
110
|
-
for (let edge of node.getOutgoingEdges()) {
|
|
111
|
-
this.writeEdge(edge);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
writeEdge(edge) {
|
|
116
|
-
let edgeAttr = edge.getDotAttr();
|
|
117
|
-
if (edgeAttr === '') {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
this.printer.writeLine(`\tNode${edge.getSrcID()} -> Node${edge.getDstID()}[${edgeAttr}]`);
|
|
121
|
-
}
|
|
122
|
-
writeHeader() {
|
|
123
|
-
const GraphName = this.graph.getGraphName();
|
|
124
|
-
let graphNameStr = `digraph "${escapeStr(this.title || GraphName || 'unnamed')}" {\n`;
|
|
125
|
-
this.printer.writeLine(graphNameStr);
|
|
126
|
-
let labelStr = `\tlabel="${escapeStr(this.title || GraphName)}";\n`;
|
|
127
|
-
this.printer.writeLine(labelStr);
|
|
128
|
-
// TODO: need graph attr?
|
|
129
|
-
}
|
|
130
|
-
writeFooter() {
|
|
131
|
-
this.printer.writeLine("}\n");
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
exports.GraphPrinter = GraphPrinter;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.GraphPrinter = void 0;
|
|
18
|
+
const Printer_1 = require("./Printer");
|
|
19
|
+
function escapeStr(input) {
|
|
20
|
+
let str = input;
|
|
21
|
+
for (let i = 0; i < str.length; ++i) {
|
|
22
|
+
switch (str[i]) {
|
|
23
|
+
case '\n':
|
|
24
|
+
str = str.substring(0, i) + '\\n' + str.substring(i + 1);
|
|
25
|
+
++i;
|
|
26
|
+
break;
|
|
27
|
+
case '\t':
|
|
28
|
+
str = str.substring(0, i) + ' ' + str.substring(i + 1);
|
|
29
|
+
++i;
|
|
30
|
+
break;
|
|
31
|
+
case '\\':
|
|
32
|
+
if (i + 1 < str.length) {
|
|
33
|
+
switch (str[i + 1]) {
|
|
34
|
+
case 'l':
|
|
35
|
+
continue; // don't disturb \l
|
|
36
|
+
case '|':
|
|
37
|
+
case '{':
|
|
38
|
+
case '}':
|
|
39
|
+
str = str.substring(0, i) + str.substring(i + 1);
|
|
40
|
+
continue;
|
|
41
|
+
default:
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
str = str.substring(0, i) + '\\\\' + str.substring(i + 1);
|
|
46
|
+
++i;
|
|
47
|
+
break;
|
|
48
|
+
case '{':
|
|
49
|
+
case '}':
|
|
50
|
+
case '<':
|
|
51
|
+
case '>':
|
|
52
|
+
case '|':
|
|
53
|
+
case '"':
|
|
54
|
+
str = str.substring(0, i) + '\\' + str[i] + str.substring(i + 1);
|
|
55
|
+
++i;
|
|
56
|
+
break;
|
|
57
|
+
default:
|
|
58
|
+
;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return str;
|
|
62
|
+
}
|
|
63
|
+
class GraphPrinter extends Printer_1.Printer {
|
|
64
|
+
constructor(g, t) {
|
|
65
|
+
super();
|
|
66
|
+
this.startID = undefined;
|
|
67
|
+
this.graph = g;
|
|
68
|
+
if (t) {
|
|
69
|
+
this.title = t;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
setStartID(n) {
|
|
73
|
+
this.startID = n;
|
|
74
|
+
}
|
|
75
|
+
dump() {
|
|
76
|
+
this.printer.clear();
|
|
77
|
+
this.writeGraph();
|
|
78
|
+
return this.printer.toString();
|
|
79
|
+
}
|
|
80
|
+
writeGraph() {
|
|
81
|
+
this.writeHeader();
|
|
82
|
+
this.writeNodes();
|
|
83
|
+
this.writeFooter();
|
|
84
|
+
}
|
|
85
|
+
writeNodes() {
|
|
86
|
+
var _a;
|
|
87
|
+
let itor = this.graph.nodesItor();
|
|
88
|
+
if (this.startID) {
|
|
89
|
+
// from start id
|
|
90
|
+
let nodes = new Set();
|
|
91
|
+
let startNode = this.graph.getNode(this.startID);
|
|
92
|
+
let worklist = [startNode];
|
|
93
|
+
while (worklist.length > 0) {
|
|
94
|
+
let n = worklist.shift();
|
|
95
|
+
if (nodes.has(n)) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
nodes.add(n);
|
|
99
|
+
(_a = n.getOutgoingEdges()) === null || _a === void 0 ? void 0 : _a.forEach(e => worklist.push(e.getDstNode()));
|
|
100
|
+
}
|
|
101
|
+
itor = nodes.values();
|
|
102
|
+
}
|
|
103
|
+
for (let node of itor) {
|
|
104
|
+
let nodeAttr = node.getDotAttr();
|
|
105
|
+
if (nodeAttr === '') {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
let nodeLabel = escapeStr(node.getDotLabel());
|
|
109
|
+
this.printer.writeLine(`\tNode${node.getID()} [shape=recode,${nodeAttr},label="${nodeLabel}"];`);
|
|
110
|
+
for (let edge of node.getOutgoingEdges()) {
|
|
111
|
+
this.writeEdge(edge);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
writeEdge(edge) {
|
|
116
|
+
let edgeAttr = edge.getDotAttr();
|
|
117
|
+
if (edgeAttr === '') {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
this.printer.writeLine(`\tNode${edge.getSrcID()} -> Node${edge.getDstID()}[${edgeAttr}]`);
|
|
121
|
+
}
|
|
122
|
+
writeHeader() {
|
|
123
|
+
const GraphName = this.graph.getGraphName();
|
|
124
|
+
let graphNameStr = `digraph "${escapeStr(this.title || GraphName || 'unnamed')}" {\n`;
|
|
125
|
+
this.printer.writeLine(graphNameStr);
|
|
126
|
+
let labelStr = `\tlabel="${escapeStr(this.title || GraphName)}";\n`;
|
|
127
|
+
this.printer.writeLine(labelStr);
|
|
128
|
+
// TODO: need graph attr?
|
|
129
|
+
}
|
|
130
|
+
writeFooter() {
|
|
131
|
+
this.printer.writeLine("}\n");
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
exports.GraphPrinter = GraphPrinter;
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { Printer } from './Printer';
|
|
2
|
-
import { ArkFile } from '../core/model/ArkFile';
|
|
3
|
-
export declare class JsonPrinter extends Printer {
|
|
4
|
-
private arkFile;
|
|
5
|
-
constructor(arkFile: ArkFile);
|
|
6
|
-
dump(): string;
|
|
7
|
-
private serializeArkFile;
|
|
8
|
-
private serializeNamespace;
|
|
9
|
-
private serializeClass;
|
|
10
|
-
private serializeField;
|
|
11
|
-
private serializeMethod;
|
|
12
|
-
private serializeMethodBody;
|
|
13
|
-
private serializeMethodParameter;
|
|
14
|
-
private serializeImportInfo;
|
|
15
|
-
private serializeExportInfo;
|
|
16
|
-
private serializeDecorator;
|
|
17
|
-
private serializeLineColPosition;
|
|
18
|
-
private serializeType;
|
|
19
|
-
private serializeFileSignature;
|
|
20
|
-
private serializeNamespaceSignature;
|
|
21
|
-
private serializeClassSignature;
|
|
22
|
-
private serializeFieldSignature;
|
|
23
|
-
private serializeMethodSignature;
|
|
24
|
-
private serializeAliasTypeSignature;
|
|
25
|
-
private serializeCfg;
|
|
26
|
-
private serializeBasicBlock;
|
|
27
|
-
private serializeLocal;
|
|
28
|
-
private serializeValue;
|
|
29
|
-
private serializeStmt;
|
|
30
|
-
}
|
|
1
|
+
import { Printer } from './Printer';
|
|
2
|
+
import { ArkFile } from '../core/model/ArkFile';
|
|
3
|
+
export declare class JsonPrinter extends Printer {
|
|
4
|
+
private arkFile;
|
|
5
|
+
constructor(arkFile: ArkFile);
|
|
6
|
+
dump(): string;
|
|
7
|
+
private serializeArkFile;
|
|
8
|
+
private serializeNamespace;
|
|
9
|
+
private serializeClass;
|
|
10
|
+
private serializeField;
|
|
11
|
+
private serializeMethod;
|
|
12
|
+
private serializeMethodBody;
|
|
13
|
+
private serializeMethodParameter;
|
|
14
|
+
private serializeImportInfo;
|
|
15
|
+
private serializeExportInfo;
|
|
16
|
+
private serializeDecorator;
|
|
17
|
+
private serializeLineColPosition;
|
|
18
|
+
private serializeType;
|
|
19
|
+
private serializeFileSignature;
|
|
20
|
+
private serializeNamespaceSignature;
|
|
21
|
+
private serializeClassSignature;
|
|
22
|
+
private serializeFieldSignature;
|
|
23
|
+
private serializeMethodSignature;
|
|
24
|
+
private serializeAliasTypeSignature;
|
|
25
|
+
private serializeCfg;
|
|
26
|
+
private serializeBasicBlock;
|
|
27
|
+
private serializeLocal;
|
|
28
|
+
private serializeValue;
|
|
29
|
+
private serializeStmt;
|
|
30
|
+
}
|
|
31
31
|
//# sourceMappingURL=JsonPrinter.d.ts.map
|