snapshot-checker 0.2.2 → 0.4.0

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 (93) hide show
  1. package/README.md +103 -343
  2. package/dist/commands/forkall.d.ts +4 -12
  3. package/dist/commands/forkall.d.ts.map +1 -1
  4. package/dist/commands/forkall.js +46 -23
  5. package/dist/commands/forkall.js.map +1 -1
  6. package/dist/commands/report.d.ts +9 -0
  7. package/dist/commands/report.d.ts.map +1 -1
  8. package/dist/commands/report.js +153 -32
  9. package/dist/commands/report.js.map +1 -1
  10. package/dist/demos/context-demo.d.ts +10 -0
  11. package/dist/demos/context-demo.d.ts.map +1 -0
  12. package/dist/{commands/context_demo.js → demos/context-demo.js} +15 -18
  13. package/dist/demos/context-demo.js.map +1 -0
  14. package/dist/{commands → demos}/mac-example.d.ts +1 -3
  15. package/dist/demos/mac-example.d.ts.map +1 -0
  16. package/dist/{commands → demos}/mac-example.js +2 -4
  17. package/dist/demos/mac-example.js.map +1 -0
  18. package/dist/{commands/timeout_demo.d.ts → demos/timeout-demo.d.ts} +2 -2
  19. package/dist/demos/timeout-demo.d.ts.map +1 -0
  20. package/dist/demos/timeout-demo.js +35 -0
  21. package/dist/demos/timeout-demo.js.map +1 -0
  22. package/dist/src/cli.js +209 -169
  23. package/dist/src/cli.js.map +1 -1
  24. package/dist/src/executor.d.ts +1 -3
  25. package/dist/src/executor.d.ts.map +1 -1
  26. package/dist/src/executor.js +1 -3
  27. package/dist/src/executor.js.map +1 -1
  28. package/dist/src/groupSpecs.d.ts +1 -4
  29. package/dist/src/groupSpecs.d.ts.map +1 -1
  30. package/dist/src/groupSpecs.js.map +1 -1
  31. package/dist/src/index.d.ts +1 -1
  32. package/dist/src/index.d.ts.map +1 -1
  33. package/dist/src/index.js +1 -1
  34. package/dist/src/index.js.map +1 -1
  35. package/dist/src/lib/{common_groups.d.ts → presets.d.ts} +24 -2
  36. package/dist/src/lib/presets.d.ts.map +1 -0
  37. package/dist/src/lib/{common_groups.js → presets.js} +73 -24
  38. package/dist/src/lib/presets.js.map +1 -0
  39. package/dist/src/lib/{programmatic.d.ts → scenario.d.ts} +9 -11
  40. package/dist/src/lib/scenario.d.ts.map +1 -0
  41. package/dist/src/lib/{programmatic.js → scenario.js} +6 -10
  42. package/dist/src/lib/scenario.js.map +1 -0
  43. package/dist/src/logger.d.ts +23 -0
  44. package/dist/src/logger.d.ts.map +1 -0
  45. package/dist/src/logger.js +92 -0
  46. package/dist/src/logger.js.map +1 -0
  47. package/dist/src/runCommand.d.ts +27 -35
  48. package/dist/src/runCommand.d.ts.map +1 -1
  49. package/dist/src/runCommand.js +81 -70
  50. package/dist/src/runCommand.js.map +1 -1
  51. package/dist/src/runGroups.d.ts +6 -12
  52. package/dist/src/runGroups.d.ts.map +1 -1
  53. package/dist/src/runGroups.js +14 -19
  54. package/dist/src/runGroups.js.map +1 -1
  55. package/dist/src/runners/builtinFunctionRunner.d.ts +1 -0
  56. package/dist/src/runners/builtinFunctionRunner.d.ts.map +1 -1
  57. package/dist/src/runners/builtinFunctionRunner.js +5 -12
  58. package/dist/src/runners/builtinFunctionRunner.js.map +1 -1
  59. package/dist/src/runners/embedRunner.d.ts +1 -0
  60. package/dist/src/runners/embedRunner.d.ts.map +1 -1
  61. package/dist/src/runners/embedRunner.js +5 -1
  62. package/dist/src/runners/embedRunner.js.map +1 -1
  63. package/dist/src/runners/shellRunner.d.ts +1 -0
  64. package/dist/src/runners/shellRunner.d.ts.map +1 -1
  65. package/dist/src/runners/shellRunner.js +40 -8
  66. package/dist/src/runners/shellRunner.js.map +1 -1
  67. package/dist/src/runners/types.d.ts +9 -0
  68. package/dist/src/runners/types.d.ts.map +1 -1
  69. package/dist/src/types.d.ts +47 -77
  70. package/dist/src/types.d.ts.map +1 -1
  71. package/dist/src/types.js +37 -10
  72. package/dist/src/types.js.map +1 -1
  73. package/package.json +10 -3
  74. package/dist/commands/context_demo.d.ts +0 -18
  75. package/dist/commands/context_demo.d.ts.map +0 -1
  76. package/dist/commands/context_demo.js.map +0 -1
  77. package/dist/commands/mac-example.d.ts.map +0 -1
  78. package/dist/commands/mac-example.js.map +0 -1
  79. package/dist/commands/timeout_demo.d.ts.map +0 -1
  80. package/dist/commands/timeout_demo.js +0 -48
  81. package/dist/commands/timeout_demo.js.map +0 -1
  82. package/dist/src/lib/common_groups.d.ts.map +0 -1
  83. package/dist/src/lib/common_groups.js.map +0 -1
  84. package/dist/src/lib/foo.d.ts +0 -3
  85. package/dist/src/lib/foo.d.ts.map +0 -1
  86. package/dist/src/lib/foo.js +0 -7
  87. package/dist/src/lib/foo.js.map +0 -1
  88. package/dist/src/lib/programmatic.d.ts.map +0 -1
  89. package/dist/src/lib/programmatic.js.map +0 -1
  90. package/dist/src/lib/trace_formatter.d.ts +0 -9
  91. package/dist/src/lib/trace_formatter.d.ts.map +0 -1
  92. package/dist/src/lib/trace_formatter.js +0 -148
  93. package/dist/src/lib/trace_formatter.js.map +0 -1
