使用说明
🔥 火蝠
表面代码质量扫描仪 可维护性问题 因此,团队可以根据可观察到的信号而不是直觉来优先考虑重构。
建立在 包子 + oxc,专为快速重复跑步而设计。用于AI代理集成的仅JSON CLI输出。
安装
bun install
bun run build # → dist/firebat.js
Bun行为在中配置 bunfig.toml 在项目的根。
快速开始
# Scan the entire project
firebat
# Scan specific files
firebat src/app.ts src/utils.ts
# Select detectors and output JSON
firebat --only waste,nesting
CLI参考
firebat [targets...] [options]
firebat scan [targets...] [options]
命令
| 命令 | 描述 |
|---|---|
scan |
运行代码分析(默认命令) |
install |
在此项目中设置firebat配置文件 |
update |
将配置文件与最新模板同步 |
cache clean |
删除缓存的分析数据(.firebat/*.sqlite) |
扫描选项
| 标志 | 默认值 | 描述 |
|---|---|---|
--min-size <n|auto> |
auto |
重复检测的最小AST节点大小 |
--max-forward-depth <n> |
0 |
最大薄包装链深度 |
--only <list> |
all | 要运行的逗号分隔检测器 |
--config <path> |
.firebatrc.jsonc |
配置文件路径 |
--log-level <level> |
info |
错误 |
--log-stack |
off | 在日志输出中包含堆栈跟踪 |
探测器(12)
大多数探测器默认运行(barrel 选择加入)。使用 --only 以选择子集。
如果 .firebatrc.jsonc 存在并且 --only 未指定,可以通过设置禁用探测器 features["<detector>"] 到 false.
代码质量
| 探测器 | 它发现了什么 |
|---|---|
| 完全重复 | 跨文件的相同AST子树 |
| 结构复制品 | 结构相似的代码(克隆类) |
| 浪费 | 死存储区——已分配但从未读取的变量,或在读取前被覆盖的变量 |
| 嵌套 | 预算超限信号超过嵌套深度、认知复杂性、回调深度、链深度和函数长度 |
| 提前返回 | 受益于保护条款/提前返回的函数 |
| 转发 | 只转发呼叫的薄包装和长转发链 |
建筑学
| 探测器 | 它发现了什么 |
|---|---|
| 桶 | 桶文件违规: export *、深度导入、索引文件丢失/无效、跨模块重新导出 |
| 未知证据 | 不安全 unknown/any 用法:类型断言,未经验证的未知,推断任何 |
| 依赖项 | 导入依赖周期和边缘提示 |
| 嵌套 | 嵌套深度、认知复杂性、回调深度、链深度、函数长度预算超标 |
| 提前返回 | 否则可逆转,可折叠条件,保护条款机会 |
| 可折叠,如果 | 嵌套的if语句,可以折叠成单个条件 |
| 间接 | 瘦包装器、转发链、类型重映射、接口重写 |
| 可变寿命 | 长期存在的变量,范围缩小的机会 |
| 浪费 | 死存储、未使用的变量 |
| 副本 | 精确和结构代码重复 |
| 时间耦合 | 依赖订单的操作 |
| 巨型文件 | 超出行预算的文件(默认1000; maxLines 为了覆盖, false 禁用) |
| 误差流 | 不安全的错误处理模式 |
配置
创建 .firebatrc.jsonc 在项目根目录中:
{
// Per-feature configuration
"features": {
"unknown-proof": {
"boundaryGlobs": ["src/adapters/**"]
},
"barrel": {
"ignoreGlobs": ["dist/**"]
}
}
}
建筑学
src/
adapters/ Entrypoints & composition root (CLI)
application/ Use-case orchestration (no direct I/O imports)
ports/ Interfaces for external I/O
infrastructure/ I/O implementations (SQLite)
engine/ Pure computation (AST parsing, CFG, hashing, detection)
features/ Pure analysis logic per detector
依赖规则:
application/→ 取决于ports/只有(从来没有infrastructure/)infrastructure/→ 实现ports/adapters/→ 组装一切(组成根)engine/+features/→ 纯粹的,没有I/O依赖关系
发展
bun test # Run all tests
bun run build # Build to dist/
bun run deps # Check dependency rules
许可证
私人