# rvcommit-scanner **Repository Path**: rvsmart-porting/rvcommit-scanner ## Basic Information - **Project Name**: rvcommit-scanner - **Description**: 面向Git仓库的RV相关commit扫描工具 - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-04-30 - **Last Updated**: 2025-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RVCommit Scanner
[![Python Version](https://img.shields.io/badge/python-3.7+-blue.svg)](https://python.org) [![License](https://img.shields.io/badge/license-GPL--3.0-blue.svg)](LICENSE) 面向Git仓库的RISC-V相关commit扫描工具 [English](README.en.md) | 中文
## 📖 项目介绍 RVCommit Scanner 是一个专门用于扫描Git仓库中RISC-V架构相关提交的工具。软件项目通常统一维护特定于各种指令集架构的代码,各架构特定的代码及其修改都在相同的Git仓库中完成。本项目旨在建立智能匹配规则,根据规则扫描Git仓库,提取RISC-V架构相关的commit,并对commit数据进行多视角的处理和可视化呈现。 ### 🎯 核心功能 - **智能关键词匹配**: 使用正则表达式匹配RISC-V相关关键词(rv32、rv64、risc-v等) - **提交历史扫描**: 深度扫描Git仓库的提交历史,识别RISC-V相关修改 - **远程仓库支持**: 支持直接扫描GitHub、GitLab等远程仓库(HTTP/HTTPS/SSH) - **多种输出格式**: 支持控制台输出、JSON文件导出、Web界面展示 - **数据可视化**: 提供Web界面进行交互式数据展示和分析 - **灵活的扫描控制**: 支持限制扫描数量、只显示匹配项、首次匹配即停止等选项 ## 🚀 快速开始 ### 环境要求 - Python 3.7+ - Git ### 安装方式 ```bash git clone https://github.com/yourusername/rvcommit-scanner.git cd rvcommit-scanner pip install -e . ``` #### 验证安装 安装完成后,验证命令是否可用: ```bash # 检查RISC-V扫描器 rvcommit-scanner help # 检查通用Git扫描器 git-scan --help ``` ### 基本用法 #### RISC-V专用扫描器 (rvcommit-scanner) **扫描RISC-V相关提交:** ```bash # 扫描当前目录 rvcommit-scanner scan # 扫描指定目录 rvcommit-scanner scan /path/to/your/git/repo # 扫描GitHub仓库 rvcommit-scanner scan https://github.com/user/repo.git # 扫描SSH仓库 rvcommit-scanner scan git@github.com:user/repo.git # 保存为JSON文件 rvcommit-scanner scan /path/to/repo --output results.json ``` **启动Web界面:** ```bash # 扫描后自动启动Web服务器 rvcommit-scanner scan /path/to/repo --web # 指定端口 rvcommit-scanner scan /path/to/repo --web --port 9000 # 单独启动Web服务器 rvcommit-scanner web --port 8080 # 显示已有的扫描结果 rvcommit-scanner web --data results.json --port 8080 ``` **获取帮助信息:** ```bash # 显示主帮助 rvcommit-scanner help # 显示scan命令帮助 rvcommit-scanner help scan # 显示web命令帮助 rvcommit-scanner help web ``` #### Git Commit Scanner (通用工具) 通用的Git提交扫描工具,支持自定义关键词: ```bash # 基本用法:扫描特定关键词 git-scan /path/to/repo "keyword" # 使用正则表达式 git-scan /path/to/repo "rv(32|64)" --regex # 限制扫描数量 git-scan /path/to/repo "risc-v" --limit 100 ``` ## 📊 功能特性 ### 🔍 智能扫描引擎 - **关键词匹配**: 内置RISC-V相关关键词模式 - `rv32`, `rv64`, `rv128` - `risc-v`, `riscv`, `risc_v` - 支持大小写不敏感匹配 - **文件过滤**: 自动排除锁文件和无关文件 - **正则表达式**: 支持复杂的模式匹配 ### 🌐 Web可视化界面 - **现代化UI**: 基于Tailwind CSS的响应式设计 - **交互式图表**: 使用Chart.js进行数据可视化 - **多维度分析**: - 提交时间线分析 - 文件影响热力图 - 贡献者统计 - 关键词频率分析 - **国际化**: 中英文界面切换 ### 📈 数据分析 - **提交统计**: 按时间、作者、文件类型统计 - **影响分析**: 分析代码变更的影响范围 - **趋势分析**: RISC-V相关开发活动的时间趋势 - **导出功能**: JSON格式的详细扫描报告 ## 📁 项目结构 ``` rvcommit-scanner/ ├── git_commit_scanner/ # 通用Git提交扫描器 │ ├── __init__.py │ ├── cli.py # 命令行接口 │ └── scanner.py # 核心扫描逻辑 ├── rvcommit_scanner/ # RISC-V专用扫描器 │ ├── __init__.py │ ├── cli.py # 主命令行接口 │ ├── rv_keyword_scanner.py # RISC-V关键词扫描器 │ └── html/ # Web界面资源 │ ├── index.html # 主页面 │ ├── styles.css # 样式文件 │ └── js/ # JavaScript文件 ├── test/ # 测试文件和数据 ├── requirements.txt # Python依赖 ├── setup.py # 安装配置 └── README.md # 项目文档 ``` ## 🔧 配置选项 ### 命令行选项参考 #### rvcommit-scanner scan 命令选项 | 选项 | 短选项 | 类型 | 默认值 | 说明 | |------|--------|------|---------|------| | `--limit` | `-n` | 整数 | 无限制 | 限制扫描的提交数量 | | `--only-matched` | `-m` | 标志 | False | 只显示匹配RISC-V关键词的提交 | | `--only-once` | `--once` | 标志 | False | 找到第一个匹配后停止扫描 | | `--output` | `-o` | 路径 | 无 | 指定JSON结果输出文件 | | `--web` | `-w` | 标志 | False | 扫描后启动Web服务器 | | `--port` | `-p` | 整数 | 8080 | Web服务器端口号 | | `--fast-mode` | `-f` | 标志 | False | 启用快速扫描模式,跳过某些检查 | #### rvcommit-scanner web 命令选项 | 选项 | 短选项 | 类型 | 默认值 | 说明 | |------|--------|------|---------|------| | `--port` | `-p` | 整数 | 8080 | Web服务器端口号 | | `--data` | `-i` | 路径 | 无 | 显示的JSON数据文件 | #### git-scan 命令选项 | 选项 | 短选项 | 类型 | 默认值 | 说明 | |------|--------|------|---------|------| | `--regex` | `-r` | 标志 | False | 启用正则表达式匹配 | | `--exclude` | `-e` | 字符串 | 无 | 排除指定文件或目录(正则表达式) | | `--type` | `-t` | 字符串 | all | 限制扫描的对象类型(all, commit, file, msg) | | `--limit` | `-n` | 整数 | 无限制 | 限制扫描的提交数量 | | `--only-matched` | `-m` | 标志 | False | 只显示匹配关键词的提交 | ### 扫描配置 可以通过修改 `rvcommit_scanner/rv_keyword_scanner.py` 中的关键词模式来自定义扫描规则: ```python common_rv_keywords = [ ScanPattern(r"(?i)(?