Loading...
Loading...
Compare original and translation side by side
fast-feedback.pyfast-feedback.pyimport { db } from './db'/tune-repoimport { db } from './db'/tune-repo| Criterion | ESLint | ast-grep |
|---|---|---|
| Language | JS/TS only | Any (Python, Go, Rust, etc.) |
| Fixable | Yes (auto-fix) | Yes (rewrite) |
| Testing | RuleTester built-in | YAML snapshot tests |
| Config | Flat config plugin | sgconfig.yml |
| Speed | Fast | Very fast |
--engine| 评估维度 | ESLint | ast-grep |
|---|---|---|
| 支持语言 | 仅JS/TS | 任意语言(Python、Go、Rust等) |
| 自动修复 | 支持(auto-fix) | 支持(rewrite) |
| 测试能力 | 内置RuleTester | YAML快照测试 |
| 配置方式 | Flat config插件 | sgconfig.yml |
| 运行速度 | 快 | 极快 |
--enginereferences/eslint-rule-anatomy.mdreferences/ast-grep-rule-anatomy.mdtemplates/eslint-rule.jstemplates/eslint-rule-test.jstemplates/ast-grep-rule.ymlreferences/eslint-rule-anatomy.mdreferences/ast-grep-rule-anatomy.mdtemplates/eslint-rule.jstemplates/eslint-rule-test.jstemplates/ast-grep-rule.ymlundefinedundefined
**ast-grep:**
```bash
sg scan --config guardrails/sgconfig.yml --testundefined
**ast-grep测试:**
```bash
sg scan --config guardrails/sgconfig.yml --testundefinedundefinedundefinedguardrails/guardrails/
README.md # Catalog of all custom rules
index.js # ESLint local plugin barrel (JS/TS projects)
sgconfig.yml # ast-grep config (if non-JS rules exist)
rules/
<rule-name>.js # ESLint rule implementation
<rule-name>.test.js # ESLint RuleTester
<rule-name>.yml # ast-grep rule// guardrails/index.js
import noDirectDbImport from "./rules/no-direct-db-import.js";
export default {
rules: {
"no-direct-db-import": noDirectDbImport,
},
};// eslint.config.js — add to existing config
import guardrails from "./guardrails/index.js";
export default [
// ... existing config
{
plugins: { guardrails },
rules: {
"guardrails/no-direct-db-import": "error",
},
},
];undefinedguardrails/guardrails/
README.md # 所有自定义规则的目录
index.js # ESLint本地插件入口文件(JS/TS项目)
sgconfig.yml # ast-grep配置文件(如果存在非JS规则)
rules/
<rule-name>.js # ESLint规则实现
<rule-name>.test.js # ESLint RuleTester测试文件
<rule-name>.yml # ast-grep规则文件// guardrails/index.js
import noDirectDbImport from "./rules/no-direct-db-import.js";
export default {
rules: {
"no-direct-db-import": noDirectDbImport,
},
};// eslint.config.js — 添加到现有配置中
import guardrails from "./guardrails/index.js";
export default [
// ... 现有配置
{
plugins: { guardrails },
rules: {
"guardrails/no-direct-db-import": "error",
},
},
];undefinedundefinedundefinedguardrails/README.mdundefinedguardrails/README.mdundefinedundefinedundefinedGUARDRAIL CREATED:
- Rule: guardrails/rules/<name>.<ext>
- Test: guardrails/rules/<name>.test.<ext>
- Engine: ESLint | ast-grep
- Violations found: N (in current codebase)
- Auto-fixable: yes | no
- Config updated: eslint.config.js | guardrails/sgconfig.ymlGUARDRAIL 已创建:
- 规则文件:guardrails/rules/<name>.<ext>
- 测试文件:guardrails/rules/<name>.test.<ext>
- 使用引擎:ESLint | ast-grep
- 已发现违规数量:N(当前代码库中)
- 是否支持自动修复:是 | 否
- 已更新配置:eslint.config.js | guardrails/sgconfig.yml| Consumed by | How |
|---|---|
| Runs |
| Routes "lint rule" target here |
| Routes "lint rule" target here |
| Discovers patterns, recommends |
| Audits |
| CI (GitHub Actions) | Standard |
| 消费方 | 集成方式 |
|---|---|
| 在每次编辑时运行 |
| 将“lint规则”目标路由至此 |
| 将“lint规则”目标路由至此 |
| 发现模式,推荐调用 |
| 审核 |
| CI(GitHub Actions) | 在工作流中执行标准的 |