实际开发里,真正拖慢进度的往往不是写代码,而是整理代码:格式化不一致、批量替换怕改错、提交前反复检查。与其每次手敲长命令,不如用几个轻量工具把高频操作封装成“一键”指令。
1. 统一命令入口:Just(或 Makefile)
团队里最浪费时间的场景之一是每个人用的命令不一样。推荐用 Just(Rust 写的命令运行器,比 Makefile 语法更友好)作为统一入口,把日常操作固化:
# Justfile
fmt:
prettier --write .
black .
gofmt -w .
lint:
eslint .
ruff check .
golangci-lint run
fix:
ruff check . --fix
eslint . --fix
clean:
find . -type d -name "__pycache__" -exec rm -rf {} +
find . -type f -name "*.log" -delete
开发者只需要记住四个单词:just fmt、just lint、just fix、just clean。
2. 格式化与自动修复:交给专业工具
别在团队里争论代码风格,直接上工具:
- 多语言:Prettier(JS/CSS/Markdown/JSON)、shfmt(Shell)
- Python:Black(格式化)+ Ruff(超快的 linter 和 import 排序)
- Go:gofmt / goimports
- Rust:rustfmt + clippy
把这些全部串进 just fmt,保存即统一。
3. 安全地批量重构:sd + ast-grep
传统的 sed -i 做批量替换很容易误伤字符串里的内容。推荐两个更安全的工具:
- sd:语法更直观的替换工具,例如
sd 'foo\(bar\)' 'baz($1)'比 sed 好写十倍。 - ast-grep:基于 AST(抽象语法树)的搜索替换,能精准定位“函数调用”而不是纯文本。比如把旧 API 批量迁移到新 API,不会出现把注释里的单词也改掉的情况。
4. 提交前拦截:pre-commit
最省心的“一键处理”是自动在提交前跑完检查。安装 pre-commit 后,在项目根目录放一个 .pre-commit-config.yaml,配置好 Black、Prettier、ESLint 等钩子。团队成员只需执行一次:
pre-commit install
之后每次 git commit 都会自动格式化并拦截错误,push 到 CI 前代码已经是干净的。
5. 快速盘点:tokei + tree
需要写汇报或评估工作量时,用 tokei(比 cloc 更快)一键统计代码行数:
tokei .
配合 tree -L 2 -I 'node_modules|pycache' 生成干净的目录结构,直接贴进文档。
6. 实战:一条命令拯救遗留项目
面对一个格式混乱、警告满天飞的老项目,可以新建一个 rebuild 命令一次性处理:
#!/bin/bash
# rebuild.sh
set -e
echo "==> 格式化代码..."
just fmt
echo "==> 自动修复 lint..."
just fix
echo "==> 检查剩余问题..."
just lint
echo "==> 统计代码..."
tokei .
跑完这一遍,代码库至少达到“干净、可读、不报警”的基线。后续靠 pre-commit 维持即可。