# 全局替换 **Repository Path**: ydscode/global-replacement ## Basic Information - **Project Name**: 全局替换 - **Description**: 对项目的目录、文件、代码中的关键字进行全局替换。 1、指定目录 2、通过json文件配置替换规则 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-09-27 - **Last Updated**: 2026-02-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Global Replacement Tool [![Java](https://img.shields.io/badge/Java-8-orange.svg)](https://www.oracle.com/java/) [![Maven](https://img.shields.io/badge/Maven-3.6+-red.svg)](https://maven.apache.org/) [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) 一个功能强大的 Java 批量替换工具,支持图形界面操作,提供智能扫描、安全备份和自动代码审查功能。 ## 📋 目录 - [功能特性](#功能特性) - [技术栈](#技术栈) - [项目结构](#项目结构) - [快速开始](#快速开始) - [使用指南](#使用指南) - [代码审查](#代码审查) - [最佳实践](#最佳实践) - [常见问题](#常见问题) ## ✨ 功能特性 ### 核心功能 - **🔍 智能扫描**:自动扫描目录和文件,基于实际扫描结果生成替换规则 - **⚡ 多线程处理**:使用线程池并行扫描,提升大型项目扫描速度 - **🛡️ 安全备份**:执行前自动备份,确保操作可逆 - **📊 实时进度**:详细的进度条和日志输出,实时查看处理状态 - **🖼️ 图片识别**:自动识别图片文件,仅修改文件名而不修改内容 - **🔄 自动清理**:替换完成后自动清空所有输入内容 ### 代码质量 - **🔍 代码审查**:内置代码审查功能,自动检测资源泄漏、线程安全等问题 - **✅ 自动修复**:支持自动修复常见代码问题 - **📝 代码规范**:遵循 Java 最佳实践和编码规范 - **🔒 安全加固**:修复正则表达式注入等安全漏洞 ## 🛠 技术栈 - **语言**:Java 8 - **构建工具**:Maven - **UI框架**:Java Swing(深色科技风格) - **代码审查**:Python + iFlow Skills - **主要依赖**: - FastJSON 1.2.51(JSON 解析) - Apache Commons Lang3 3.12.0(字符串工具) ## 📁 项目结构 ``` global-replacement/ ├── .iflow/ │ └── skills/ # iFlow 技能插件 │ ├── code-review.yaml # 代码审查配置 │ ├── scripts/ │ │ └── code_review.py # 代码审查脚本 │ └── README.md # Skill 使用文档 ├── src/main/ │ └── java/com/midoo/ │ ├── MainFrame.java # 主程序入口(GUI界面) │ └── utils/ │ ├── BackupUtil.java # 备份工具类(线程安全) │ ├── ConstantUtil.java # 常量定义 │ ├── FileUtil.java # 文件操作工具类(修复资源泄漏) │ ├── JsonUtil.java # JSON 处理工具类(添加错误处理) │ └── RuleUtil.java # 规则处理工具类(修复正则注入) ├── lib/ # Maven 依赖库 │ ├── fastjson-1.2.51.jar │ └── commons-lang3-3.12.0.jar ├── spotbugs-exclude.xml # SpotBugs 排除规则 ├── build.bat # Windows 编译脚本 ├── run.bat # Windows 运行脚本 ├── run.ps1 # PowerShell 运行脚本 ├── code-review.bat # 代码审查脚本 ├── download-libs.ps1 # 依赖下载脚本 ├── pom.xml # Maven 项目配置(含代码审查插件) ├── README.md # 项目说明文档 └── LICENSE # 开源许可证 ``` ## 🚀 快速开始 ### 前置要求 - JDK 8 或更高版本 - Windows / Linux / macOS - Python 3.8+(代码审查功能) ### Windows 用户 1. **下载依赖**(首次运行): ```bash powershell -ExecutionPolicy Bypass -File download-libs.ps1 ``` 2. **编译项目**: ```bash mvn clean package ``` 或使用批处理文件: ```bash build.bat ``` 3. **运行程序**: ```bash run.bat ``` ### Linux/macOS 用户 1. **编译项目**: ```bash mvn clean package ``` 2. **运行程序**: ```bash java -jar target/global-replacement-1.0.0-jar-with-dependencies.jar ``` ## 📖 使用指南 ### 基本流程 1. **选择目录**:点击"选择目录"按钮,选择要处理的根目录 2. **设置规则**:输入扫描关键字和目标关键字 3. **智能扫描**:点击"扫描并生成规则"按钮,系统会: - 递归扫描所有目录和文件 - 基于实际扫描结果生成规则(只生成找到的变体) - 多线程并行扫描,提高速度 4. **配置范围**:选择应用范围(目录/文件名/文件内容) 5. **执行替换**:点击"开始执行",系统会: - 自动备份(可选项) - 按顺序处理文件和目录 - 显示详细进度和日志 - 自动清空所有输入内容 ### 智能扫描规则 扫描完成后,系统只会为**实际找到的关键字变体**生成替换规则: - ✅ 如果扫描到 `MyKeyword` → 生成规则 - ❌ 如果未扫描到 `MYKEYWORD` → 不生成规则 - ❌ 如果未扫描到 `mykeyword` → 不生成规则 ### 多线程扫描优化 - 使用固定大小线程池(最多 4 个线程) - 并行扫描目录、文件和图片 - 自动处理线程池资源,避免泄漏 - 添加超时机制(60 秒) ## 🔍 代码审查 ### 使用 iFlow Skill ```bash # 基本审查 skill: "code-review" # 审查指定项目 skill: "code-review" project_path: "/path/to/project" # 审查并自动修复 skill: "code-review" project_path: "." auto_fix: true # 仅审查严重问题 skill: "code-review" project_path: "." severity_level: "critical" ``` ### 使用命令行脚本 ```bash python .iflow/skills/scripts/code_review.py . --severity high ``` ### 审查功能 - **资源泄漏检测**:检测未正确关闭的流和资源 - **线程安全分析**:检测并发访问问题 - **安全漏洞扫描**:检测正则注入、路径遍历等 - **代码风格检查**:检测命名规范和代码格式 ### 代码审查插件 项目已集成 Maven 代码审查插件: ```bash # 运行所有代码审查 mvn clean verify # 单独运行 Checkstyle mvn checkstyle:check # 单独运行 PMD mvn pmd:check # 单独运行 SpotBugs mvn spotbugs:check # 跳过代码审查(快速构建) mvn clean package -Dcheckstyle.skip=true -Dpmd.skip=true -Dspotbugs.skip=true ``` ## 📝 最佳实践 ### 1. 备份策略 - ✅ **始终勾选备份选项** - ✅ 备份文件命名:`原目录名_backup_日期时间` - ✅ 测试环境先验证,生产环境再执行 ### 2. 规则设置 - ✅ 扫描关键字和目标关键字不能相同 - ✅ 使用智能扫描,而非手动添加所有变体 - ✅ 检查生成的规则是否符合预期 ### 3. 应用范围 - ✅ 重命名项目:勾选"应用到目录" - ✅ 修改包名:仅勾选"应用到文件名"和"应用到文件内容" - ✅ 修改文本:仅勾选"应用到文件内容" ### 4. 图片处理 - ✅ 图片文件自动识别:`.png`, `.jpg`, `.jpeg`, `.gif`, `.bmp`, `.ico` - ✅ 只修改文件名,不修改内容 - ✅ 日志中会特别标注图片文件 ## 🔧 代码改进 ### v2.1 (2026-01-31) #### 修复的严重问题 1. **资源泄漏** ✅ - FileUtil.replaceContext 使用 try-with-resources - FileUtil.fileContextToString 使用 try-with-resources - 所有文件流正确关闭 2. **线程安全** ✅ - rules 集合添加同步锁保护 - getCurrentRules() 返回副本 - 所有修改操作使用 synchronized 3. **线程池泄漏** ✅ - 添加 try-finally 确保线程池关闭 - 添加超时机制(60 秒) - 正确处理中断 4. **正则表达式注入** ✅ - RuleUtil.replaceReg 使用 Pattern.quote() - 使用 Matcher.quoteReplacement() 5. **JSON 解析错误** ✅ - JsonUtil.stringToMap 添加空值检查 - 添加异常处理和错误提示 6. **字符编码** ✅ - 文件读写使用显式 UTF-8 编码 - 添加 StandardCharsets 导入 #### 优化功能 1. **多线程扫描** ⚡ - 并行扫描目录、文件、图片 - 提升大型项目扫描速度 2. **智能规则生成** 🎯 - 只为实际找到的变体生成规则 - 避免生成无用的规则 3. **自动清理** 🧹 - 替换完成后自动清空所有输入 - 方便下次操作 #### 新增功能 1. **代码审查 Skill** 🔍 - 集成 iFlow 代码审查功能 - 支持自动检测和修复 2. **Maven 代码审查插件** 📦 - Checkstyle(代码风格) - PMD(代码质量) - SpotBugs(缺陷检测) ## ❓ 常见问题 ### Q: 为什么扫描后没有生成大写的规则? A: 扫描只会为**实际找到的关键字变体**生成规则。如果项目中没有大写的包名,就不会生成大写的替换规则。这样可以避免不必要的替换。 ### Q: 替换后能撤销吗? A: 如果勾选了"执行前备份"选项,可以使用备份文件夹中的文件恢复。备份文件夹命名格式:`原目录名_backup_日期时间`。 ### Q: 图片文件会被修改内容吗? A: 不会。系统会自动识别图片文件(`.png`, `.jpg`, `.jpeg`, `.gif`, `.bmp`, `.ico`),只修改文件名,不会修改图片内容。 ### Q: 支持哪些 Java 版本? A: 支持 Java 8 及以上版本。项目使用 Java 8 编译,与更高版本兼容。 ### Q: 如何处理大型项目? A: 系统使用多线程扫描和流式处理,可以高效处理大型项目。建议: - 先在测试环境验证 - 使用备份功能 - 分批次处理 ## 📄 许可证 本项目采用 MIT 开源许可证,详见 [LICENSE](LICENSE) 文件。 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📧 联系方式 如有问题或建议,请通过以下方式联系: - 提交 [Issue](https://gitee.com/ydscode/global-replacement/issues) - 发送 [Pull Request](https://gitee.com/ydscode/global-replacement/pulls) --- **Global Replacement Tool** - 让批量替换更简单、更安全、更高效! 🚀