frontend-guardian-core 2.6.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 (152) hide show
  1. package/LICENSE +21 -0
  2. package/bin/fg-core.js +1238 -0
  3. package/bin/watch-mode.js +123 -0
  4. package/dist/engine/cache.d.ts +68 -0
  5. package/dist/engine/cache.d.ts.map +1 -0
  6. package/dist/engine/cache.js +164 -0
  7. package/dist/engine/cache.js.map +1 -0
  8. package/dist/engine/rule-engine.d.ts +135 -0
  9. package/dist/engine/rule-engine.d.ts.map +1 -0
  10. package/dist/engine/rule-engine.js +716 -0
  11. package/dist/engine/rule-engine.js.map +1 -0
  12. package/dist/formatters/github-annotation.d.ts +36 -0
  13. package/dist/formatters/github-annotation.d.ts.map +1 -0
  14. package/dist/formatters/github-annotation.js +122 -0
  15. package/dist/formatters/github-annotation.js.map +1 -0
  16. package/dist/formatters/pr-comment.d.ts +43 -0
  17. package/dist/formatters/pr-comment.d.ts.map +1 -0
  18. package/dist/formatters/pr-comment.js +171 -0
  19. package/dist/formatters/pr-comment.js.map +1 -0
  20. package/dist/formatters/sarif.d.ts +104 -0
  21. package/dist/formatters/sarif.d.ts.map +1 -0
  22. package/dist/formatters/sarif.js +130 -0
  23. package/dist/formatters/sarif.js.map +1 -0
  24. package/dist/index.d.ts +46 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +108 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/integrations/base.d.ts +44 -0
  29. package/dist/integrations/base.d.ts.map +1 -0
  30. package/dist/integrations/base.js +104 -0
  31. package/dist/integrations/base.js.map +1 -0
  32. package/dist/integrations/eslint.d.ts +8 -0
  33. package/dist/integrations/eslint.d.ts.map +1 -0
  34. package/dist/integrations/eslint.js +67 -0
  35. package/dist/integrations/eslint.js.map +1 -0
  36. package/dist/integrations/formatter.d.ts +35 -0
  37. package/dist/integrations/formatter.d.ts.map +1 -0
  38. package/dist/integrations/formatter.js +182 -0
  39. package/dist/integrations/formatter.js.map +1 -0
  40. package/dist/integrations/index.d.ts +17 -0
  41. package/dist/integrations/index.d.ts.map +1 -0
  42. package/dist/integrations/index.js +25 -0
  43. package/dist/integrations/index.js.map +1 -0
  44. package/dist/integrations/stylelint.d.ts +8 -0
  45. package/dist/integrations/stylelint.d.ts.map +1 -0
  46. package/dist/integrations/stylelint.js +59 -0
  47. package/dist/integrations/stylelint.js.map +1 -0
  48. package/dist/integrations/typescript.d.ts +8 -0
  49. package/dist/integrations/typescript.d.ts.map +1 -0
  50. package/dist/integrations/typescript.js +92 -0
  51. package/dist/integrations/typescript.js.map +1 -0
  52. package/dist/rules/registry.d.ts +83 -0
  53. package/dist/rules/registry.d.ts.map +1 -0
  54. package/dist/rules/registry.js +205 -0
  55. package/dist/rules/registry.js.map +1 -0
  56. package/dist/scanners/a11y-scanner.d.ts +14 -0
  57. package/dist/scanners/a11y-scanner.d.ts.map +1 -0
  58. package/dist/scanners/a11y-scanner.js +781 -0
  59. package/dist/scanners/a11y-scanner.js.map +1 -0
  60. package/dist/scanners/component-scanner.d.ts +12 -0
  61. package/dist/scanners/component-scanner.d.ts.map +1 -0
  62. package/dist/scanners/component-scanner.js +304 -0
  63. package/dist/scanners/component-scanner.js.map +1 -0
  64. package/dist/scanners/cross-file-scanner.d.ts +18 -0
  65. package/dist/scanners/cross-file-scanner.d.ts.map +1 -0
  66. package/dist/scanners/cross-file-scanner.js +684 -0
  67. package/dist/scanners/cross-file-scanner.js.map +1 -0
  68. package/dist/scanners/hooks-scanner.d.ts +15 -0
  69. package/dist/scanners/hooks-scanner.d.ts.map +1 -0
  70. package/dist/scanners/hooks-scanner.js +670 -0
  71. package/dist/scanners/hooks-scanner.js.map +1 -0
  72. package/dist/scanners/i18n-scanner.d.ts +13 -0
  73. package/dist/scanners/i18n-scanner.d.ts.map +1 -0
  74. package/dist/scanners/i18n-scanner.js +535 -0
  75. package/dist/scanners/i18n-scanner.js.map +1 -0
  76. package/dist/scanners/naming-scanner.d.ts +19 -0
  77. package/dist/scanners/naming-scanner.d.ts.map +1 -0
  78. package/dist/scanners/naming-scanner.js +746 -0
  79. package/dist/scanners/naming-scanner.js.map +1 -0
  80. package/dist/scanners/performance-scanner.d.ts +7 -0
  81. package/dist/scanners/performance-scanner.d.ts.map +1 -0
  82. package/dist/scanners/performance-scanner.js +402 -0
  83. package/dist/scanners/performance-scanner.js.map +1 -0
  84. package/dist/scanners/platform-scanner.d.ts +15 -0
  85. package/dist/scanners/platform-scanner.d.ts.map +1 -0
  86. package/dist/scanners/platform-scanner.js +320 -0
  87. package/dist/scanners/platform-scanner.js.map +1 -0
  88. package/dist/scanners/security-scanner.d.ts +7 -0
  89. package/dist/scanners/security-scanner.d.ts.map +1 -0
  90. package/dist/scanners/security-scanner.js +349 -0
  91. package/dist/scanners/security-scanner.js.map +1 -0
  92. package/dist/scanners/svelte-scanner.d.ts +14 -0
  93. package/dist/scanners/svelte-scanner.d.ts.map +1 -0
  94. package/dist/scanners/svelte-scanner.js +228 -0
  95. package/dist/scanners/svelte-scanner.js.map +1 -0
  96. package/dist/types.d.ts +343 -0
  97. package/dist/types.d.ts.map +1 -0
  98. package/dist/types.js +6 -0
  99. package/dist/types.js.map +1 -0
  100. package/dist/utils/ast-parser.d.ts +21 -0
  101. package/dist/utils/ast-parser.d.ts.map +1 -0
  102. package/dist/utils/ast-parser.js +119 -0
  103. package/dist/utils/ast-parser.js.map +1 -0
  104. package/dist/utils/baseline.d.ts +89 -0
  105. package/dist/utils/baseline.d.ts.map +1 -0
  106. package/dist/utils/baseline.js +156 -0
  107. package/dist/utils/baseline.js.map +1 -0
  108. package/dist/utils/ci-generator.d.ts +34 -0
  109. package/dist/utils/ci-generator.d.ts.map +1 -0
  110. package/dist/utils/ci-generator.js +194 -0
  111. package/dist/utils/ci-generator.js.map +1 -0
  112. package/dist/utils/common.d.ts +8 -0
  113. package/dist/utils/common.d.ts.map +1 -0
  114. package/dist/utils/common.js +38 -0
  115. package/dist/utils/common.js.map +1 -0
  116. package/dist/utils/concurrent.d.ts +16 -0
  117. package/dist/utils/concurrent.d.ts.map +1 -0
  118. package/dist/utils/concurrent.js +49 -0
  119. package/dist/utils/concurrent.js.map +1 -0
  120. package/dist/utils/config-loader.d.ts +8 -0
  121. package/dist/utils/config-loader.d.ts.map +1 -0
  122. package/dist/utils/config-loader.js +154 -0
  123. package/dist/utils/config-loader.js.map +1 -0
  124. package/dist/utils/fix-bot.d.ts +36 -0
  125. package/dist/utils/fix-bot.d.ts.map +1 -0
  126. package/dist/utils/fix-bot.js +274 -0
  127. package/dist/utils/fix-bot.js.map +1 -0
  128. package/dist/utils/git-hooks.d.ts +55 -0
  129. package/dist/utils/git-hooks.d.ts.map +1 -0
  130. package/dist/utils/git-hooks.js +318 -0
  131. package/dist/utils/git-hooks.js.map +1 -0
  132. package/dist/utils/history-report.d.ts +72 -0
  133. package/dist/utils/history-report.d.ts.map +1 -0
  134. package/dist/utils/history-report.js +144 -0
  135. package/dist/utils/history-report.js.map +1 -0
  136. package/dist/utils/init-config.d.ts +23 -0
  137. package/dist/utils/init-config.d.ts.map +1 -0
  138. package/dist/utils/init-config.js +146 -0
  139. package/dist/utils/init-config.js.map +1 -0
  140. package/dist/utils/pr-publisher.d.ts +64 -0
  141. package/dist/utils/pr-publisher.d.ts.map +1 -0
  142. package/dist/utils/pr-publisher.js +265 -0
  143. package/dist/utils/pr-publisher.js.map +1 -0
  144. package/dist/utils/project-detector.d.ts +20 -0
  145. package/dist/utils/project-detector.d.ts.map +1 -0
  146. package/dist/utils/project-detector.js +342 -0
  147. package/dist/utils/project-detector.js.map +1 -0
  148. package/dist/utils/report-uploader.d.ts +35 -0
  149. package/dist/utils/report-uploader.d.ts.map +1 -0
  150. package/dist/utils/report-uploader.js +106 -0
  151. package/dist/utils/report-uploader.js.map +1 -0
  152. package/package.json +78 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming-scanner.js","sourceRoot":"","sources":["../../src/scanners/naming-scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 性能规则 Scanner
