在团队协作开发中,代码风格不一致是个老大难问题。每次写完代码准备提 PR,就会因为格式差异和同事产生一堆 Git 冲突,review 也容易被格式细节干扰。其实这些问题可以靠自动化工具来统一解决:使用 prettier、black、clang-format 等代码格式化工具,结合 Shell / Node.js 脚本进行批量格式化,一键清理代码风格问题,还能自动提交修改,告别“我和格式化工具打架的那些年”。
代码规范这件事,说简单也简单,说难也难。规范本身就在那里,但很多时候我们懒得执行、忘记执行,或者根本不知道项目的规范是啥。特别是在一个多人协作的项目中,哪怕大家都说好了用空格还是 Tab、有没有尾逗号,但总有人“不小心”格式化了一整页,结果一合并,Git 冲突直接爆炸。
那有没有一种方式可以自动格式化代码、统一风格、批量处理,还能顺手提交 commit 呢? 当然有,这篇文章就来带你搭一套小而美的代码自动格式化工具链,适用于 JS / Python / C / Swift 等语言,脚本方案灵活可扩展。
我们用两种方式来实现批量格式化:
以格式化 JS 和 Python 文件为例:
#!/bin/bash
# format.sh
echo "🔍 正在查找并格式化所有 JS 和 PY 文件..."
# 格式化 JS 文件(使用 Prettier)
npx prettier --write "**/*.js"
# 格式化 Python 文件(使用 Black)
find . -name "*.py" | xargs black
# 可选:格式化 C/C++ 文件
# find . -name "*.c" -o -name "*.h" | xargs clang-format -i
# 自动提交改动
git add .
git commit -m "chore: auto format source files"
执行方式:
chmod +x format.sh
./format.sh
适合需要跨平台执行、集成更多逻辑(如格式化指定路径、排除某些文件、同步配置等):
// format.js
const { execSync } = require('child_process');
function run(cmd) {
console.log(`>>> ${cmd}`);
execSync(cmd, { stdio: 'inherit' });
}
// 格式化 JS/TS 文件
run('npx prettier --write "**/*.{js,ts}"');
// 格式化 Python 文件
run('black .');
// 格式化 Swift(假设你安装了 swiftformat)
run('find . -name "*.swift" | xargs swiftformat');
// Git 提交
run('git add .');
run('git commit -m "chore: code style unified by formatter"');
执行方式:
node format.js
问题:每个同事 VSCode 配置不同,提交代码格式大乱,Prettier 格式差异引发冲突
解决方式:项目根目录加 .prettierrc
,并集成 Shell 脚本自动格式化:
{
"semi": true,
"singleQuote": true,
"trailingComma": "es5"
}
并在 package.json
添加快捷命令:
"scripts": {
"format": "bash ./scripts/format.sh"
}
问题:Python 格式因 IDE 不同,代码不一致;提交时 pylint 报错一大堆
解决方式:结合 black + isort + pre-commit
工具统一处理
black .
isort .
也可以将格式化集成进 Git 提交钩子中(参考 pre-commit 框架)
问题:开发者使用不同版本的 Xcode,代码缩进和对齐方式不同,影响合并
解决方式:安装 swiftformat
工具,并在 CI 流程中集成:
brew install swiftformat
swiftformat .
Q:格式化会不会改动我的业务逻辑?
A:不会。格式化工具只处理代码风格层面的内容,比如缩进、换行、引号等,不会改写变量、函数等逻辑。
Q:是否可以只格式化修改过的文件?
A:可以。比如用 Git diff 提取改动文件:
git diff --name-only | grep '\.js$' | xargs prettier --write
Q:如何集成到 CI / PR 流程中?
A:推荐使用 husky
+ lint-staged
在提交前格式化,或者在 CI 中加一步 npm run format && git diff --exit-code
来检测格式是否合规。
代码风格不一致的问题,其实不应该靠人去记,而应该交给工具自动完成。使用 Prettier、Black、Clang-format 等成熟工具,搭配 Shell 或 Node.js 脚本批量格式化,不仅能统一代码风格,还能减少不必要的冲突,节省 review 成本。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。