auto-cr-cmd 2.0.80 → 2.0.85
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/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/dist/i18n/index.js +2 -0
- package/dist/index.js +37 -6
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
## Feature Highlights (Automated Code Review & Static Analysis)
|
|
24
24
|
|
|
25
|
-
- **Built-in Rule Library**: Ships with SWC AST static analysis rules out of the box, such as `no-deep-relative-imports`, `no-circular-dependencies`, and `no-
|
|
25
|
+
- **Built-in Rule Library**: Ships with SWC AST static analysis rules out of the box, such as `no-deep-relative-imports`, `no-circular-dependencies`, `no-swallowed-errors`, `no-catastrophic-regex`, `no-deep-clone-in-loop`, and `no-n2-array-lookup`.
|
|
26
26
|
- **Extensible SDK**: `auto-cr-rules` exposes helpers like `defineRule` and `helpers.imports`, reducing the friction of authoring custom TypeScript / JavaScript rules.
|
|
27
27
|
- **Workspace Friendly**: Manage both the CLI and rule package via pnpm workspaces and validate the full pipeline with a single build.
|
|
28
28
|
- **Publishing Toolkit**: Version bump scripts and npm publish commands keep both packages in sync.
|
package/README.zh-CN.md
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
## 特性亮点(自动化代码审查 & 静态代码分析)
|
|
24
24
|
|
|
25
|
-
- **内置规则库**:默认集成 SWC AST 静态分析规则,例如 `no-deep-relative-imports`、`no-circular-dependencies`、`no-swallowed-errors`。
|
|
25
|
+
- **内置规则库**:默认集成 SWC AST 静态分析规则,例如 `no-deep-relative-imports`、`no-circular-dependencies`、`no-swallowed-errors`、`no-catastrophic-regex`、`no-deep-clone-in-loop`、`no-n2-array-lookup`。
|
|
26
26
|
- **可扩展 SDK**:`auto-cr-rules` 暴露 `defineRule`、`helpers.imports` 等工具,降低编写 TypeScript / JavaScript 自定义规则的复杂度。
|
|
27
27
|
- **工作区管理**:使用 pnpm workspace 同时管理 CLI 与规则包,一次构建即可验证完整流程。
|
|
28
28
|
- **发布友好**:内置版本递增脚本与 npm 发布命令,保持两个包的版本同步。
|
package/dist/i18n/index.js
CHANGED
|
@@ -118,6 +118,7 @@ var translations = {
|
|
|
118
118
|
var tag = _a.tag;
|
|
119
119
|
var labels = {
|
|
120
120
|
base: '基础规则',
|
|
121
|
+
performance: '性能规则',
|
|
121
122
|
untagged: '未定义'
|
|
122
123
|
};
|
|
123
124
|
return (_b = labels[tag]) !== null && _b !== void 0 ? _b : tag;
|
|
@@ -235,6 +236,7 @@ var translations = {
|
|
|
235
236
|
var tag = _a.tag;
|
|
236
237
|
var labels = {
|
|
237
238
|
base: 'Base Rules',
|
|
239
|
+
performance: 'Performance Rules',
|
|
238
240
|
untagged: 'untagged'
|
|
239
241
|
};
|
|
240
242
|
return (_b = labels[tag]) !== null && _b !== void 0 ? _b : tag;
|
package/dist/index.js
CHANGED
|
@@ -71,7 +71,6 @@ var report_1 = require("./report");
|
|
|
71
71
|
var i18n_1 = require("./i18n");
|
|
72
72
|
var file_1 = require("./utils/file");
|
|
73
73
|
var stdin_1 = require("./utils/stdin");
|
|
74
|
-
var auto_cr_rules_1 = require("auto-cr-rules");
|
|
75
74
|
var loader_1 = require("./rules/loader");
|
|
76
75
|
var autocrrc_1 = require("./config/autocrrc");
|
|
77
76
|
var ignore_1 = require("./config/ignore");
|
|
@@ -83,10 +82,42 @@ var consolaLoggers = {
|
|
|
83
82
|
};
|
|
84
83
|
// 仅扫描 JS/TS 源码扩展名,避免把配置文件/JSON/图片等送进 SWC 解析导致报错。
|
|
85
84
|
var SCANNABLE_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx'];
|
|
85
|
+
// 运行 TS 源码时优先加载本地 rules,避免开发时拿到旧的 workspace 依赖。
|
|
86
|
+
var rulesRuntime = loadRulesRuntime();
|
|
87
|
+
var builtinRules = rulesRuntime.builtinRules;
|
|
88
|
+
var createRuleContext = rulesRuntime.createRuleContext;
|
|
89
|
+
var RuleSeverity = rulesRuntime.RuleSeverity;
|
|
86
90
|
// 单文件路径也走扩展名过滤,保证与目录扫描的行为一致。
|
|
87
91
|
var isScannableFile = function (filePath) {
|
|
88
92
|
return SCANNABLE_EXTENSIONS.some(function (extension) { return filePath.endsWith(extension); });
|
|
89
93
|
};
|
|
94
|
+
function loadRulesRuntime() {
|
|
95
|
+
var fallback = require('auto-cr-rules');
|
|
96
|
+
var localRuntime = resolveLocalRulesRuntime();
|
|
97
|
+
if (localRuntime) {
|
|
98
|
+
return localRuntime;
|
|
99
|
+
}
|
|
100
|
+
return fallback;
|
|
101
|
+
}
|
|
102
|
+
function resolveLocalRulesRuntime() {
|
|
103
|
+
if (!__filename.endsWith('.ts')) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
var localEntry = path_1.default.resolve(__dirname, '../../auto-cr-rules/src/index.ts');
|
|
107
|
+
if (!fs_1.default.existsSync(localEntry)) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
var localRuntime = require(localEntry);
|
|
112
|
+
if (Array.isArray(localRuntime.builtinRules)) {
|
|
113
|
+
return localRuntime;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (_a) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
90
121
|
/**
|
|
91
122
|
* CLI 主流程:
|
|
92
123
|
* 1. 校验输入路径并应用 ignore;
|
|
@@ -297,7 +328,7 @@ function run() {
|
|
|
297
328
|
customRules = (0, loader_1.loadCustomRules)(ruleDir);
|
|
298
329
|
rcConfig = (0, autocrrc_1.loadAutoCrRc)(configPath);
|
|
299
330
|
rcConfig.warnings.forEach(function (warning) { return log('warn', warning); });
|
|
300
|
-
rules = (0, autocrrc_1.applyRuleConfig)(__spreadArray(__spreadArray([],
|
|
331
|
+
rules = (0, autocrrc_1.applyRuleConfig)(__spreadArray(__spreadArray([], builtinRules, true), customRules, true), rcConfig.rules, function (warning) {
|
|
301
332
|
return log('warn', warning);
|
|
302
333
|
});
|
|
303
334
|
if (rules.length === 0) {
|
|
@@ -412,7 +443,7 @@ function analyzeFile(file, rules, format, log, reporterHooks) {
|
|
|
412
443
|
}];
|
|
413
444
|
}
|
|
414
445
|
language = (0, i18n_1.getLanguage)();
|
|
415
|
-
baseContext =
|
|
446
|
+
baseContext = createRuleContext({
|
|
416
447
|
ast: ast,
|
|
417
448
|
filePath: file,
|
|
418
449
|
source: source,
|
|
@@ -569,11 +600,11 @@ function parseProgressOption(value) {
|
|
|
569
600
|
}
|
|
570
601
|
function severityToLabel(severity) {
|
|
571
602
|
switch (severity) {
|
|
572
|
-
case
|
|
603
|
+
case RuleSeverity.Warning:
|
|
573
604
|
return 'warning';
|
|
574
|
-
case
|
|
605
|
+
case RuleSeverity.Optimizing:
|
|
575
606
|
return 'optimizing';
|
|
576
|
-
case
|
|
607
|
+
case RuleSeverity.Error:
|
|
577
608
|
default:
|
|
578
609
|
return 'error';
|
|
579
610
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "auto-cr-cmd",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.85",
|
|
4
4
|
"description": "Fast automated code review CLI powered by SWC-based static analysis",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/types/index.d.ts",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@swc/core": "^1.15.8",
|
|
49
49
|
"@swc/wasm": "^1.15.8",
|
|
50
|
-
"auto-cr-rules": "^2.0.
|
|
50
|
+
"auto-cr-rules": "^2.0.85",
|
|
51
51
|
"commander": "^14.0.2",
|
|
52
52
|
"consola": "^3.4.2",
|
|
53
53
|
"jsonc-parser": "^3.3.1",
|