codestat 0.2.0

Fast and safe code statistics tool
# CodeStat

用 Rust 写的代码统计工具,可以统计代码行数和编程语言分布。

[English Documentation](./README.md)

## 功能

- 使用 Rayon 并行处理
- Rust 实现,内存安全
- 分别统计代码、注释和空行
- 支持 50 多种编程语言
- 遵循 .gitignore 规则
- 支持表格、JSON、CSV 三种输出格式
- 增量缓存,重复运行更快

## 安装

```bash
cargo install codestat
```

或者从源码编译:

```bash
git clone https://github.com/Cactusinhand/codestat
cd codestat
cargo build --release
```

编译后的二进制文件在 `target/release/codestat`。

## 用法

基本用法:

```bash
# 分析当前目录
codestat

# 分析指定目录
codestat /path/to/project

# 分析单个文件
codestat src/main.rs
```

输出格式:

```bash
# 表格(默认)
codestat --format table .

# JSON
codestat --format json .

# CSV
codestat --format csv .
```

选项:

```bash
# 显示每个文件的统计
codestat -F .

# 显示进度
codestat --progress .

# 包含隐藏文件
codestat --hidden .

# 只统计特定语言
codestat --languages rust,python,go .

# 排除特定模式
codestat --exclude "*.test.js,*.min.css" .

# 禁用并行处理(减少内存占用)
codestat --no-parallel .

# 跟随符号链接
codestat --follow-links .
```

## 示例输出

表格格式:

```
================================================================================
 Language                  Files      Lines       Code   Comments     Blanks
--------------------------------------------------------------------------------
 Rust                          9       2536       1993        215        328
 Markdown                      2        356        260          0         96
 TOML                          1         35         32          0          3
--------------------------------------------------------------------------------
 Total                        12       2927       2285        215        427
================================================================================

Statistics completed in 0.014s (857 files/s, 209071 lines/s)
```

JSON 格式:

```json
{
  "summary": {
    "elapsed_ms": 6,
    "error_count": 0,
    "total_blanks": 405,
    "total_bytes": 84917,
    "total_code": 2235,
    "total_comments": 215,
    "total_files": 12,
    "total_lines": 2855
  },
  "languages": [
    {
      "blanks": 328,
      "bytes": 78300,
      "code": 1993,
      "comments": 215,
      "files": 9,
      "lines": 2536,
      "name": "Rust"
    },
    {
      "blanks": 74,
      "bytes": 5779,
      "code": 210,
      "comments": 0,
      "files": 2,
      "lines": 284,
      "name": "Markdown"
    },
    {
      "blanks": 3,
      "bytes": 838,
      "code": 32,
      "comments": 0,
      "files": 1,
      "lines": 35,
      "name": "TOML"
    }
  ],
  "files": null
}
```

## 实现说明

提升性能的技术:

- **内存映射**: 大文件使用 mmap,避免拷贝开销
- **字节级解析**: 直接操作 `&[u8]`,不做 UTF-8 验证
- **并行批处理**: 按文件大小排序,平衡负载
- **缓存检测**: 语言检测用静态 HashMap,O(1) 查找

## 许可证

MIT