comment-analysis
Version:
Code comment rate analysis tool with multi-language support
147 lines (111 loc) • 6.17 kB
Markdown
# 代码注释率统计工具
一个用于统计代码文件中注释率的命令行工具,支持多种编程语言和文件格式。
## 功能特性
- 🎯 支持多种文件类型:Vue、JavaScript、TypeScript、JSX、TSX、Python、HTML、CSS、SCSS、LESS、Go、Rust、Java
- 📊 统计多种注释类型:单行注释、多行注释、行内注释
- 📈 生成详细的统计表格,包含文件类型、文件数目、注释行数、空行、总行数、注释率
- 🎨 美观的彩色输出,使用 chalk 库美化
- 📁 支持递归分析文件夹及其子文件夹
- 🌍 多语言支持(英文/中文)
## 安装
### 方式一:从源码安装
1. 克隆或下载项目到本地
2. 安装依赖:
```bash
pnpm install
```
### 方式二:全局安装(推荐)
```bash
npm install -g comment-analysis
```
## 使用方法
### 基本用法
```bash
# 分析指定文件夹
comment-analysis /path/to/your/project
# 或者从源码运行
node index.js /path/to/your/project
pnpm start /path/to/your/project
```
### 语言选项
```bash
# 使用英文(默认)
comment-analysis /path/to/your/project
# 使用中文
comment-analysis /path/to/your/project --lang zh-CN
comment-analysis /path/to/your/project -l zh-CN
```
### 示例
```bash
# 分析当前目录
comment-analysis .
# 分析特定项目文件夹
comment-analysis /home/user/my-project
# 分析相对路径
comment-analysis ./src
# 使用中文输出分析
comment-analysis . --lang zh-CN
```
## 输出示例
```
开始分析文件夹: /path/to/project
正在分析 3 个文件...
╔═══════════════╤════════════╤════════════╤══════════╤════════════╤═══════════════╗
║ 文件类型 │ 文件数目 │ 注释行数 │ 空行 │ 总行数 │ 注释率 ║
╟───────────────┼────────────┼────────────┼──────────┼────────────┼───────────────╢
║ Vue │ 1 │ 24 │ 19 │ 141 │ 17.02% ║
╟───────────────┼────────────┼────────────┼──────────┼────────────┼───────────────╢
║ Python │ 1 │ 90 │ 33 │ 172 │ 52.33% ║
╟───────────────┼────────────┼────────────┼──────────┼────────────┼───────────────╢
║ JavaScript │ 1 │ 25 │ 11 │ 70 │ 35.71% ║
╟───────────────┼────────────┼────────────┼──────────┼────────────┼───────────────╢
║ 总计 │ 3 │ 139 │ 63 │ 383 │ 36.29% ║
╚═══════════════╧════════════╧════════════╧══════════╧════════════╧═══════════════╝
注释率说明: 优秀 (>30%) | 良好 (15-30%) | 需要改进 (<15%)
```
## 支持的文件类型
| 文件类型 | 扩展名 | 支持的注释类型 |
| ---------- | ------ | ------------------------------------------------- |
| Vue | .vue | // 单行注释、/\* \*/ 多行注释、<!-- --> HTML 注释 |
| JavaScript | .js | // 单行注释、/\* \*/ 多行注释 |
| TypeScript | .ts | // 单行注释、/\* \*/ 多行注释 |
| JSX | .jsx | // 单行注释、/\* \*/ 多行注释、{/\* \*/} JSX 注释 |
| TSX | .tsx | // 单行注释、/\* \*/ 多行注释、{/\* \*/} JSX 注释 |
| Python | .py | # 单行注释、""" """ 多行注释、''' ''' 多行注释 |
| HTML | .html | <!-- --> HTML 注释 |
| CSS | .css | // 单行注释、/\* \*/ 多行注释 |
| SCSS | .scss | // 单行注释、/\* \*/ 多行注释 |
| LESS | .less | // 单行注释、/\* \*/ 多行注释 |
| Go | .go | // 单行注释、/\* \*/ 多行注释 |
| Rust | .rs | // 单行注释、/\* \*/ 多行注释 |
| Java | .java | // 单行注释、/\* \*/ 多行注释、/\*\* \*/ 文档注释 |
## 统计说明
- **文件数目**: 该类型文件的总数量
- **注释行数**: 包含注释的行数(包括单行注释、多行注释、行内注释)
- **空行**: 完全为空或只包含空白字符的行数
- **总行数**: 文件的总行数
- **注释率**: 注释行数占总行数的百分比
## 项目结构
```
comment-analysis/
├── index.js # 主程序文件
├── package.json # 项目配置和依赖
├── README.md # 英文文档
├── README.zh-CN.md # 中文文档
├── .gitignore # Git忽略文件配置
└── tests/ # 测试文件文件夹
├── README.md # 测试文件说明
├── test-example.js # JavaScript测试文件
├── test-example.vue # Vue测试文件
├── test-example.py # Python测试文件
├── test-example.go # Go测试文件
├── test-example.rs # Rust测试文件
└── test-example.java # Java测试文件
```
## 依赖项
- `commander`: 命令行参数解析
- `glob`: 文件模式匹配
- `chalk`: 终端颜色输出
- `cli-table3`: 美观的表格输出
## 许可证
MIT License