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.
- package/LICENSE +21 -0
- package/bin/fg-core.js +1238 -0
- package/bin/watch-mode.js +123 -0
- package/dist/engine/cache.d.ts +68 -0
- package/dist/engine/cache.d.ts.map +1 -0
- package/dist/engine/cache.js +164 -0
- package/dist/engine/cache.js.map +1 -0
- package/dist/engine/rule-engine.d.ts +135 -0
- package/dist/engine/rule-engine.d.ts.map +1 -0
- package/dist/engine/rule-engine.js +716 -0
- package/dist/engine/rule-engine.js.map +1 -0
- package/dist/formatters/github-annotation.d.ts +36 -0
- package/dist/formatters/github-annotation.d.ts.map +1 -0
- package/dist/formatters/github-annotation.js +122 -0
- package/dist/formatters/github-annotation.js.map +1 -0
- package/dist/formatters/pr-comment.d.ts +43 -0
- package/dist/formatters/pr-comment.d.ts.map +1 -0
- package/dist/formatters/pr-comment.js +171 -0
- package/dist/formatters/pr-comment.js.map +1 -0
- package/dist/formatters/sarif.d.ts +104 -0
- package/dist/formatters/sarif.d.ts.map +1 -0
- package/dist/formatters/sarif.js +130 -0
- package/dist/formatters/sarif.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +108 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/base.d.ts +44 -0
- package/dist/integrations/base.d.ts.map +1 -0
- package/dist/integrations/base.js +104 -0
- package/dist/integrations/base.js.map +1 -0
- package/dist/integrations/eslint.d.ts +8 -0
- package/dist/integrations/eslint.d.ts.map +1 -0
- package/dist/integrations/eslint.js +67 -0
- package/dist/integrations/eslint.js.map +1 -0
- package/dist/integrations/formatter.d.ts +35 -0
- package/dist/integrations/formatter.d.ts.map +1 -0
- package/dist/integrations/formatter.js +182 -0
- package/dist/integrations/formatter.js.map +1 -0
- package/dist/integrations/index.d.ts +17 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +25 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/stylelint.d.ts +8 -0
- package/dist/integrations/stylelint.d.ts.map +1 -0
- package/dist/integrations/stylelint.js +59 -0
- package/dist/integrations/stylelint.js.map +1 -0
- package/dist/integrations/typescript.d.ts +8 -0
- package/dist/integrations/typescript.d.ts.map +1 -0
- package/dist/integrations/typescript.js +92 -0
- package/dist/integrations/typescript.js.map +1 -0
- package/dist/rules/registry.d.ts +83 -0
- package/dist/rules/registry.d.ts.map +1 -0
- package/dist/rules/registry.js +205 -0
- package/dist/rules/registry.js.map +1 -0
- package/dist/scanners/a11y-scanner.d.ts +14 -0
- package/dist/scanners/a11y-scanner.d.ts.map +1 -0
- package/dist/scanners/a11y-scanner.js +781 -0
- package/dist/scanners/a11y-scanner.js.map +1 -0
- package/dist/scanners/component-scanner.d.ts +12 -0
- package/dist/scanners/component-scanner.d.ts.map +1 -0
- package/dist/scanners/component-scanner.js +304 -0
- package/dist/scanners/component-scanner.js.map +1 -0
- package/dist/scanners/cross-file-scanner.d.ts +18 -0
- package/dist/scanners/cross-file-scanner.d.ts.map +1 -0
- package/dist/scanners/cross-file-scanner.js +684 -0
- package/dist/scanners/cross-file-scanner.js.map +1 -0
- package/dist/scanners/hooks-scanner.d.ts +15 -0
- package/dist/scanners/hooks-scanner.d.ts.map +1 -0
- package/dist/scanners/hooks-scanner.js +670 -0
- package/dist/scanners/hooks-scanner.js.map +1 -0
- package/dist/scanners/i18n-scanner.d.ts +13 -0
- package/dist/scanners/i18n-scanner.d.ts.map +1 -0
- package/dist/scanners/i18n-scanner.js +535 -0
- package/dist/scanners/i18n-scanner.js.map +1 -0
- package/dist/scanners/naming-scanner.d.ts +19 -0
- package/dist/scanners/naming-scanner.d.ts.map +1 -0
- package/dist/scanners/naming-scanner.js +746 -0
- package/dist/scanners/naming-scanner.js.map +1 -0
- package/dist/scanners/performance-scanner.d.ts +7 -0
- package/dist/scanners/performance-scanner.d.ts.map +1 -0
- package/dist/scanners/performance-scanner.js +402 -0
- package/dist/scanners/performance-scanner.js.map +1 -0
- package/dist/scanners/platform-scanner.d.ts +15 -0
- package/dist/scanners/platform-scanner.d.ts.map +1 -0
- package/dist/scanners/platform-scanner.js +320 -0
- package/dist/scanners/platform-scanner.js.map +1 -0
- package/dist/scanners/security-scanner.d.ts +7 -0
- package/dist/scanners/security-scanner.d.ts.map +1 -0
- package/dist/scanners/security-scanner.js +349 -0
- package/dist/scanners/security-scanner.js.map +1 -0
- package/dist/scanners/svelte-scanner.d.ts +14 -0
- package/dist/scanners/svelte-scanner.d.ts.map +1 -0
- package/dist/scanners/svelte-scanner.js +228 -0
- package/dist/scanners/svelte-scanner.js.map +1 -0
- package/dist/types.d.ts +343 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/ast-parser.d.ts +21 -0
- package/dist/utils/ast-parser.d.ts.map +1 -0
- package/dist/utils/ast-parser.js +119 -0
- package/dist/utils/ast-parser.js.map +1 -0
- package/dist/utils/baseline.d.ts +89 -0
- package/dist/utils/baseline.d.ts.map +1 -0
- package/dist/utils/baseline.js +156 -0
- package/dist/utils/baseline.js.map +1 -0
- package/dist/utils/ci-generator.d.ts +34 -0
- package/dist/utils/ci-generator.d.ts.map +1 -0
- package/dist/utils/ci-generator.js +194 -0
- package/dist/utils/ci-generator.js.map +1 -0
- package/dist/utils/common.d.ts +8 -0
- package/dist/utils/common.d.ts.map +1 -0
- package/dist/utils/common.js +38 -0
- package/dist/utils/common.js.map +1 -0
- package/dist/utils/concurrent.d.ts +16 -0
- package/dist/utils/concurrent.d.ts.map +1 -0
- package/dist/utils/concurrent.js +49 -0
- package/dist/utils/concurrent.js.map +1 -0
- package/dist/utils/config-loader.d.ts +8 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +154 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/fix-bot.d.ts +36 -0
- package/dist/utils/fix-bot.d.ts.map +1 -0
- package/dist/utils/fix-bot.js +274 -0
- package/dist/utils/fix-bot.js.map +1 -0
- package/dist/utils/git-hooks.d.ts +55 -0
- package/dist/utils/git-hooks.d.ts.map +1 -0
- package/dist/utils/git-hooks.js +318 -0
- package/dist/utils/git-hooks.js.map +1 -0
- package/dist/utils/history-report.d.ts +72 -0
- package/dist/utils/history-report.d.ts.map +1 -0
- package/dist/utils/history-report.js +144 -0
- package/dist/utils/history-report.js.map +1 -0
- package/dist/utils/init-config.d.ts +23 -0
- package/dist/utils/init-config.d.ts.map +1 -0
- package/dist/utils/init-config.js +146 -0
- package/dist/utils/init-config.js.map +1 -0
- package/dist/utils/pr-publisher.d.ts +64 -0
- package/dist/utils/pr-publisher.d.ts.map +1 -0
- package/dist/utils/pr-publisher.js +265 -0
- package/dist/utils/pr-publisher.js.map +1 -0
- package/dist/utils/project-detector.d.ts +20 -0
- package/dist/utils/project-detector.d.ts.map +1 -0
- package/dist/utils/project-detector.js +342 -0
- package/dist/utils/project-detector.js.map +1 -0
- package/dist/utils/report-uploader.d.ts +35 -0
- package/dist/utils/report-uploader.d.ts.map +1 -0
- package/dist/utils/report-uploader.js +106 -0
- package/dist/utils/report-uploader.js.map +1 -0
- 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 @@
|
|
|
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":"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"}
|
|
@@ -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"}
|