# comment-clear **Repository Path**: aleckstygit/comment-clear ## Basic Information - **Project Name**: comment-clear - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-29 - **Last Updated**: 2025-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 命令行注释清理工具 一个用于清理代码文件中空行和特定类型注释行的命令行工具,支持单文件处理和目录批量处理,提供自定义备份选项和详细的处理统计信息。 ## 功能特性 - **清理空行**:自动移除代码文件中的所有空行 - **清理注释行**:自动移除仅包含 `//` 及其后面只有空格、斜杠、横线或等号的注释行 - **支持目录递归处理**:可批量处理整个目录及其子目录中的所有指定扩展名的文件 - **保留有用注释**:只移除无意义的装饰性注释行,保留实际包含注释内容的行 - **自动备份**:默认情况下会在修改文件前创建备份文件 - **支持指定文件扩展名**:可通过参数指定要处理的文件类型,默认为.cs - **支持批处理**:可以通过命令行参数灵活配置处理方式 ## 安装方法 ### 方法一:直接使用发布的exe文件 1. 从项目的发布目录获取 `CleanComment.exe` 文件 2. 将该文件放置在您方便访问的位置 3. 直接运行或通过命令行调用 ### 方法二:从源代码构建 1. 确保已安装 [.NET 6.0 SDK](https://dotnet.microsoft.com/download/dotnet/6.0) 2. 克隆或下载项目代码 3. 在项目根目录执行以下命令: ```bash dotnet publish -c Release ``` 4. 在 `bin\Release\net6.0\win-x64\publish\` 目录中找到生成的 `CleanComment.exe` 文件 ## 使用方法 ### 基本用法 最简单的用法是直接指定要处理的文件,工具将自动创建备份并修改原文件: ```bash CleanComment.exe YourFile.cs ``` ### 使用批处理文件 对于Windows用户,可以使用项目中提供的批处理文件: 1. 双击运行 `运行清理工具.bat` 2. 根据提示输入文件路径或直接拖放文件到窗口中 ## 命令行参数 | 参数名 | 简写 | 描述 | 默认值 | |--------|------|------|--------| | `--directory` | `-d` | 指定要递归处理的目录路径(会递归处理所有子目录中的指定扩展名文件) | 不使用(默认处理单文件) | | `--input` | `-i` | 指定输入文件路径 | 直接作为参数传入 | | `--output` | `-o` | 指定输出文件路径(不设置则修改原文件) | 覆盖输入文件(不创建备份) | | `--nobackup` | `-nb` | 不创建备份文件 | 不使用(默认创建备份) | | `--backup-suffix` | `-bs` | 自定义备份文件后缀(工具会确保后缀名以.开头) | `.backup` | | `--extension` | `-e` | 指定要处理的文件扩展名(工具会确保扩展名以.开头) | `.cs` | ## 使用示例 ### 示例1:基本用法(创建默认备份) ```bash CleanComment.exe Example.cs ``` 执行后会: - 创建 `Example.cs.backup` 备份文件 - 清理 `Example.cs` 中的空行和特定类型的注释行 ### 示例2:不创建备份 ```bash CleanComment.exe Example.cs --nobackup ``` 或使用短参数: ```bash CleanComment.exe Example.cs -nb ``` 执行后会直接修改原文件,不创建备份。 ### 示例3:自定义备份后缀 ```bash CleanComment.exe Example.cs --backup-suffix=bak ``` 或使用短参数: ```bash CleanComment.exe Example.cs -bs bak ``` 执行后会创建 `Example.cs.bak` 备份文件。注意:即使您提供的后缀不以.开头,工具也会自动添加. ### 示例4:指定输入和输出文件 ```bash CleanComment.exe --input SourceFile.cs --output ProcessedFile.cs ``` 或使用短参数: ```bash CleanComment.exe -i SourceFile.cs -o ProcessedFile.cs ``` 执行后会将 `SourceFile.cs` 处理后保存为 `ProcessedFile.cs`,不修改原文件,也不会创建备份文件。 ### 示例5:处理整个目录 ```bash CleanComment.exe --directory src ``` 或使用短参数: ```bash CleanComment.exe -d src ``` 执行后会递归处理 `src` 目录及其子目录中的所有 `.cs` 文件,为每个文件创建备份并清理其中的空行和特定类型的注释行。处理完成后会显示整个目录的处理统计信息。 ### 示例6:处理目录且不创建备份 ```bash CleanComment.exe --directory src --nobackup ``` 或使用短参数: ```bash CleanComment.exe -d src -nb ``` 执行后会递归处理 `src` 目录及其子目录中的所有 `.cs` 文件,但不创建备份文件。 ### 示例7:处理特定扩展名的文件 ```bash CleanComment.exe --input script.js --extension=js ``` 或使用短参数: ```bash CleanComment.exe -i script.js -e js ``` 执行后会处理指定的JavaScript文件,并根据其扩展名应用相应的注释清理逻辑。 ### 示例8:处理目录中特定扩展名的文件 ```bash CleanComment.exe --directory src --extension=ts ``` 或使用短参数: ```bash CleanComment.exe -d src -e ts ``` 执行后会递归处理 `src` 目录及其子目录中的所有 `.ts` 文件(TypeScript文件),为每个文件创建备份并清理其中的空行和特定类型的注释行。 ## 注意事项 1. 该工具会清理空行和特定类型的注释行(只有 `//` 或 `//` 后跟空格、斜杠、横线、等号的注释行),不会删除包含实际注释内容的注释行 2. 使用 `--directory` 参数时,工具会递归处理指定目录及其所有子目录中的指定扩展名文件 3. 使用 `--output` 参数时,工具不会创建备份文件,而是直接将处理结果写入指定的输出文件 4. 处理目录时,每个文件都会单独创建备份(如指定了创建备份选项) 5. 对于不匹配指定扩展名的文件,工具会显示警告但仍会继续处理 6. 处理大量文件或大文件时可能会有短暂延迟 7. 处理完成后,工具会显示详细的统计信息,包括原始行数、处理后行数、移除的空行数和注释行数 ## 开发说明 如果您想参与开发或修改此工具,请遵循以下步骤: 1. 确保已安装 [.NET 6.0 SDK](https://dotnet.microsoft.com/download/dotnet/6.0) 2. 克隆或下载项目代码 3. 使用 Visual Studio 或 VS Code 打开项目 4. 进行修改后,使用 `dotnet build` 命令构建项目 5. 使用 `dotnet run` 命令运行项目进行测试 ## 许可证 [MIT](LICENSE) ## 处理效果示例 #### 处理前: ```csharp // This is a normal comment class Program { // ------------------------------------ // Test method // ------------------------------------ static void Main() { // // Some empty comment lines // Console.WriteLine("Hello World!"); // =========== Console.WriteLine("End of program"); } } ``` #### 处理后: ```csharp // This is a normal comment class Program { // Test method static void Main() { Console.WriteLine("Hello World!"); Console.WriteLine("End of program"); } } ```