# SoftwareMetric **Repository Path**: muffincatt/software-metric ## Basic Information - **Project Name**: SoftwareMetric - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-25 - **Last Updated**: 2026-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SoftwareMetric 软件度量工具 - 基于 Java 和 Vue.js 的代码质量分析平台 ## 项目简介 本项目是一个综合性的软件度量工具,提供代码复杂度分析、控制流图可视化、数据流分析等功能。在原项目基础上,新增了控制流图绘制、多方法复杂度计算和 AI 智能分析等功能。 ## 项目依赖 - **JDK**: 17 - **前端框架**: Vue.js 2.x - **后端框架**: Spring Boot 3.0.6 - **数据库**: 无(轻量级文件处理) ## 快速开始 ### 后端启动 1. 确保已安装 JDK 17 2. 创建文件存储目录: ```bash mkdir D:\file ``` 3. 使用 Maven 构建并运行: ```bash cd backend mvn spring-boot:run ``` ### 前端启动 1. 安装依赖: ```bash cd frontend npm install ``` 2. 启动开发服务器: ```bash npm run serve ``` ### 文件上传说明 - 前端需要上传的四种文件存储在 `src/main/java/org/csu/softwaremetric/file` 目录下 - 直接拖动文件到前端上传区域即可 - 上传的文件会保存到 `D:\file` 目录,请确保该目录为空或文件名不重复 ## 功能特性 ### 核心功能 1. **行级圈复杂度分析** - 基于文本分析的近似复杂度计算 2. **图论 McCabe 复杂度** - 基于 AST 解析的精确复杂度计算 3. **控制流图可视化** - 使用 ECharts 绘制交互式控制流图 4. **多方法支持** - 自动识别并分析多个方法 ### 新增功能 1. **各方法控制流图** - 为每个方法独立构建控制流图,支持方法切换查看 2. **新复杂度计算方法** - 基于控制流图的图论公式 E-N+2 计算 3. **AI 智能分析** - 集成 AI 顾问功能,提供代码优化建议 ### 度量指标 | 指标 | 说明 | 计算方式 | |------|------|----------| | 行级圈复杂度 | 基于文本匹配的近似值 | 判定关键字数 + 1 | | 图论 McCabe | 基于控制流图的精确值 | E - N + 2 | | 区域数量 | 流程图中的区域数 | 与圈复杂度一致 | | 判断节点数 | 条件判断节点数量 | 控制流图统计 | ## 项目结构 ``` backend/ ├── src/main/java/org/csu/softwaremetric/ │ ├── controller/ # REST API 控制器 │ ├── service/ # 业务逻辑层 │ ├── entity/ # 数据实体 │ ├── config/ # 配置类 │ ├── utils/ # 工具类 │ └── file/ # 示例文件 └── pom.xml frontend/ ├── src/ │ ├── components/ # Vue 组件 │ ├── api/ # API 调用 │ ├── router/ # 路由配置 │ └── utils/ # 工具函数 └── package.json ``` ## API 接口 ### 文本文件分析 | 接口 | 方法 | 说明 | |------|------|------| | `/txt/uploadtxt` | POST | 上传文本文件 | | `/txt/getCycleComplexity` | GET | 获取圈复杂度 | | `/txt/getControlFlowGraph` | GET | 获取控制流图 | | `/txt/getRawCode` | POST | 分析粘贴的代码 | ### XML 文件分析 | 接口 | 方法 | 说明 | |------|------|------| | `/xml/uploadXml` | POST | 上传 XML 文件 | | `/xml/getMetrics` | GET | 获取度量指标 | ## 原项目地址 - 后端地址:`https://github.com/Messr-Y/metric` - 前端地址:`https://github.com/ReturnTmp/vue-manage-system-metrics` ## 许可证 MIT License ## 致谢 感谢原项目作者提供的基础框架,本项目在此基础上进行了功能扩展和优化。