3
+ * 参考 Vercel React Best Practices 的 57 条规则
4
+ */
5
+ import type { Rule } from "../types.js";
6
+ export declare const performanceRules: Rule[];
7
+ //# sourceMappingURL=performance-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance-scanner.d.ts","sourceRoot":"","sources":["../../src/scanners/performance-scanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAsB,MAAM,YAAY,CAAC;AAuB3D,eAAO,MAAM,gBAAgB,EAAE,IAAI,EAkNlC,CAAC"}
@@ -0,0 +1,402 @@
1
+ "use strict";
2
+ /**
3
+ * 性能规则 Scanner
4
+ * 参考 Vercel React Best Practices 的 57 条规则
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.performanceRules = void 0;
11
+ const traverse_1 = __importDefault(require("@babel/traverse"));
12
+ const common_js_1 = require("../utils/common.js");
13
+ /** 组件库入口包名 */
14
+ const BARREL_PACKAGES = [
15
+ "antd",
16
+ "@ant-design/react-native",
17
+ "ant-design-vue",
18
+ "element-plus",
19
+ "@mui/material",
20
+ "vuetify",
21
+ "@nutui/nutui-react",
22
+ "@nutui/nutui",
23
+ "tdesign-react",
24
+ "tdesign-vue-next",
25
+ "@arco-design/web-react",
26
+ "naive-ui",
27
+ "quasar",
28
+ "primevue",
29
+ "primereact",
30
+ "bootstrap-vue-next",
31
+ ];
32
+ exports.performanceRules = [
33
+ {
34
+ id: "perf-avoid-waterfall",
35
+ name: "避免请求瀑布",
36
+ description: "不要连续使用 await 获取独立数据,应并行发起请求",
37
+ severity: "warning",
38
+ category: "performance",
39
+ defaultEnabled: true,
40
+ docsUrl: "https://github.com/wzm111/frontend-guardian/blob/main/docs/rules/perf-avoid-waterfall.md",
41
+ frameworks: ["react", "nextjs", "vue", "nuxt"],
42
+ execute(context) {
43
+ const issues = [];
44
+ const ast = context.utils.parseAST(context.source, {
45
+ ext: (0, common_js_1.getFileExt)(context.filePath),
46
+ });
47
+ if (!ast)
48
+ return issues;
49
+ (0, traverse_1.default)(ast, {
50
+ // 检测函数体内的连续 await
51
+ FunctionDeclaration(path) {
52
+ checkConsecutiveAwait(path.node.body, issues, context.filePath);
53
+ },
54
+ FunctionExpression(path) {
55
+ checkConsecutiveAwait(path.node.body, issues, context.filePath);
56
+ },
57
+ ArrowFunctionExpression(path) {
58
+ if (path.node.body.type === "BlockStatement") {
59
+ checkConsecutiveAwait(path.node.body, issues, context.filePath);
60
+ }
61
+ },
62
+ });
63
+ return issues;
64
+ },
65
+ },
66
+ {
67
+ id: "perf-dynamic-import",
68
+ name: "大组件懒加载",
69
+ description: "超过 50KB 的组件应使用动态导入(React.lazy / defineAsyncComponent)",
70
+ severity: "suggestion",
71
+ category: "performance",
72
+ defaultEnabled: true,
73
+ docsUrl: "https://github.com/wzm111/frontend-guardian/blob/main/docs/rules/perf-dynamic-import.md",
74
+ frameworks: ["react", "nextjs", "vue"],
75
+ execute(context) {
76
+ const issues = [];
77
+ const source = context.source;
78
+ // 1. 检查文件大小(源码长度 > 50KB ≈ 50000 字符)
79
+ const FILE_SIZE_THRESHOLD = 50000;
80
+ if (source.length < FILE_SIZE_THRESHOLD) {
81
+ return issues;
82
+ }
83
+ // 2. 检查是否已使用动态导入
84
+ const hasDynamicImport = /React\.lazy\s*\(|lazy\s*\(\s*\(\s*\)\s*=>\s*import\s*\(/i.test(source) ||
85
+ /defineAsyncComponent\s*\(/i.test(source) ||
86
+ /import\s*\(\s*['"][^'"]+['"]\s*\)/.test(source);
87
+ if (hasDynamicImport) {
88
+ return issues;
89
+ }
90
+ // 3. 检测是否为路由页面组件(通常文件较大)
91
+ const isPageFile = /pages?\//i.test(context.filePath) ||
92
+ /views?\//i.test(context.filePath) ||
93
+ /routes?\//i.test(context.filePath);
94
+ if (!isPageFile) {
95
+ return issues;
96
+ }
97
+ const sizeKB = Math.round(source.length / 1024);
98
+ issues.push({
99
+ ruleId: "perf-dynamic-import",
100
+ title: `页面组件体积较大 (${sizeKB}KB),建议使用动态导入`,
101
+ description: `该文件源码 ${sizeKB}KB,超过 ${Math.round(FILE_SIZE_THRESHOLD / 1024)}KB 建议阈值。路由级组件应使用 React.lazy()(React)或 defineAsyncComponent()(Vue)实现懒加载,减少首屏 bundle 体积`,
102
+ severity: "suggestion",
103
+ file: context.filePath,
104
+ line: 1,
105
+ column: 1,
106
+ source: `文件大小: ${sizeKB}KB`,
107
+ fix: {
108
+ text: suggestLazyImport(context.filePath),
109
+ start: { line: 1, column: 1 },
110
+ end: { line: 1, column: 1 },
111
+ confidence: "low",
112
+ description: "请确认懒加载路径和变量名正确",
113
+ },
114
+ });
115
+ return issues;
116
+ },
117
+ },
118
+ {
119
+ id: "perf-avoid-barrel-import",
120
+ name: "避免整库导入",
121
+ description: "不要从组件库入口导入,应从子模块导入",
122
+ severity: "warning",
123
+ category: "performance",
124
+ defaultEnabled: true,
125
+ docsUrl: "https://github.com/wzm111/frontend-guardian/blob/main/docs/rules/perf-avoid-barrel-import.md",
126
+ frameworks: ["react", "vue", "nextjs", "nuxt"],
127
+ execute(context) {
128
+ const issues = [];
129
+ const ast = context.utils.parseAST(context.source, {
130
+ ext: (0, common_js_1.getFileExt)(context.filePath),
131
+ });
132
+ if (!ast)
133
+ return issues;
134
+ (0, traverse_1.default)(ast, {
135
+ ImportDeclaration(path) {
136
+ const source = path.node.source.value;
137
+ // 检测整库导入
138
+ for (const pkg of BARREL_PACKAGES) {
139
+ if (source === pkg) {
140
+ // 跳过只有 1 个导入的情况(但仍在 Warning 级别提示)
141
+ const { line, column } = path.node.loc?.start || { line: 0, column: 0 };
142
+ issues.push({
143
+ ruleId: "perf-avoid-barrel-import",
144
+ title: "避免从组件库入口导入",
145
+ description: `从 "${pkg}" 入口导入会导致整库被打包,建议改为子模块导入(如 "${pkg}/es/button")`,
146
+ severity: "warning",
147
+ file: context.filePath,
148
+ line,
149
+ column,
150
+ source: `import { ... } from '${pkg}';`,
151
+ fix: {
152
+ text: suggestSubmoduleImport(pkg, path.node.specifiers),
153
+ start: { line, column },
154
+ end: { line, column: column + path.node.source.value.length + 2 },
155
+ confidence: "medium",
156
+ description: "请确认子模块路径与项目使用的构建工具兼容",
157
+ },
158
+ });
159
+ break;
160
+ }
161
+ }
162
+ },
163
+ });
164
+ return issues;
165
+ },
166
+ },
167
+ {
168
+ id: "perf-memo-expensive",
169
+ name: "昂贵计算使用 memo",
170
+ description: "渲染中的复杂计算(map/filter/reduce/sort)应使用 useMemo / computed 缓存",
171
+ severity: "suggestion",
172
+ category: "performance",
173
+ defaultEnabled: true,
174
+ docsUrl: "https://github.com/wzm111/frontend-guardian/blob/main/docs/rules/perf-memo-expensive.md",
175
+ frameworks: ["react", "nextjs", "vue"],
176
+ execute(context) {
177
+ const issues = [];
178
+ const ast = context.utils.parseAST(context.source, {
179
+ ext: (0, common_js_1.getFileExt)(context.filePath),
180
+ });
181
+ if (!ast)
182
+ return issues;
183
+ // 昂贵的数组方法
184
+ const expensiveMethods = new Set([
185
+ "map",
186
+ "filter",
187
+ "reduce",
188
+ "sort",
189
+ "find",
190
+ "findIndex",
191
+ "every",
192
+ "some",
193
+ "flatMap",
194
+ "groupBy",
195
+ ]);
196
+ (0, traverse_1.default)(ast, {
197
+ // 检测函数组件/方法中的昂贵计算
198
+ FunctionDeclaration(path) {
199
+ checkExpensiveCalls(path.node.body, issues, context.filePath, expensiveMethods);
200
+ },
201
+ FunctionExpression(path) {
202
+ checkExpensiveCalls(path.node.body, issues, context.filePath, expensiveMethods);
203
+ },
204
+ ArrowFunctionExpression(path) {
205
+ if (path.node.body.type === "BlockStatement") {
206
+ checkExpensiveCalls(path.node.body, issues, context.filePath, expensiveMethods);
207
+ }
208
+ else {
209
+ // 直接返回表达式的箭头函数
210
+ checkExpensiveExpression(path.node.body, issues, context.filePath, expensiveMethods);
211
+ }
212
+ },
213
+ ClassMethod(path) {
214
+ if (path.node.key.type === "Identifier" && path.node.key.name === "render") {
215
+ checkExpensiveCalls(path.node.body, issues, context.filePath, expensiveMethods);
216
+ }
217
+ },
218
+ });
219
+ return issues;
220
+ },
221
+ },
222
+ ];
223
+ // ============================================================================
224
+ // 辅助函数
225
+ // ============================================================================
226
+ /** 检测函数体内的连续 await */
227
+ function checkConsecutiveAwait(body, issues, filePath) {
228
+ if (!body?.body || !Array.isArray(body.body))
229
+ return;
230
+ const statements = body.body;
231
+ const awaitStmts = [];
232
+ for (const stmt of statements) {
233
+ // 检查是否是 await 赋值语句
234
+ if (stmt.type === "VariableDeclaration") {
235
+ let hasAwait = false;
236
+ let line = 0;
237
+ let column = 0;
238
+ for (const decl of stmt.declarations) {
239
+ if (decl.init?.type === "AwaitExpression") {
240
+ hasAwait = true;
241
+ line = decl.init.loc?.start?.line || 0;
242
+ column = decl.init.loc?.start?.column || 0;
243
+ }
244
+ }
245
+ if (hasAwait) {
246
+ awaitStmts.push({
247
+ line,
248
+ column,
249
+ source: `await ...`,
250
+ });
251
+ }
252
+ else {
253
+ // 不是 await 语句,重置计数
254
+ if (awaitStmts.length >= 2) {
255
+ reportWaterfall(issues, filePath, awaitStmts);
256
+ }
257
+ awaitStmts.length = 0;
258
+ }
259
+ }
260
+ else {
261
+ // 不是变量声明,重置计数
262
+ if (awaitStmts.length >= 2) {
263
+ reportWaterfall(issues, filePath, awaitStmts);
264
+ }
265
+ awaitStmts.length = 0;
266
+ }
267
+ }
268
+ // 检查末尾
269
+ if (awaitStmts.length >= 2) {
270
+ reportWaterfall(issues, filePath, awaitStmts);
271
+ }
272
+ }
273
+ /** 报告请求瀑布问题 */
274
+ function reportWaterfall(issues, filePath, awaitStmts) {
275
+ const first = awaitStmts[0];
276
+ issues.push({
277
+ ruleId: "perf-avoid-waterfall",
278
+ title: "检测到请求瀑布",
279
+ description: `发现 ${awaitStmts.length} 个连续的 await,总耗时 = 各请求之和。建议使用 Promise.all() 并行`,
280
+ severity: "warning",
281
+ file: filePath,
282
+ line: first.line,
283
+ column: first.column,
284
+ source: first.source,
285
+ });
286
+ }
287
+ /** 建议懒加载导入代码 */
288
+ function suggestLazyImport(filePath) {
289
+ const ext = (0, common_js_1.getFileExt)(filePath);
290
+ const baseName = filePath.replace(/^.*[\\/]/, "").replace(ext, "");
291
+ // React
292
+ if (ext.match(/\.tsx?/)) {
293
+ return `const ${baseName} = React.lazy(() => import('./${baseName}${ext}'));`;
294
+ }
295
+ // Vue
296
+ if (ext === ".vue") {
297
+ return `const ${baseName} = defineAsyncComponent(() => import('./${baseName}${ext}'));`;
298
+ }
299
+ return `// TODO: 使用框架对应的懒加载方式导入该组件`;
300
+ }
301
+ /** 建议子模块导入 */
302
+ function suggestSubmoduleImport(pkg, specifiers) {
303
+ const imports = specifiers
304
+ .filter((s) => s.type === "ImportSpecifier" && s.local?.type === "Identifier")
305
+ .map((s) => {
306
+ const name = s.local.name;
307
+ const kebab = name
308
+ .replace(/([A-Z])/g, "-$1")
309
+ .toLowerCase()
310
+ .replace(/^-/, "");
311
+ return `import ${name} from '${pkg}/es/${kebab}';`;
312
+ })
313
+ .join("\n");
314
+ return imports || `// TODO: 手动改为子模块导入`;
315
+ }
316
+ /** 检测函数体中的昂贵计算 */
317
+ function checkExpensiveCalls(body, issues, filePath, expensiveMethods) {
318
+ if (!body)
319
+ return;
320
+ (0, traverse_1.default)(body, {
321
+ CallExpression(path) {
322
+ // 跳过 useMemo / useCallback / computed 内部的调用
323
+ if (isInsideMemo(path))
324
+ return;
325
+ const callee = path.node.callee;
326
+ let methodName = null;
327
+ // 检测: array.map(), array.filter() 等
328
+ if (callee.type === "MemberExpression" && callee.property.type === "Identifier") {
329
+ methodName = callee.property.name;
330
+ }
331
+ // 检测: lodash _.map(), _.filter() 等
332
+ if (callee.type === "MemberExpression" &&
333
+ callee.object.type === "Identifier" &&
334
+ callee.object.name === "_" &&
335
+ callee.property.type === "Identifier") {
336
+ methodName = callee.property.name;
337
+ }
338
+ if (methodName && expensiveMethods.has(methodName)) {
339
+ const { line, column } = path.node.loc?.start || { line: 0, column: 0 };
340
+ // 检查是否是简单的单元素操作(如 [1,2,3].map(...))
341
+ const obj = callee.object;
342
+ if (obj?.type === "ArrayExpression" && obj.elements.length <= 3) {
343
+ return; // 小数组操作,不提示
344
+ }
345
+ issues.push({
346
+ ruleId: "perf-memo-expensive",
347
+ title: `渲染中的 ${methodName}() 建议缓存`,
348
+ description: `在组件渲染中直接调用 ${methodName}() 会在每次渲染时重新执行。建议使用 useMemo(React)或 computed(Vue)缓存结果`,
349
+ severity: "suggestion",
350
+ file: filePath,
351
+ line,
352
+ column,
353
+ source: `${methodName}(...)`,
354
+ });
355
+ }
356
+ },
357
+ }, body);
358
+ }
359
+ /** 检测直接返回表达式中的昂贵计算 */
360
+ function checkExpensiveExpression(expr, issues, filePath, expensiveMethods) {
361
+ if (!expr)
362
+ return;
363
+ // 直接返回表达式: () => items.map(...)
364
+ if (expr.type === "CallExpression") {
365
+ const callee = expr.callee;
366
+ if (callee.type === "MemberExpression" &&
367
+ callee.property.type === "Identifier" &&
368
+ expensiveMethods.has(callee.property.name)) {
369
+ const { line, column } = expr.loc?.start || { line: 0, column: 0 };
370
+ issues.push({
371
+ ruleId: "perf-memo-expensive",
372
+ title: `渲染中的 ${callee.property.name}() 建议缓存`,
373
+ description: `在组件渲染中直接调用 ${callee.property.name}() 会在每次渲染时重新执行。建议使用 useMemo(React)或 computed(Vue)缓存结果`,
374
+ severity: "suggestion",
375
+ file: filePath,
376
+ line,
377
+ column,
378
+ source: `${callee.property.name}(...)`,
379
+ });
380
+ }
381
+ }
382
+ }
383
+ /** 检查是否在 useMemo / useCallback / computed 内部 */
384
+ function isInsideMemo(path) {
385
+ let current = path.parentPath;
386
+ while (current) {
387
+ if (current.isCallExpression()) {
388
+ const callee = current.node.callee;
389
+ if (callee.type === "Identifier" && ["useMemo", "useCallback", "computed", "memo"].includes(callee.name)) {
390
+ return true;
391
+ }
392
+ if (callee.type === "MemberExpression" &&
393
+ callee.property.type === "Identifier" &&
394
+ ["computed", "memo"].includes(callee.property.name)) {
395
+ return true;
396
+ }
397
+ }
398
+ current = current.parentPath;
399
+ }
400
+ return false;
401
+ }
402
+ //# sourceMappingURL=performance-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance-scanner.js","sourceRoot":"","sources":["../../src/scanners/performance-scanner.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAGH,+DAAuC;AAEvC,iDAA+C;AAE/C,cAAc;AACd,MAAM,eAAe,GAAG;IACpB,MAAM;IACN,0BAA0B;IAC1B,gBAAgB;IAChB,cAAc;IACd,eAAe;IACf,SAAS;IACT,oBAAoB;IACpB,cAAc;IACd,eAAe;IACf,kBAAkB;IAClB,wBAAwB;IACxB,UAAU;IACV,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,oBAAoB;CACvB,CAAC;AAEW,QAAA,gBAAgB,GAAW;IACpC;QACI,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,0FAA0F;QACnG,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC;QAC9C,OAAO,CAAC,OAAoB;YACxB,MAAM,MAAM,GAAY,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC/C,GAAG,EAAE,IAAA,sBAAU,EAAC,OAAO,CAAC,QAAQ,CAAC;aACpC,CAA4B,CAAC;YAE9B,IAAI,CAAC,GAAG;gBAAE,OAAO,MAAM,CAAC;YAExB,IAAA,kBAAQ,EAAC,GAAG,EAAE;gBACV,kBAAkB;gBAClB,mBAAmB,CAAC,IAAI;oBACpB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpE,CAAC;gBACD,kBAAkB,CAAC,IAAI;oBACnB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpE,CAAC;gBACD,uBAAuB,CAAC,IAAI;oBACxB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;wBAC3C,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACpE,CAAC;gBACL,CAAC;aACJ,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAClB,CAAC;KACJ;IAED;QACI,EAAE,EAAE,qBAAqB;QACzB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uDAAuD;QACpE,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,yFAAyF;QAClG,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;QACtC,OAAO,CAAC,OAAoB;YACxB,MAAM,MAAM,GAAY,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAE9B,oCAAoC;YACpC,MAAM,mBAAmB,GAAG,KAAK,CAAC;YAClC,IAAI,MAAM,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;gBACtC,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,iBAAiB;YACjB,MAAM,gBAAgB,GAClB,0DAA0D,CAAC,IAAI,CAAC,MAAM,CAAC;gBACvE,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC;gBACzC,mCAAmC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAErD,IAAI,gBAAgB,EAAE,CAAC;gBACnB,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,yBAAyB;YACzB,MAAM,UAAU,GACZ,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAClC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAClC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAExC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,qBAAqB;gBAC7B,KAAK,EAAE,aAAa,MAAM,cAAc;gBACxC,WAAW,EAAE,SAAS,MAAM,SAAS,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,uFAAuF;gBAClK,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,OAAO,CAAC,QAAQ;gBACtB,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,SAAS,MAAM,IAAI;gBAC3B,GAAG,EAAE;oBACD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACzC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;oBAC7B,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;oBAC3B,UAAU,EAAE,KAAK;oBACjB,WAAW,EAAE,gBAAgB;iBAChC;aACJ,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAClB,CAAC;KACJ;IAED;QACI,EAAE,EAAE,0BAA0B;QAC9B,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,8FAA8F;QACvG,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;QAC9C,OAAO,CAAC,OAAoB;YACxB,MAAM,MAAM,GAAY,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC/C,GAAG,EAAE,IAAA,sBAAU,EAAC,OAAO,CAAC,QAAQ,CAAC;aACpC,CAA4B,CAAC;YAE9B,IAAI,CAAC,GAAG;gBAAE,OAAO,MAAM,CAAC;YAExB,IAAA,kBAAQ,EAAC,GAAG,EAAE;gBACV,iBAAiB,CAAC,IAAI;oBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;oBAEtC,SAAS;oBACT,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;wBAChC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;4BACjB,kCAAkC;4BAClC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;4BAExE,MAAM,CAAC,IAAI,CAAC;gCACR,MAAM,EAAE,0BAA0B;gCAClC,KAAK,EAAE,YAAY;gCACnB,WAAW,EAAE,MAAM,GAAG,+BAA+B,GAAG,cAAc;gCACtE,QAAQ,EAAE,SAAS;gCACnB,IAAI,EAAE,OAAO,CAAC,QAAQ;gCACtB,IAAI;gCACJ,MAAM;gCACN,MAAM,EAAE,wBAAwB,GAAG,IAAI;gCACvC,GAAG,EAAE;oCACD,IAAI,EAAE,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;oCACvD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;oCACvB,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oCACjE,UAAU,EAAE,QAAQ;oCACpB,WAAW,EAAE,sBAAsB;iCACtC;6BACJ,CAAC,CAAC;4BACH,MAAM;wBACV,CAAC;oBACL,CAAC;gBACL,CAAC;aACJ,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAClB,CAAC;KACJ;IAED;QACI,EAAE,EAAE,qBAAqB;QACzB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,2DAA2D;QACxE,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,yFAAyF;QAClG,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;QACtC,OAAO,CAAC,OAAoB;YACxB,MAAM,MAAM,GAAY,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC/C,GAAG,EAAE,IAAA,sBAAU,EAAC,OAAO,CAAC,QAAQ,CAAC;aACpC,CAA4B,CAAC;YAE9B,IAAI,CAAC,GAAG;gBAAE,OAAO,MAAM,CAAC;YAExB,UAAU;YACV,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;gBAC7B,KAAK;gBACL,QAAQ;gBACR,QAAQ;gBACR,MAAM;gBACN,MAAM;gBACN,WAAW;gBACX,OAAO;gBACP,MAAM;gBACN,SAAS;gBACT,SAAS;aACZ,CAAC,CAAC;YAEH,IAAA,kBAAQ,EAAC,GAAG,EAAE;gBACV,kBAAkB;gBAClB,mBAAmB,CAAC,IAAI;oBACpB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBACpF,CAAC;gBACD,kBAAkB,CAAC,IAAI;oBACnB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBACpF,CAAC;gBACD,uBAAuB,CAAC,IAAI;oBACxB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;wBAC3C,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;oBACpF,CAAC;yBAAM,CAAC;wBACJ,eAAe;wBACf,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;oBACzF,CAAC;gBACL,CAAC;gBACD,WAAW,CAAC,IAAI;oBACZ,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACzE,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;oBACpF,CAAC;gBACL,CAAC;aACJ,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAClB,CAAC;KACJ;CACJ,CAAC;AAEF,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,sBAAsB;AACtB,SAAS,qBAAqB,CAAC,IAAS,EAAE,MAAe,EAAE,QAAgB;IACvE,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO;IAErD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;IAC7B,MAAM,UAAU,GAA4D,EAAE,CAAC;IAE/E,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC5B,mBAAmB;QACnB,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACtC,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,MAAM,GAAG,CAAC,CAAC;YAEf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACxC,QAAQ,GAAG,IAAI,CAAC;oBAChB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC;oBACvC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;gBAC/C,CAAC;YACL,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACX,UAAU,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,MAAM;oBACN,MAAM,EAAE,WAAW;iBACtB,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,mBAAmB;gBACnB,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACzB,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAClD,CAAC;gBACD,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,cAAc;YACd,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACzB,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YAClD,CAAC;YACD,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,OAAO;IACP,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACzB,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;AACL,CAAC;AAED,eAAe;AACf,SAAS,eAAe,CACpB,MAAe,EACf,QAAgB,EAChB,UAAmE;IAEnE,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC;QACR,MAAM,EAAE,sBAAsB;QAC9B,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,MAAM,UAAU,CAAC,MAAM,+CAA+C;QACnF,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;KACvB,CAAC,CAAC;AACP,CAAC;AAGD,gBAAgB;AAChB,SAAS,iBAAiB,CAAC,QAAgB;IACvC,MAAM,GAAG,GAAG,IAAA,sBAAU,EAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEnE,QAAQ;IACR,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,QAAQ,iCAAiC,QAAQ,GAAG,GAAG,MAAM,CAAC;IAClF,CAAC;IACD,MAAM;IACN,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACjB,OAAO,SAAS,QAAQ,2CAA2C,QAAQ,GAAG,GAAG,MAAM,CAAC;IAC5F,CAAC;IACD,OAAO,4BAA4B,CAAC;AACxC,CAAC;AAED,cAAc;AACd,SAAS,sBAAsB,CAAC,GAAW,EAAE,UAAiB;IAC1D,MAAM,OAAO,GAAG,UAAU;SACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,YAAY,CAAC;SAC7E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACP,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI;aACb,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;aAC1B,WAAW,EAAE;aACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvB,OAAO,UAAU,IAAI,UAAU,GAAG,OAAO,KAAK,IAAI,CAAC;IACvD,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,OAAO,OAAO,IAAI,oBAAoB,CAAC;AAC3C,CAAC;AAED,kBAAkB;AAClB,SAAS,mBAAmB,CAAC,IAAS,EAAE,MAAe,EAAE,QAAgB,EAAE,gBAA6B;IACpG,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,IAAA,kBAAQ,EACJ,IAAI,EACJ;QACI,cAAc,CAAC,IAAI;YACf,4CAA4C;YAC5C,IAAI,YAAY,CAAC,IAAI,CAAC;gBAAE,OAAO;YAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAChC,IAAI,UAAU,GAAkB,IAAI,CAAC;YAErC,oCAAoC;YACpC,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9E,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtC,CAAC;YAED,mCAAmC;YACnC,IACI,MAAM,CAAC,IAAI,KAAK,kBAAkB;gBAClC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;gBACnC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG;gBAC1B,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,EACvC,CAAC;gBACC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtC,CAAC;YAED,IAAI,UAAU,IAAI,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBAExE,oCAAoC;gBACpC,MAAM,GAAG,GAAI,MAAc,CAAC,MAAM,CAAC;gBACnC,IAAI,GAAG,EAAE,IAAI,KAAK,iBAAiB,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBAC9D,OAAO,CAAC,YAAY;gBACxB,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC;oBACR,MAAM,EAAE,qBAAqB;oBAC7B,KAAK,EAAE,QAAQ,UAAU,SAAS;oBAClC,WAAW,EAAE,cAAc,UAAU,uDAAuD;oBAC5F,QAAQ,EAAE,YAAY;oBACtB,IAAI,EAAE,QAAQ;oBACd,IAAI;oBACJ,MAAM;oBACN,MAAM,EAAE,GAAG,UAAU,OAAO;iBAC/B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;KACJ,EACD,IAAI,CACP,CAAC;AACN,CAAC;AAED,sBAAsB;AACtB,SAAS,wBAAwB,CAAC,IAAS,EAAE,MAAe,EAAE,QAAgB,EAAE,gBAA6B;IACzG,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,gCAAgC;IAChC,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IACI,MAAM,CAAC,IAAI,KAAK,kBAAkB;YAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;YACrC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC5C,CAAC;YACC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,qBAAqB;gBAC7B,KAAK,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS;gBAC5C,WAAW,EAAE,cAAc,MAAM,CAAC,QAAQ,CAAC,IAAI,uDAAuD;gBACtG,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI;gBACJ,MAAM;gBACN,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,OAAO;aACzC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;AACL,CAAC;AAED,gDAAgD;AAChD,SAAS,YAAY,CAAC,IAAS;IAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;IAC9B,OAAO,OAAO,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YACnC,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvG,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,IACI,MAAM,CAAC,IAAI,KAAK,kBAAkB;gBAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;gBACrC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EACrD,CAAC;gBACC,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 多端平台适配 Scanner
3
+ * 迁移自 scan-platform.sh,检测多端项目的平台适配问题
4
+ *
5
+ * 规则列表:
6
+ * 1. platform-mp-size — 小程序包体积检查
7
+ * 2. platform-mp-base64 — base64 图片检查
8
+ * 3. platform-mp-http — HTTP 协议检查
9
+ * 4. platform-mobile-safearea — 安全区域适配
10
+ * 5. platform-harmony — 鸿蒙 ArkTS 规范
11
+ * 6. platform-responsive — 响应式断点配置
12
+ */
13
+ import type { Rule } from "../types.js";
14
+ export declare const platformRules: Rule[];
15
+ //# sourceMappingURL=platform-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-scanner.d.ts","sourceRoot":"","sources":["../../src/scanners/platform-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAsB,MAAM,YAAY,CAAC;AAE3D,eAAO,MAAM,aAAa,EAAE,IAAI,EAqU/B,CAAC"}