@@ -1,16 +1,14 @@
1
1
  import { CommandKind } from "../src/types.js";
2
2
  import path from "node:path";
3
3
  import { existsSync, mkdirSync } from "node:fs";
4
- import { buildCommonAnalysisGroup, buildCommonCollectGroup, buildCommonInitEnvGroup, } from "../src/lib/common_groups.js";
4
+ import { buildCommonAnalysisGroup, buildCommonCollectGroup, buildCommonInitEnvGroup, } from "../src/lib/presets.js";
5
+ import { logger } from "../src/logger.js";
5
6
  /**
6
- * forkall 场景的基础占位配置。
7
- * 实际要执行的命令会在 applyOptions 中,根据 CLI 传入的参数(eventPath/app 等)动态生成。
8
- *
9
- * 作为 npm 包被外部项目引用时:
10
- * import * as forkall from 'snapshot-checker/commands/forkall';
11
- * resolveScenario(forkall, { app, eventPath, ... })
12
- * 完整示例见 demos/consumer-app。
7
+ * forkall 场景占位;实际命令由 {@link applyOptions} 按 CLI 注入。
8
+ * 包消费方:`import * as forkall from 'snapshot-checker/commands/forkall'` 后配合 `resolveScenario`;示例见 `demos/consumer-app`。
13
9
  */
10
+ /** 输出根目录下中间文件目录名(与 report 一致;不含 dump_stack*) */
11
+ const WORKSPACE_SUBDIR = "workspace";
14
12
  export const groups = {};
15
13
  export const defaultGroupOrder = [
16
14
  "reboot",
@@ -60,6 +58,14 @@ export const options = [
60
58
  description: "trace 事件格式版本(默认 default)",
61
59
  defaultValue: "default",
62
60
  },
61
+ {
62
+ flags: "--skip-perf-dedupe",
63
+ description: "跳过 perf 解码后的 compare 去重(dedupePerfData)",
64
+ },
65
+ {
66
+ flags: "--drop-failed-samples",
67
+ description: "解码 perf 时丢弃「有 raw 但无对应 trace 解析器」的样本(decodePerfRawData dropFailedSamples);库会输出丢弃数量日志",
68
+ },
63
69
  ];
64
70
  function buildRebootGroup(input) {
65
71
  const { mode, eventPath, defaultTimeout } = input;
@@ -132,12 +138,12 @@ function buildMonitorGroup(input) {
132
138
  func: (ctx) => {
133
139
  const apppoolPids = ctx.get("apppool_pids");
134
140
  if (!apppoolPids) {
135
- console.warn("[提取检测目标信息] apppool_pids 缺失或不是字符串,跳过处理");
141
+ logger.warn("[提取检测目标信息] apppool_pids 缺失或不是字符串,跳过处理");
136
142
  return false;
137
143
  }
138
144
  const monitorTarget = apppoolPids.split(/\s+/).join(",");
139
145
  ctx.set("monitor_target", monitorTarget);
140
- console.info("提取检测目标: ", monitorTarget);
146
+ logger.info("提取检测目标: ", monitorTarget);
141
147
  },
142
148
  },
143
149
  {
@@ -174,25 +180,39 @@ function buildAnalysisPreDecodeCommands(input) {
174
180
  : []),
175
181
  ];
176
182
  }
