版本 3.0 | 整合 AI 理解能力 + 精确统计分析
5 分钟生成专业项目体检报告,量化技术债务,发现代码隐患,让项目架构一目了然。
| 能力 | 说明 |
|------|------|
| 📊 技术债务评分 | 0-100 分量化代码健康度,综合上下文评估 |
| 🔍 代码隐患扫描 | 自动发现大文件、低注释、旧语法、复杂函数 |
| 🏗️ 架构可视化 | 识别设计模式(Module/Observer/Factory/Strategy) |
| 📋 项目元信息提取 | 解析 manifest/pages.json、package.json 等配置 |
| 📝 生成体检报告 | 人类可读的 Markdown 报告 + 结构化数据 |
当用户需要以下帮助时触发:
1️⃣ 项目识别 → 2️⃣ 配置解析 → 3️⃣ 代码扫描 → 4️⃣ 评分计算 → 5️⃣ 报告生成
查找以下特征文件确定项目根目录:
| 项目类型 | 必需文件 | 其他特征 |
|---------|---------|---------|
| uni-app | manifest.json | pages.json、uni.scss |
| Vue 2 | package.json | vue.config.js、vue-template-compiler |
| Vue 3 | package.json | vite.config.js、@vue/compiler-sfc |
// uni-app 判断
hasManifest = fs.existsSync('manifest.json')
hasPages = fs.existsSync('pages.json')
isUniApp = hasManifest && hasPages
// Vue 2 判断
hasVueCompiler = packageJson.devDependencies['vue-template-compiler']
// Vue 3 判断
hasVue3Compiler = packageJson.devDependencies['@vue/compiler-sfc']
标准目录(按优先级):
├── pages/ # 页面目录
├── pages-*/ # uni-app 多端页面
├── components/ # 组件
├── static/ # 静态资源
├── common/ 或 utils/ # 工具函数
├── mixins/ # 混入
├── uni_modules/ # uni-app 插件
├── store/ 或 vuex/ # 状态管理
├── api/ # API 接口
└── components/ # Vue 组件
| 文件 | 分析内容 | 重要性 |
|------|---------|--------|
| manifest.json | appid、名称、平台配置、权限、原生插件、广告 SDK | ⭐⭐⭐ |
| pages.json | 页面路由、tabBar、分包配置、全局样式 | ⭐⭐⭐ |
| package.json | 依赖、脚本命令、Vue 版本 | ⭐⭐⭐ |
| uni.scss | 全局样式变量 | ⭐⭐ |
| 文件 | 分析内容 | 重要性 |
|------|---------|--------|
| package.json | 依赖、版本、构建脚本、Vue 版本 | ⭐⭐⭐ |
| vue.config.js | 构建配置 | ⭐⭐ |
| vite.config.js | Vite 插件、构建配置 | ⭐⭐ |
| .eslintrc.js | ESLint 规则 | ⭐ |
| babel.config.js | 转译配置 | ⭐ |
Vue2 → Vue3 迁移问题
| 检查项 | Vue2 写法 | Vue3 应改为 | 优先级 |
|--------|----------|------------|--------|
| 生命周期 | destroyed | unmounted | 🔴 高 |
| 生命周期 | beforeDestroy | beforeUnmount | 🔴 高 |
| 全局 API | new Vue() | createApp() | 🔴 高 |
| 原型挂载 | Vue.prototype | app.config.globalProperties | 🔴 高 |
| 插件安装 | Vue.use() | app.use() | 🔴 高 |
| v-model | v-model="value" | v-model="modelValue" | 🟡 中 |
| v-model | @input | @update:modelValue | 🟡 中 |
| 插槽 | slot="xxx" | v-slot:xxx 或 #xxx | 🟡 中 |
| 事件 | .sync 修饰符 | v-model:xxx | 🟡 中 |
| 样式 | /deep/ | :deep() | 🟡 中 |
| 响应式 | Vue.observable | reactive / ref | 🟡 中 |
| 状态管理 | Vuex | Pinia | 🟡 中 |
uni-app 特有说明
| 检查项 | 说明 | 行动 |
|--------|------|------|
| onUnload | uni-app 页面生命周期,保留不变 | ✅ 正常 |
| onShow/onHide | uni-app 独有生命周期,保留不变 | ✅ 正常 |
| uni. API | 平台兼容性检查 | 📋 检查 |
| nvue 文件 | 原生渲染页面 | 📋 注意 |
评分体系(0-100 分)
| 问题类型 | 扣分规则 | 说明 |
|---------|---------|------|
| var 声明 | -2/处 | 应使用 let/const |
| 长函数 >100行 | -5/个 | 建议拆分 |
| 超大文件 >500行 | -3/个 | 警告阈值 |
| 超大文件 >1000行 | -5/个 | 严重阈值 |
| 深层嵌套 >4层 | -3/处 | 建议重构 |
| 硬编码值 | -1/处 | 应提取为常量 |
| 未使用的导入 | -0.5/个 | 清理代码 |
| console.log | -0.5/个 | 生产环境应移除 |
| TODO / FIXME | -1/个 | 遗留任务 |
| 空文件 | -2/个 | 占位符文件 |
评分标准
| 分数 | 等级 | 说明 |
|------|------|------|
| 90-100 | 🏆 A | 优秀,代码健康 |
| 80-89 | ✅ B | 良好,轻微问题 |
| 60-79 | ⚠️ C | 一般,需关注 |
| 40-59 | 🔶 D | 较差,建议改进 |
| <40 | ❌ F | 差,需要重构 |
| 模式 | 识别特征 | 代码示例 |
|------|---------|---------|
| 单例模式 | getInstance() 或 static get instance | ``js static getInstance() { return Instance } `` |
| 工厂模式 | create*() 或 factory | ``js createUser() { return new User() } `` |
| 观察者模式 | on() / off() / emit() | ``js on('event', handler) `` |
| 模块模式 | export default 或 export const | ``js export default {} `` |
| 策略模式 | 条件分支策略对象 | ``js const strategies = {} `` |
| Mixin 模式 | Vue.mixin() | ``js Vue.mixin({}) `` |
注释比例 = 注释行数 / (总行数 - 空行数) × 100%
| 比例 | 等级 | 建议 |
|------|------|------|
| ≥20% | ✅ 优秀 | 良好文档 |
| 10-19% | ⚠️ 一般 | 可接受 |
| 5-9% | 🔶 偏低 | 建议增加 |
| <5% | 🔴 严重 | 必须改进 |
| 类型 | 扩展名 |
|------|--------|
| Vue 文件 | .vue |
| JavaScript | .js, .jsx |
| TypeScript | .ts, .tsx |
| 样式文件 | .css, .scss, .less |
| JSON 配置 | .json |
总行数 = 代码行 + 注释行 + 空行
有效代码行 = 总行数 - 空行
注释比例 = 注释行 / 有效代码行 × 100%
必须排除:
node_modules/
unpackage/
uni_modules/ (第三方插件)
.git/
dist/, build/, .output/
.min.js, .min.css
可选排除:
static/ (大文件)
public/ (静态资源)
.test.js, .spec.js
# 📊 [项目名称] 项目分析报告
生成时间: YYYY-MM-DD HH:mm:ss
---
## 1. 项目概览
| 项目 | 值 |
|------|-----|
| 项目类型 | uni-app / Vue 2 / Vue 3 |
| 源码目录 | /path/to/src |
| 总文件数 | N |
| 总代码行数 | N |
| 注释比例 | N% |
---
## 2. 技术栈
- **框架版本**: Vue X.X.X
- **构建工具**: Vite / Webpack / Vue CLI
- **包管理器**: npm / yarn / pnpm
- **UI 框架**: Element UI / Vant / ...
- **状态管理**: Vuex / Pinia
---
## 3. 项目结构
[目录树,最大显示 3 层]
---
## 4. 技术债务评分
### 4.1 综合评分
| 指标 | 分数 |
|------|------|
| 代码规范 | X/20 |
| 复杂度 | X/20 |
| 安全性 | X/20 |
| 可维护性 | X/20 |
| Vue 迁移 | X/20 |
| **总分** | **X/100** |
评分: **[A/B/C/D/F]** - [优秀/良好/一般/较差/差]
### 4.2 问题统计
| 问题类型 | 数量 |
|---------|------|
| `var` 声明 | N |
| 长函数 (>100行) | N |
| 超大文件 (>500行) | N |
| 深层嵌套 (>4层) | N |
| `TODO` / `FIXME` | N |
| `console.log` | N |
---
## 5. Vue 迁移建议
### 🔴 高优先级
1. **[问题描述]**
- 位置: `文件路径`
- 建议: [修改方案]
### 🟡 中优先级
1. **[问题描述]**
- 位置: `文件路径`
- 建议: [修改方案]
---
## 6. 发现的问题
### 🔴 严重问题
| 问题 | 文件 | 建议 |
|------|------|------|
| ... | ... | ... |
### 🟡 中等问题
| 问题 | 文件 | 建议 |
|------|------|------|
| ... | ... | ... |
### 🟢 建议优化
| 问题 | 文件 | 建议 |
|------|------|------|
| ... | ... | ... |
---
## 7. 设计模式
识别到的设计模式:
- **模块模式**: [文件列表]
- **观察者模式**: [文件列表]
- **工厂模式**: [文件列表]
---
## 8. 总结
[总体评价和改进建议]
---
*报告由 uniapp-vue-analyzer v3.0 自动生成*
分析 D:\projects\my-uniapp 项目
D:\projects\my-uniapp\manifest.json → 确定是 uni-app 项目
D:\projects\my-uniapp\pages.json → 获取页面结构
.vue 文件 → 逐个检查 Vue 语法
默认输出 Markdown 格式报告。如用户需要,可额外生成:
node_modules/、unpackage/、uni_modules/、dist/ 等
本 Skill 无需预装脚本,所有分析由 AI 动态执行 | v3.0
共 1 个版本