在日常开发中,大量重复性的代码处理工作(格式化、统计、合并、压缩等)会消耗不少精力。这里整理了一套轻量、实用的一键处理工具,大多可以用一个命令或一个短脚本完成,既能提升效率,又不需要额外安装重型软件。
3.3.1 一键代码格式化 (Black/Prettier)
场景:团队协作时统一代码风格,或在提交前自动整理代码。
Python 项目:使用 black,安装后一条命令即可格式化整个文件夹。
pip install black
black src/ tests/ # 一键格式化所有 Python 文件
前端项目:使用 prettier。
npx prettier --write "src/**/*.{js,ts,json,css}"
贴士:可以将命令写入 Makefile 或 package.json 的 scripts,实现一键执行。
3.3.2 代码行数/字数统计器
场景:快速了解项目规模,或生成项目概览报告。
以下 Python 脚本可统计指定目录下所有代码文件的总行数(排除空行和注释行可选):
# count_lines.py
import os
import sys
def count_lines_in_file(filepath, skip_blank=False):
with open(filepath, 'r', encoding='utf-8', errors='ignore') as f:
lines = f.readlines()
if skip_blank:
lines = [l for l in lines if l.strip() != '']
return len(lines)
def main(directory):
total = 0
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(('.py', '.js', '.java', '.cpp', '.ts')):
path = os.path.join(root, file)
total += count_lines_in_file(path, skip_blank=True)
print(f"总有效代码行数: {total}")
if __name__ == '__main__':
main(sys.argv[1] if len(sys.argv) > 1 else '.')
使用:
python count_lines.py ./src
如果只是粗略统计,也可以直接用 wc 命令:
find ./src -name "*.py" | xargs wc -l | tail -1
3.3.3 一键代码合并工具
场景:将分散的多个源文件合并成一个单独文件,方便分享或发布(如一些在线判题平台要求单文件提交)。
# merge_code.py
import sys, os
output_file = sys.argv[1]
sources = sys.argv[2:]
with open(output_file, 'w', encoding='utf-8') as out:
for src in sources:
if os.path.isfile(src):
with open(src, 'r', encoding='utf-8') as f:
out.write(f"# --- start: {src} ---\n")
out.write(f.read())
out.write(f"\n# --- end: {src} ---\n\n")
else:
print(f"Warning: {src} not found")
使用:
python merge_code.py merged.py model.py utils.py main.py
生成一个 merged.py,包含所有源文件内容并带有分界注释。
3.3.4 一键代码压缩与混淆
场景:需要发布缩小版本(JavaScript/CSS),或进行简单的字符串混淆(Python等)。
JavaScript/CSS 压缩:使用 terser / csso:
npx terser input.js -c -m -o output.min.js
npx csso input.css -o output.min.css
Python 字符混淆(简单示例):将变量名替换为随机字符串,这里只展示原理,生产环境慎用。
import ast, astor, random, string
def obfuscate_variables(source_code):
tree = ast.parse(source_code)
# 简单的遍历改名 (省略详细实现)
return astor.to_source(tree)
实际场景中,可使用 pyminifier 等第三方工具:
pip install pyminifier
pyminifier --obfuscate-builtins --obfuscate-import-methods myscript.py
3.3.5 批量文件改名 & 后缀调整
场景:一次性把 .jsx 文件改为 .tsx,或统一添加前缀。
直接在终端用 rename 或编写 Python 脚本:
# Linux/macOS 批量修改后缀
rename 's/\.jsx$/\.tsx/' *.jsx
更通用的 Python 版本:
import os, sys
folder = sys.argv[1]
old_ext = sys.argv[2]
new_ext = sys.argv[3]
for filename in os.listdir(folder):
if filename.endswith(old_ext):
base = filename[:-len(old_ext)]
os.rename(
os.path.join(folder, filename),
os.path.join(folder, base + new_ext)
)
print("Done.")
3.3.6 代码检查与快速修复
场景:提交前自动排查语法错误、风格问题,并尝试自动修复。
- Python:
ruff集成了检查 + 自动修复,速度极快。
pip install ruff
ruff check --fix src/
- ESLint(前端):
npx eslint --fix src/
把它们纳入 Git 预提交钩子(pre-commit),就能真正做到“一键检查并修复”。
这些工具都无需复杂的配置,开箱即用。你可以根据项目情况把它们放入 Makefile、Shell 别名或 IDE 的外部工具中,以后只需一个快捷键或一条命令,就能完成重复劳动。