177
- /**
178
- * 将 CLI 解析出来的参数应用到 forkall 场景,动态生成各阶段命令。
179
- */
183
+ /** 按 CLI 结果生成 reboot/monitor/collect/analysis 各阶段命令表 */
180
184
  export function applyOptions(ctx) {
181
- const { eventPath = "", app = "", systemSymbolFilePath = "", logKey = "pid", duration = "70", defaultTimeout = "90", bufferSize = "512000", mode = "monitor", outputDir = String.raw `.\output`, traceFormatProfile = "default", } = ctx.options ?? {};
185
+ const { eventPath = "", app = "", systemSymbolFilePath = "", logKey = "pid", duration = "70", defaultTimeout = "90", bufferSize = "512000", mode = "monitor", outputDir = String.raw `.\output`, traceFormatProfile = "default", skipPerfDedupe = false, dropFailedSamples = false, dryRun = false, } = ctx.options ?? {};
182
186
  const eventName = eventPath ? eventPath.replace(/\//g, ":") : "";
183
187
  const checkStateCommand = "hidumper -s 1901 -a '-p libforkall_plugin.z.so --list'";
184
188
  const outputDirNormalized = path.normalize(outputDir);
185
- const outputDirWithSep = outputDirNormalized.endsWith(path.sep)
186
- ? outputDirNormalized
187
- : `${outputDirNormalized}${path.sep}`;
188
- const snapshotLogFile = path.join(outputDirNormalized, "snapshot_log.txt");
189
- const snapshotPerfFile = path.join(outputDirNormalized, "snapshot_perf.data.txt");
189
+ const workspaceDir = path.join(outputDirNormalized, WORKSPACE_SUBDIR);
190
+ const workspaceDirNormalized = path.normalize(workspaceDir);
191
+ const workspaceDirWithSep = workspaceDirNormalized.endsWith(path.sep)
192
+ ? workspaceDirNormalized
193
+ : `${workspaceDirNormalized}${path.sep}`;
194
+ const perfTextDir = path.join(outputDirNormalized, "perf_txt");
195
+ const perfTextDirNormalized = path.normalize(perfTextDir);
196
+ const perfTextDirWithSep = perfTextDirNormalized.endsWith(path.sep)
197
+ ? perfTextDirNormalized
198
+ : `${perfTextDirNormalized}${path.sep}`;
199
+ const snapshotLogFile = path.join(workspaceDirNormalized, "snapshot_log.txt");
200
+ const snapshotPerfFile = path.join(perfTextDirNormalized, "snapshot_perf.data.txt");
190
201
  const dumpStackTxt = path.join(outputDirNormalized, "dump_stack.txt");
191
202
  const dumpStackJson = path.join(outputDirNormalized, "dump_stack.json");
203
+ const dumpStackXlsx = path.join(outputDirNormalized, "dump_stack.xlsx");
192
204
  const parserSystemStackScript = path.normalize(path.join(".", "tools", "host", "checker", "parse_system_stack.py"));
193
205
  const startAppCommand = `hidumper -s 1901 -a '-p libforkall_plugin.z.so --create 100 ${app}'`;
194
- if (!existsSync(outputDirNormalized)) {
195
- mkdirSync(outputDirNormalized, { recursive: true });
206
+ if (!dryRun) {
207
+ if (!existsSync(outputDirNormalized)) {
208
+ mkdirSync(outputDirNormalized, { recursive: true });
209
+ }
210
+ if (!existsSync(workspaceDirNormalized)) {
211
+ mkdirSync(workspaceDirNormalized, { recursive: true });
212
+ }
213
+ if (!existsSync(perfTextDirNormalized)) {
214
+ mkdirSync(perfTextDirNormalized, { recursive: true });
215
+ }
196
216
  }
197
217
  const rebootGroup = buildRebootGroup({ mode, eventPath, defaultTimeout });
198
218
  const initEnvGroup = buildCommonInitEnvGroup({
@@ -215,8 +235,8 @@ export function applyOptions(ctx) {
215
235
  });
216
236
  const collectGroup = buildCommonCollectGroup({
217
237
  checkStateCommand,
218
- snapshotPerfReceiveDirWithSep: outputDirWithSep,
219
- outputDirWithSep,
238
+ snapshotPerfReceiveDirWithSep: perfTextDirWithSep,
239
+ outputDirWithSep: workspaceDirWithSep,
220
240
  });
221
241
  const analysisGroup = buildCommonAnalysisGroup({
222
242
  app,
@@ -230,9 +250,12 @@ export function applyOptions(ctx) {
230
250
  decodeInput: { inputFilePath: snapshotPerfFile },
231
251
  dumpStackTxt,
232
252
  dumpStackJson,
253
+ dumpStackXlsx,
233
254
  traceFormatProfile,
234
255
  decodeStageName: "风险调用栈数据分析",
235
256
  missingInputMessage: "[风险调用栈数据分析] 输入文件缺失,跳过处理",
257
+ skipDedupePerfData: skipPerfDedupe,
258
+ dropFailedSamples,
236
259
  });
237
260
  const resultGroups = {
238
261
  reboot: rebootGroup,
@@ -1 +1 @@
1
- {"version":3,"file":"forkall.js","sourceRoot":"","sources":["../../commands/forkall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forkall.js","sourceRoot":"","sources":["../../commands/forkall.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Groups } from "../src/types.js";
2
+ /** report 场景占位;内容由 `applyOptions` 注入 */
2
3
  export declare const groups: Groups;
3
4
  export declare const defaultGroupOrder: string[];
4
5
  export declare const options: ({
@@ -16,10 +17,18 @@ interface ForkallOptions {
16
17
  sourcemapDir?: string;
17
18
  logKey?: string;
18
19
  duration?: string;
20
+ backtrackDelay?: string;
19
21
  bufferSize?: string;
20
22
  outputDir?: string;
21
23
  traceFormatProfile?: string;
24
+ riskTargets?: string;
25
+ skipPerfDedupe?: boolean;
26
+ skipBacktrack?: boolean;
27
+ skipNonBacktrack?: boolean;
28
+ dropFailedSamples?: boolean;
29
+ dryRun?: boolean;
22
30
  }
31
+ /** 注入 monitor/collect/analysis 流水线及风险目标等派生命令 */
23
32
  export declare function applyOptions(ctx: {
24
33
  groups: Groups;
25
34
  defaultGroupOrder: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../commands/report.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA8B,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAU1E,eAAO,MAAM,MAAM,EAAE,MAAW,CAAC;AAEjC,eAAO,MAAM,iBAAiB,EAAE,MAAM,EAKrC,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;IA6BnB,CAAC;AAEF,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAgID,wBAAgB,YAAY,CAAC,GAAG,EAAE;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,cAAc,CAAC;CACzB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAAE,CAqGlD"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../commands/report.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA8B,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAW1E,wCAAwC;AACxC,eAAO,MAAM,MAAM,EAAE,MAAW,CAAC;AAEjC,eAAO,MAAM,iBAAiB,EAAE,MAAM,EAKrC,CAAC;AA4CF,eAAO,MAAM,OAAO;;;;;;;;IA2DnB,CAAC;AAEF,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAyLD,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,GAAG,EAAE;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,cAAc,CAAC;CACzB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAAE,CAuJlD"}
@@ -1,7 +1,9 @@
1
1
  import { CommandKind } from "../src/types.js";
2
2
  import path from "node:path";
3
3
  import { existsSync, mkdirSync } from "node:fs";
4
- import { buildCommonAnalysisGroup, buildCommonCollectGroup, buildCommonInitEnvGroup, selectFirstValidPerfInput, } from "../src/lib/common_groups.js";
4
+ import { buildCommonAnalysisGroup, buildCommonCollectGroup, buildCommonInitEnvGroup, selectFirstValidPerfInput, } from "../src/lib/presets.js";
5
+ import { logger } from "../src/logger.js";
6
+ /** report 场景占位;内容由 `applyOptions` 注入 */
5
7
  export const groups = {};
6
8
  export const defaultGroupOrder = [
7
9
  "reboot",
@@ -9,6 +11,29 @@ export const defaultGroupOrder = [
9
11
  "collect",
10
12
  "analysis",
11
13
  ];
14
+ const RISK_TARGET_DEFINITIONS = {
15
+ backtrack: {
16
+ key: "backtrack",
17
+ displayName: "失效回溯",
18
+ hitraceTag: "checkpoint_backtrack",
19
+ hiperfEvent: "checkpoint:vfs_snapshot_dump_monitor",
20
+ permissionPath: "/sys/kernel/tracing/events/checkpoint/vfs_snapshot_dump_monitor",
21
+ },
22
+ direct: {
23
+ key: "direct",
24
+ displayName: "直接失效",
25
+ hitraceTag: "checkpoint_direct",
26
+ hiperfEvent: "checkpoint:checkpoint_revoked",
27
+ permissionPath: "/sys/kernel/tracing/events/checkpoint/checkpoint_revoked",
28
+ },
29
+ };
30
+ const DEFAULT_RISK_TARGETS = Object.keys(RISK_TARGET_DEFINITIONS);
31
+ /** 与 {@link RISK_TARGET_DEFINITIONS} 同步:各 key 及展示名,供 CLI 与校验错误信息复用 */
32
+ const RISK_TARGETS_LABELLED_KEYS = Object.keys(RISK_TARGET_DEFINITIONS)
33
+ .map((k) => `${k}(${RISK_TARGET_DEFINITIONS[k].displayName})`)
34
+ .join("、");
35
+ /** `--risk-targets` 选项说明(随 {@link RISK_TARGET_DEFINITIONS} 自动更新) */
36
+ const RISK_TARGETS_CLI_DESCRIPTION = `风险抓取目标(逗号分隔:${RISK_TARGETS_LABELLED_KEYS};可用 all 表示全部;默认 all)`;
12
37
  export const options = [
13
38
  { flags: "--app <app>", description: "应用名" },
14
39
  { flags: "--hstack-tool-path <path>", description: "hstack 工具地址" },
@@ -23,6 +48,11 @@ export const options = [
23
48
  description: "采样持续时间(秒,默认 70)",
24
49
  defaultValue: "70",
25
50
  },
51
+ {
52
+ flags: "--backtrack-delay <seconds>",
53
+ description: "monitor 阶段「设备端操作提示与状态检测」后台命令的启动延迟(秒,默认 80;对应 backgroundDelayMs)",
54
+ defaultValue: "80",
55
+ },
26
56
  {
27
57
  flags: "--buffer-size <bytes>",
28
58
  description: "缓冲区大小(字节,默认 512000)",
@@ -38,10 +68,59 @@ export const options = [
38
68
  description: "trace 事件格式版本(默认 default)",
39
69
  defaultValue: "default",
40
70
  },
71
+ {
72
+ flags: "--risk-targets <targets>",
73
+ description: RISK_TARGETS_CLI_DESCRIPTION,
74
+ defaultValue: "all",
75
+ },
76
+ {
77
+ flags: "--skip-perf-dedupe",
78
+ description: "跳过 perf 解码后的 compare 去重(dedupePerfData)",
79
+ },
80
+ {
81
+ flags: "--skip-backtrack",
82
+ description: "跳过解码后的回溯关联(hmtrace-parser backtrackFS);未指定本选项且风险目标含失效回溯时会在解码后执行;不影响采集",
83
+ },
84
+ {
85
+ flags: "--skip-non-backtrack",
86
+ description: "回溯关联(backtrackFS)时过滤非 FS 的 checkpoint_revoked(等价 keepNonFsRevoked: false;默认保留)。未执行回溯关联时无效果",
87
+ },
88
+ {
89
+ flags: "--drop-failed-samples",
90
+ description: "解码 perf 时丢弃「有 raw 但无对应 trace 解析器」的样本(decodePerfRawData dropFailedSamples);库会输出丢弃数量日志",
91
+ },
41
92
  ];
42
93
  const PERF_INPUT_CONTEXT_KEY = "perf_input_file";
94
+ /** 与 forkall 一致:输出根目录下中间文件目录名(含日志、hitrace、perf.data、hstack 产物等,不含 dump_stack*) */
95
+ const WORKSPACE_SUBDIR = "workspace";
96
+ function parseRiskTargets(rawValue) {
97
+ if (!rawValue || rawValue.trim() === "" || rawValue.trim() === "all") {
98
+ return [...DEFAULT_RISK_TARGETS];
99
+ }
100
+ const entries = rawValue
101
+ .split(",")
102
+ .map((item) => item.trim().toLowerCase())
103
+ .filter(Boolean);
104
+ if (entries.length === 0) {
105
+ return [...DEFAULT_RISK_TARGETS];
106
+ }
107
+ const uniqueKeys = Array.from(new Set(entries));
108
+ if (uniqueKeys.includes("all")) {
109
+ return [...DEFAULT_RISK_TARGETS];
110
+ }
111
+ const invalidKeys = uniqueKeys.filter((key) => !(key in RISK_TARGET_DEFINITIONS));
112
+ if (invalidKeys.length > 0) {
113
+ throw new Error(`[风险抓取目标] 不支持的风险类型: ${invalidKeys.join(", ")}。可选值: all、${RISK_TARGETS_LABELLED_KEYS}`);
114
+ }
115
+ return uniqueKeys;
116
+ }
117
+ function buildPermissionCommands(targets) {
118
+ return targets.map((target) => `hdc shell "chmod 755 ${target.permissionPath} && chmod 666 ${target.permissionPath}/enable"`);
119
+ }
43
120
  function buildMonitorGroup(input) {
44
- const { logKey, bufferSize, duration, app, snapshotLogFile, startAppCommand, checkStateCommand, } = input;
121
+ const { logKey, bufferSize, duration, backgroundDelayMs, app, snapshotLogFile, startAppCommand, checkStateCommand, riskTargets, } = input;
122
+ const hitraceTags = riskTargets.map((target) => target.hitraceTag).join(" ");
123
+ const hiperfEvents = riskTargets.map((target) => target.hiperfEvent).join(",");
45
124
  return [
46
125
  {
47
126
  kind: CommandKind.Windows,
@@ -62,24 +141,35 @@ function buildMonitorGroup(input) {
62
141
  func: (ctx) => {
63
142
  const apppoolPids = ctx.get("apppool_pids");
64
143
  if (!apppoolPids) {
65
- console.warn("[提取检测目标信息] apppool_pids 缺失或不是字符串,跳过处理");
144
+ logger.warn("[提取检测目标信息] apppool_pids 缺失或不是字符串,跳过处理");
66
145
  return false;
67
146
  }
68
147
  const monitorTarget = apppoolPids.split(/\s+/).join(",");
69
148
  ctx.set("monitor_target", monitorTarget);
70
- console.info("提取检测目标: ", monitorTarget);
149
+ logger.info("提取检测目标: ", monitorTarget);
71
150
  },
72
151
  },
152
+ {
153
+ kind: CommandKind.Windows,
154
+ description: "在设备端输出操作提示并执行状态检测",
155
+ background: true,
156
+ backgroundDelayMs,
157
+ run: `hdc shell "echo '=== 请按测试要求在设备上完成操作(以下为状态检测输出)===' && ${checkStateCommand}"`,
158
+ },
159
+ {
160
+ kind: CommandKind.Embed,
161
+ description: "等待 15 秒后开始收集风险事件数据",
162
+ run: "sleep 15",
163
+ },
73
164
  {
74
165
  kind: CommandKind.Windows,
75
166
  description: "收集风险事件数据",
76
167
  run: [
77
168
  'hdc shell "',
78
- `hitrace snapshot --overwrite -b ${bufferSize} -t ${duration} -o /data/local/tmp/snapshot_hitrace.txt & `,
79
- `hiperf record -e snapshot:hmb_forkall_report_image_failure,snapshot:vfs_snapshot_dump_monitor --period 1 -s fp --clockid boottime --callchain-useronly --cpu-limit 100 -o /data/local/tmp/perf.data -p {{monitor_target}} -d ${duration} & `,
169
+ `hitrace ${hitraceTags} --overwrite -b ${bufferSize} -t ${duration} -o /data/local/tmp/snapshot_hitrace.txt & `,
170
+ `hiperf --much record -e ${hiperfEvents} --period 1 -s fp --clockid boottime --callchain-useronly --cpu-limit 100 -o /data/local/tmp/perf.data -p {{monitor_target}} -d ${duration} & `,
80
171
  `sleep 1 && `,
81
172
  app ? `${startAppCommand} && ` : "",
82
- `${checkStateCommand} & `,
83
173
  `wait && `,
84
174
  `hiperf dump -i /data/local/tmp/perf.data -o /data/local/tmp/snapshot_perf.data.txt"`,
85
175
  ]
@@ -89,14 +179,14 @@ function buildMonitorGroup(input) {
89
179
  ];
90
180
  }
91
181
  function buildAnalysisPreDecodeCommands(input) {
92
- const { snapshotPerfFile, parsedSnapshotPerfFile, hstackToolPathNormalized, perfTextDir, outputDirNormalized, sourcemapDirNormalized, } = input;
182
+ const { snapshotPerfFile, parsedSnapshotPerfFile, hstackToolPathNormalized, perfTextDir, workspaceDirNormalized, sourcemapDirNormalized, } = input;
93
183
  return [
94
184
  ...(hstackToolPathNormalized
95
185
  ? [
96
186
  {
97
187
  kind: CommandKind.Windows,
98
188
  description: "解析采集结果",
99
- run: `${hstackToolPathNormalized} -i ${perfTextDir} -o ${outputDirNormalized} -s ${sourcemapDirNormalized}`,
189
+ run: `${hstackToolPathNormalized} -i ${perfTextDir} -o ${workspaceDirNormalized} -s ${sourcemapDirNormalized}`,
100
190
  },
101
191
  ]
102
192
  : [
@@ -104,7 +194,7 @@ function buildAnalysisPreDecodeCommands(input) {
104
194
  kind: CommandKind.BuiltinFunction,
105
195
  description: "未配置 hstack,跳过解析采集结果",
106
196
  func: () => {
107
- console.warn("[解析采集结果] 未配置 hstack 工具,跳过 hstack 解析");
197
+ logger.warn("[解析采集结果] 未配置 hstack 工具,跳过 hstack 解析");
108
198
  },
109
199
  },
110
200
  ]),
@@ -117,17 +207,23 @@ function buildAnalysisPreDecodeCommands(input) {
117
207
  : [snapshotPerfFile];
118
208
  const { filePath, reason } = selectFirstValidPerfInput(candidates);
119
209
  if (!filePath) {
120
- console.error(`[选择 perf 输入] ${reason},放弃后续解析`);
210
+ logger.error(`[选择 perf 输入] ${reason},放弃后续解析`);
121
211
  return false;
122
212
  }
123
213
  ctx.set(PERF_INPUT_CONTEXT_KEY, filePath);
124
- console.info(`[选择 perf 输入] 使用文件: ${filePath}`);
214
+ logger.info(`[选择 perf 输入] 使用文件: ${filePath}`);
125
215
  },
126
216
  },
127
217
  ];
128
218
  }
219
+ /** 注入 monitor/collect/analysis 流水线及风险目标等派生命令 */
129
220
  export function applyOptions(ctx) {
130
- const { app = "", hstackToolPath = "", sourcemapDir = "", logKey = "pid", duration = "70", bufferSize = "512000", outputDir = String.raw `.\output`, traceFormatProfile = "default", } = ctx.options ?? {};
221
+ const { app = "", hstackToolPath = "", sourcemapDir = "", logKey = "pid", duration = "70", backtrackDelay = "80", bufferSize = "512000", outputDir = String.raw `.\output`, traceFormatProfile = "default", riskTargets = "all", skipPerfDedupe = false, skipBacktrack = false, skipNonBacktrack = false, dropFailedSamples = false, dryRun = false, } = ctx.options ?? {};
222
+ const backtrackDelaySec = Number(backtrackDelay);
223
+ if (!Number.isFinite(backtrackDelaySec) || backtrackDelaySec < 0) {
224
+ throw new Error(`[--backtrack-delay] 无效的秒数: ${JSON.stringify(backtrackDelay)},需为非负有限数值`);
225
+ }
226
+ const backgroundDelayMs = Math.round(backtrackDelaySec * 1000);
131
227
  const checkStateCommand = "hidumper -s 1901 -a '-p libforkall_plugin.z.so --list'";
132
228
  const hstackToolPathNormalized = hstackToolPath
133
229
  ? path.normalize(hstackToolPath)
@@ -136,44 +232,58 @@ export function applyOptions(ctx) {
136
232
  ? path.normalize(sourcemapDir)
137
233
  : "";
138
234
  const outputDirNormalized = path.normalize(outputDir);
139
- const outputDirWithSep = outputDirNormalized.endsWith(path.sep)
140
- ? outputDirNormalized
141
- : `${outputDirNormalized}${path.sep}`;
142
- const snapshotLogFile = path.join(outputDirNormalized, "snapshot_log.txt");
235
+ const workspaceDir = path.join(outputDirNormalized, WORKSPACE_SUBDIR);
236
+ const workspaceDirNormalized = path.normalize(workspaceDir);
237
+ const workspaceDirWithSep = workspaceDirNormalized.endsWith(path.sep)
238
+ ? workspaceDirNormalized
239
+ : `${workspaceDirNormalized}${path.sep}`;
143
240
  const perfTextDir = path.join(outputDirNormalized, "perf_txt");
144
- const snapshotPerfFile = path.join(perfTextDir, "snapshot_perf.data.txt");
145
- const parsedSnapshotPerfFile = path.join(outputDirNormalized, "_snapshot_perf.data.txt");
241
+ const perfTextDirNormalized = path.normalize(perfTextDir);
242
+ const perfTextDirWithSep = perfTextDirNormalized.endsWith(path.sep)
243
+ ? perfTextDirNormalized
244
+ : `${perfTextDirNormalized}${path.sep}`;
245
+ const selectedRiskTargets = parseRiskTargets(riskTargets).map((key) => RISK_TARGET_DEFINITIONS[key]);
246
+ const runBacktrackFS = !skipBacktrack &&
247
+ selectedRiskTargets.some((target) => target.key === "backtrack");
248
+ const snapshotLogFile = path.join(workspaceDirNormalized, "snapshot_log.txt");
249
+ const snapshotPerfFile = path.join(perfTextDirNormalized, "snapshot_perf.data.txt");
250
+ const parsedSnapshotPerfFile = path.join(workspaceDirNormalized, "_snapshot_perf.data.txt");
146
251
  const dumpStackTxt = path.join(outputDirNormalized, "dump_stack.txt");
147
252
  const dumpStackJson = path.join(outputDirNormalized, "dump_stack.json");
253
+ const dumpStackXlsx = path.join(outputDirNormalized, "dump_stack.xlsx");
148
254
  const start_app_command = `hidumper -s 1901 -a '-p libforkall_plugin.z.so --create 100 ${app}'`;
149
- if (!existsSync(outputDirNormalized)) {
150
- mkdirSync(outputDirNormalized, { recursive: true });
151
- }
152
- if (!existsSync(perfTextDir)) {
153
- mkdirSync(perfTextDir, { recursive: true });
255
+ if (!dryRun) {
256
+ if (!existsSync(outputDirNormalized)) {
257
+ mkdirSync(outputDirNormalized, { recursive: true });
258
+ }
259
+ if (!existsSync(workspaceDirNormalized)) {
260
+ mkdirSync(workspaceDirNormalized, { recursive: true });
261
+ }
262
+ if (!existsSync(perfTextDirNormalized)) {
263
+ mkdirSync(perfTextDirNormalized, { recursive: true });
264
+ }
154
265
  }
155
266
  const initEnvGroup = buildCommonInitEnvGroup({
156
267
  app,
157
268
  snapshotLogFile,
158
269
  checkStateCommand,
159
- permissionCommands: [
160
- 'hdc shell "chmod 755 /sys/kernel/tracing/events/snapshot/vfs_snapshot_dump_monitor && chmod 666 /sys/kernel/tracing/events/snapshot/vfs_snapshot_dump_monitor/enable"',
161
- 'hdc shell "chmod 755 /sys/kernel/tracing/events/snapshot/hmb_forkall_report_image_failure && chmod 666 /sys/kernel/tracing/events/snapshot/hmb_forkall_report_image_failure/enable"',
162
- ],
270
+ permissionCommands: buildPermissionCommands(selectedRiskTargets),
163
271
  });
164
272
  const monitorGroup = buildMonitorGroup({
165
273
  logKey,
166
274
  bufferSize,
167
275
  duration,
276
+ backgroundDelayMs,
168
277
  app,
169
278
  snapshotLogFile,
170
279
  startAppCommand: start_app_command,
171
280
  checkStateCommand,
281
+ riskTargets: selectedRiskTargets,
172
282
  });
173
283
  const collectGroup = buildCommonCollectGroup({
174
284
  checkStateCommand,
175
- snapshotPerfReceiveDirWithSep: perfTextDir,
176
- outputDirWithSep,
285
+ snapshotPerfReceiveDirWithSep: perfTextDirWithSep,
286
+ outputDirWithSep: workspaceDirWithSep,
177
287
  });
178
288
  const analysisGroup = buildCommonAnalysisGroup({
179
289
  app,
@@ -183,17 +293,28 @@ export function applyOptions(ctx) {
183
293
  snapshotPerfFile,
184
294
  parsedSnapshotPerfFile,
185
295
  hstackToolPathNormalized,
186
- perfTextDir,
187
- outputDirNormalized,
296
+ perfTextDir: perfTextDirNormalized,
297
+ workspaceDirNormalized,
188
298
  sourcemapDirNormalized,
189
299
  }),
190
300
  decodeInput: { inputContextKey: PERF_INPUT_CONTEXT_KEY },
191
301
  dumpStackTxt,
192
302
  dumpStackJson,
303
+ dumpStackXlsx,
193
304
  traceFormatProfile,
194
305
  decodeStageName: "镜像失效风险栈分析",
195
306
  missingInputMessage: "[镜像失效风险栈分析] 未选择到可用 perf 输入文件,跳过处理",
307
+ skipDedupePerfData: skipPerfDedupe,
308
+ runBacktrackFS,
309
+ skipNonBacktrack,
310
+ dropFailedSamples,
196
311
  });
312
+ logger.info(`[风险抓取目标] ${selectedRiskTargets.map((target) => target.displayName).join("、")}`);
313
+ logger.info(`[backtrack] ${!runBacktrackFS
314
+ ? "已跳过后解码回溯关联"
315
+ : skipNonBacktrack
316
+ ? "解码后将执行回溯关联(backtrackFS,非 FS revoked 不保留)"
317
+ : "解码后将执行回溯关联(backtrackFS,保留非 FS revoked)"}`);
197
318
  const resultGroups = {
198
319
  init: initEnvGroup,
199
320
  monitor: monitorGroup,
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../commands/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../commands/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type Groups } from "../src/types.js";
2
+ /**
3
+ * `CommandContext` 与跨组 `{{var}}` 演示。
4
+ *
5
+ * CLI:`npm run dev -- context-demo` / `node dist/cli.js context-demo`;别名 `context_demo`。
6
+ * 库用法:`snapshot-checker` + `snapshot-checker/demos/context-demo`,详 `demos/consumer-app`。
7
+ */
8
+ export declare const groups: Groups;
9
+ export declare const defaultGroupOrder: string[];
10
+ //# sourceMappingURL=context-demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-demo.d.ts","sourceRoot":"","sources":["../../demos/context-demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,MAAM,EACZ,MAAM,iBAAiB,CAAC;AAazB;;;;;GAKG;AACH,eAAO,MAAM,MAAM,EAAE,MA8CpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,EAKrC,CAAC"}
@@ -1,20 +1,17 @@
1
1
  import { CommandKind, getCurrentPlatformKind, } from "../src/types.js";
2
- import { buildTag, buildUserGreeting } from "../src/lib/foo.js";
3
- /** 与当前 OS 一致,避免示例在非 macOS 上被整组跳过 */
2
+ function demoGreeting(user) {
3
+ return `demo says hi to ${user}`;
4
+ }
5
+ function demoTag(prefix) {
6
+ return `${prefix}:context-demo`;
7
+ }
8
+ /** 与非 macOS 主机对齐,以免整组被平台过滤 */
4
9
  const kind = getCurrentPlatformKind();
5
10
  /**
6
- * 示例场景:演示如何在命令之间传递变量(含跨不同 group)。
11
+ * `CommandContext` 与跨组 `{{var}}` 演示。
7
12
  *
8
- * 使用方式(开发态):
9
- * npm run dev -- context_demo
10
- *
11
- * 使用方式(构建后):
12
- * node dist/cli.js context_demo
13
- *
14
- * 作为 npm 包被外部项目引用时:
15
- * import { resolveScenario, runScenarioGroups } from 'snapshot-checker';
16
- * import * as contextDemo from 'snapshot-checker/commands/context_demo';
17
- * 完整示例见 demos/consumer-app(需先发布包并 npm install snapshot-checker)。
13
+ * CLI:`npm run dev -- context-demo` / `node dist/cli.js context-demo`;别名 `context_demo`。
14
+ * 库用法:`snapshot-checker` + `snapshot-checker/demos/context-demo`,详 `demos/consumer-app`。
18
15
  */
19
16
  export const groups = {
20
17
  getUser: [
@@ -37,17 +34,17 @@ export const groups = {
37
34
  builtinFn: [
38
35
  {
39
36
  kind: CommandKind.BuiltinFunction,
40
- description: "调用 lib/foo 的工具函数写入变量",
37
+ description: "演示:在同文件内小工具函数写入上下文变量",
41
38
  func: (ctx) => {
42
39
  const user = ctx.get("user") ?? "unknown";
43
- ctx.set("builtinTag", buildTag("context_demo"));
44
- ctx.set("fromFoo", buildUserGreeting(user));
40
+ ctx.set("builtinTag", demoTag("context-demo"));
41
+ ctx.set("demoGreet", demoGreeting(user));
45
42
  },
46
43
  },
47
44
  {
48
45
  kind,
49
46
  description: "读取内置函数写入的变量",
50
- run: 'echo "{{builtinTag}} | {{fromFoo}}"',
47
+ run: 'echo "{{builtinTag}} | {{demoGreet}}"',
51
48
  },
52
49
  ],
53
50
  builtinFail: [
@@ -69,4 +66,4 @@ export const defaultGroupOrder = [
69
66
  "builtinFn",
70
67
  "builtinFail",
71
68
  ];
72
- //# sourceMappingURL=context_demo.js.map
69
+ //# sourceMappingURL=context-demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-demo.js","sourceRoot":"","sources":["../../demos/context-demo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,sBAAsB,GAGvB,MAAM,iBAAiB,CAAC;AAEzB,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,mBAAmB,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,OAAO,CAAC,MAAc;IAC7B,OAAO,GAAG,MAAM,eAAe,CAAC;AAClC,CAAC;AAED,8BAA8B;AAC9B,MAAM,IAAI,GAAG,sBAAsB,EAAE,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,OAAO,EAAE;QACP;YACE,IAAI;YACJ,WAAW,EAAE,oBAAoB;YACjC,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE;gBACZ,IAAI,EAAE,MAAM;aACb;SACF;KACF;IACD,KAAK,EAAE;QACL;YACE,IAAI;YACJ,WAAW,EAAE,eAAe;YAC5B,GAAG,EAAE,wBAAwB;SAC9B;KACF;IACD,SAAS,EAAE;QACT;YACE,IAAI,EAAE,WAAW,CAAC,eAAe;YACjC,WAAW,EAAE,sBAAsB;YACnC,IAAI,EAAE,CAAC,GAAmB,EAAE,EAAE;gBAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAS,MAAM,CAAC,IAAI,SAAS,CAAC;gBAClD,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3C,CAAC;SACF;QACD;YACE,IAAI;YACJ,WAAW,EAAE,aAAa;YAC1B,GAAG,EAAE,uCAAuC;SAC7C;KACF;IACD,WAAW,EAAE;QACX;YACE,IAAI,EAAE,WAAW,CAAC,eAAe;YACjC,WAAW,EAAE,uCAAuC;YACpD,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK;SAClB;QACD;YACE,IAAI;YACJ,WAAW,EAAE,6BAA6B;YAC1C,GAAG,EAAE,qDAAqD;SAC3D;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAa;IACzC,SAAS;IACT,OAAO;IACP,WAAW;IACX,aAAa;CACd,CAAC"}
@@ -1,7 +1,5 @@
1
1
  import type { Groups } from "../src/types.js";
2
- /**
3
- * Mac 示例场景:仅在 macOS 下执行,接收 --app 参数,参数不为空时打印 app。
4
- */
2
+ /** 仅 macOS 执行;可选 `--app`,非空时附加打印步骤 */
5
3
  export declare const groups: Groups;
6
4
  export declare const defaultGroupOrder: string[];
7
5
  export declare const options: {