Compare commits
No commits in common. "master" and "cyt" have entirely different histories.
|
|
@ -1,37 +0,0 @@
|
|||
---
|
||||
name: Bug报告
|
||||
about: 报告仓库中的问题或错误
|
||||
title: '[BUG] '
|
||||
labels: bug
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
## 🐛 Bug描述
|
||||
|
||||
请简洁清晰地描述bug。
|
||||
|
||||
## 🔍 复现步骤
|
||||
|
||||
1. 进入 '...'
|
||||
2. 点击 '...'
|
||||
3. 滚动到 '...'
|
||||
4. 看到错误
|
||||
|
||||
## ✅ 期望行为
|
||||
|
||||
请描述您期望的行为。
|
||||
|
||||
## 📸 截图
|
||||
|
||||
如有截图,请添加。
|
||||
|
||||
## 💻 环境信息
|
||||
|
||||
- **操作系统**:[如 macOS 14.0]
|
||||
- **浏览器**:[如 Chrome 120]
|
||||
- **仓库版本**:[如 v0.1.0]
|
||||
|
||||
## 📝 其他信息
|
||||
|
||||
添加任何其他相关的上下文信息。
|
||||
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
---
|
||||
name: 文档改进
|
||||
about: 建议改进仓库文档
|
||||
title: '[文档] '
|
||||
labels: documentation
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
## 📝 文档问题
|
||||
|
||||
请描述文档问题或改进建议。
|
||||
|
||||
## 📍 相关文档
|
||||
|
||||
[相关文档路径]
|
||||
|
||||
## 💡 改进建议
|
||||
|
||||
请描述您的改进建议。
|
||||
|
||||
## 🔗 相关Issue
|
||||
|
||||
如有相关Issue,请链接。
|
||||
|
||||
## 📝 其他信息
|
||||
|
||||
添加任何其他相关的信息。
|
||||
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
---
|
||||
name: 新工具建议
|
||||
about: 建议添加新的AI4SE工具
|
||||
title: '[新工具] '
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
## 🛠️ 工具基本信息
|
||||
|
||||
### 工具名称
|
||||
[工具名称]
|
||||
|
||||
### 工具类型
|
||||
- [ ] 需求分析类
|
||||
- [ ] 架构设计类
|
||||
- [ ] 代码生成类
|
||||
- [ ] 调试排障类
|
||||
- [ ] 代码重构类
|
||||
- [ ] 测试生成类
|
||||
- [ ] 文档生成类
|
||||
- [ ] 代码审查类
|
||||
- [ ] 项目管理类
|
||||
- [ ] DevOps/CI-CD类
|
||||
- [ ] 本地化大模型类
|
||||
- [ ] 全流程集成类
|
||||
|
||||
### 官方网站
|
||||
[工具官网链接]
|
||||
|
||||
### 开源地址(如适用)
|
||||
[GitHub仓库链接]
|
||||
|
||||
### 定价信息
|
||||
- 免费 / 付费 / 开源
|
||||
|
||||
## 📋 工具功能
|
||||
|
||||
请简要描述工具的核心功能。
|
||||
|
||||
## ✅ 工具筛选标准
|
||||
|
||||
### 功能匹配
|
||||
- [ ] 是AI驱动的软件工程工具
|
||||
- [ ] 功能明确,有实际使用价值
|
||||
|
||||
### 可用性
|
||||
- [ ] 开源工具 / 免费试用版 / API可调用
|
||||
- [ ] 便于读者复现测试
|
||||
|
||||
### 活跃度
|
||||
- [ ] 开源工具:近6个月有更新,GitHub星数≥1k
|
||||
- [ ] 闭源工具:行业主流工具
|
||||
|
||||
### 多样性
|
||||
- [ ] 覆盖不同技术栈(Python/JS/Java等)
|
||||
- [ ] 不同部署方式(云端/本地)
|
||||
- [ ] 不同大模型底座(GPT-4/CodeLlama/Qwen等)
|
||||
|
||||
## 🎯 推荐理由
|
||||
|
||||
请说明为什么推荐这个工具,以及它与其他工具的区别。
|
||||
|
||||
## 📝 其他信息
|
||||
|
||||
添加任何其他相关的信息。
|
||||
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
# Pull Request
|
||||
|
||||
## 📋 变更说明
|
||||
|
||||
请简要描述本次PR的变更内容。
|
||||
|
||||
## 🎯 变更类型
|
||||
|
||||
- [ ] 新增工具测试报告
|
||||
- [ ] 更新现有工具测试
|
||||
- [ ] 补充测试任务
|
||||
- [ ] 完善文档
|
||||
- [ ] 修复bug
|
||||
- [ ] 其他(请说明)
|
||||
|
||||
## 🛠️ 变更内容
|
||||
|
||||
### 新增工具(如适用)
|
||||
|
||||
- **工具名称**:[工具名称]
|
||||
- **工具类型**:[工具类型]
|
||||
- **测试任务**:[完成的测试任务]
|
||||
- **工具链接**:[工具详情链接]
|
||||
|
||||
### 更新内容(如适用)
|
||||
|
||||
- [ ] 更新工具测试结果
|
||||
- [ ] 更新工具版本信息
|
||||
- [ ] 补充测试场景
|
||||
- [ ] 修复测试错误
|
||||
- [ ] 完善文档
|
||||
|
||||
## ✅ 检查清单
|
||||
|
||||
- [ ] 遵循工具详情模板格式
|
||||
- [ ] 完成至少1个测试任务的测试
|
||||
- [ ] 提供详细的测试步骤和结果
|
||||
- [ ] 包含必要的截图或代码示例
|
||||
- [ ] 更新相关的对比表格(如适用)
|
||||
- [ ] 检查文档格式和链接有效性
|
||||
- [ ] 通过Markdown语法检查
|
||||
|
||||
## 📸 截图
|
||||
|
||||
如有截图,请添加。
|
||||
|
||||
## 🔗 相关Issue
|
||||
|
||||
如有相关Issue,请链接。
|
||||
|
||||
## 📝 其他信息
|
||||
|
||||
添加任何其他相关的信息。
|
||||
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
*.so
|
||||
.Python
|
||||
venv/
|
||||
env/
|
||||
ENV/
|
||||
.venv
|
||||
*.egg-info/
|
||||
dist/
|
||||
build/
|
||||
|
||||
# Node.js
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# 测试环境
|
||||
.env
|
||||
.env.local
|
||||
*.log
|
||||
|
||||
# 模型文件(大文件)
|
||||
*.bin
|
||||
*.safetensors
|
||||
*.gguf
|
||||
*.pt
|
||||
*.pth
|
||||
models/
|
||||
|
||||
# 测试结果(临时文件)
|
||||
test-results/tmp/
|
||||
screenshots/tmp/
|
||||
|
||||
# 其他
|
||||
*.bak
|
||||
*.tmp
|
||||
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
# 更新日志
|
||||
|
||||
本文件记录仓库的所有重要更新。
|
||||
|
||||
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
|
||||
版本号遵循 [Semantic Versioning](https://semver.org/lang/zh-CN/)。
|
||||
|
||||
## [未发布]
|
||||
|
||||
### 计划中
|
||||
- 完成10-15个代表性工具的测试
|
||||
- 完善所有测试任务的详细定义
|
||||
- 建立完整的工具对比表
|
||||
|
||||
## [0.1.0] - 2025-11-18
|
||||
|
||||
### 新增
|
||||
- 🎉 仓库初始化
|
||||
- 📝 核心文档结构(README、SUMMARY、CONTRIBUTING)
|
||||
- 📐 测试标准框架(测试流程、指标定义、环境配置)
|
||||
- 🛠️ 工具分类框架(12个分类,涵盖软件工程全生命周期)
|
||||
- 📊 对比分析模板(工具对比表、选型指南)
|
||||
- 📚 资源拓展结构(学习路径、常见问题、趋势分析)
|
||||
- 🔧 工具详情模板
|
||||
|
||||
### 文档
|
||||
- 初始README文档
|
||||
- 目录索引SUMMARY
|
||||
- 贡献指南框架
|
||||
- 测试标准框架文档
|
||||
|
||||
---
|
||||
|
||||
## 版本说明
|
||||
|
||||
- **主版本号**:重大架构变更或分类体系调整
|
||||
- **次版本号**:新增工具分类、新测试任务、重要功能
|
||||
- **修订号**:工具测试更新、文档完善、小修复
|
||||
|
||||
## 更新频率
|
||||
|
||||
- **定期更新**:每3-6个月更新一次,同步工具最新版本和测试结果
|
||||
- **不定期更新**:新工具提交、测试结果更新、问题修复
|
||||
|
||||
## 贡献更新日志
|
||||
|
||||
如果您提交了PR并更新了工具测试或添加了新工具,请在本文件的"未发布"部分添加您的更新内容。
|
||||
|
||||
|
|
@ -1,189 +0,0 @@
|
|||
# 贡献指南
|
||||
|
||||
感谢您对AI4SE Survey仓库的关注!我们欢迎任何形式的贡献。
|
||||
|
||||
## 🤝 如何贡献
|
||||
|
||||
### 1. 提交新工具
|
||||
|
||||
如果您发现了一个未被收录的AI4SE工具,欢迎提交测试结果:
|
||||
|
||||
#### 步骤
|
||||
|
||||
1. **检查工具是否已存在**
|
||||
- 查看 [SUMMARY.md](./SUMMARY.md) 确认工具未被收录
|
||||
- 搜索 [Issues](../../issues) 确认没有重复建议
|
||||
|
||||
2. **确定工具分类**
|
||||
- 参考 [SUMMARY.md](./SUMMARY.md) 中的12个分类
|
||||
- 如果工具跨越多个分类,选择主要功能分类
|
||||
|
||||
3. **按照模板创建工具详情**
|
||||
- 参考 [工具详情模板](./tools/tool-template/)
|
||||
- 创建工具目录:`tools/<分类>/<工具名>/`
|
||||
- 至少包含以下文件:
|
||||
- `overview.md` - 工具基本信息
|
||||
- `setup-guide.md` - 安装配置步骤
|
||||
- `test-results/` - 测试结果(至少完成1个测试任务)
|
||||
- `pros-cons.md` - 优缺点总结
|
||||
|
||||
4. **提交测试结果**
|
||||
- 按照 [测试标准](./test-standards/test-flow.md) 执行测试
|
||||
- 记录详细的测试过程和结果
|
||||
- 提供截图和代码示例
|
||||
|
||||
5. **提交PR**
|
||||
- Fork仓库并创建新分支
|
||||
- 提交您的更改
|
||||
- 填写PR模板,说明新增的工具和测试结果
|
||||
|
||||
### 2. 补充/更新现有工具测试
|
||||
|
||||
#### 更新内容
|
||||
|
||||
- 新增测试任务结果
|
||||
- 更新工具版本信息
|
||||
- 补充使用技巧和踩坑笔记
|
||||
- 修正错误信息
|
||||
|
||||
#### 步骤
|
||||
|
||||
1. 找到对应的工具目录
|
||||
2. 更新相关文件
|
||||
3. 提交PR并说明更新内容
|
||||
|
||||
### 3. 报告问题
|
||||
|
||||
如果发现文档错误、测试标准问题、工具信息过时等,欢迎提交Issue:
|
||||
|
||||
- [Bug报告](../../issues/new?template=bug_report.md)
|
||||
- [文档改进](../../issues/new?template=documentation.md)
|
||||
- [新工具建议](../../issues/new?template=new_tool.md)
|
||||
|
||||
### 4. 完善文档
|
||||
|
||||
- 改进README、SUMMARY等核心文档
|
||||
- 补充测试标准和指标定义
|
||||
- 完善选型指南和对比分析
|
||||
- 添加学习资源和教程
|
||||
|
||||
## 📋 工具详情模板要求
|
||||
|
||||
### 必需文件
|
||||
|
||||
#### 1. `overview.md`
|
||||
|
||||
包含:
|
||||
- 工具简介和核心功能
|
||||
- 官方网站和开源地址(如适用)
|
||||
- 定价信息(免费/付费/开源)
|
||||
- 支持的技术栈和语言
|
||||
- 大模型底座(如适用)
|
||||
|
||||
#### 2. `setup-guide.md`
|
||||
|
||||
包含:
|
||||
- 详细的安装步骤
|
||||
- 依赖要求
|
||||
- API密钥配置(如需要)
|
||||
- IDE插件安装(如适用)
|
||||
- 本地部署教程(如适用)
|
||||
- 关键步骤截图
|
||||
|
||||
#### 3. `test-results/`
|
||||
|
||||
至少包含1个测试任务的完整测试结果:
|
||||
- 按测试任务分类(task1-api.md, task2-debug.md等)
|
||||
- 每个测试任务包含:
|
||||
- 测试步骤
|
||||
- 原始生成结果
|
||||
- 人工修改记录
|
||||
- 指标数据(耗时、正确率等)
|
||||
- 结果截图
|
||||
|
||||
#### 4. `pros-cons.md`
|
||||
|
||||
基于实测的客观评价:
|
||||
- 优点(基于实际使用体验)
|
||||
- 缺点(基于实际使用体验)
|
||||
- 适用场景
|
||||
- 不适用场景
|
||||
|
||||
### 可选文件
|
||||
|
||||
- `screenshots/` - 操作截图目录
|
||||
- `troubleshooting.md` - 常见问题解决方案
|
||||
- `examples/` - 使用示例代码
|
||||
|
||||
## ✅ PR检查清单
|
||||
|
||||
提交PR前,请确保:
|
||||
|
||||
- [ ] 遵循工具详情模板格式
|
||||
- [ ] 完成至少1个测试任务的测试
|
||||
- [ ] 提供详细的测试步骤和结果
|
||||
- [ ] 包含必要的截图或代码示例
|
||||
- [ ] 更新相关的对比表格(如适用)
|
||||
- [ ] 检查文档格式和链接有效性
|
||||
- [ ] 通过Markdown语法检查
|
||||
|
||||
## 📝 代码规范
|
||||
|
||||
### Markdown格式
|
||||
|
||||
- 使用标准Markdown语法
|
||||
- 代码块必须指定语言类型
|
||||
- 表格使用标准Markdown表格格式
|
||||
- 图片使用相对路径,放在工具目录的`screenshots/`子目录
|
||||
|
||||
### 文件命名
|
||||
|
||||
- 使用小写字母和连字符(kebab-case)
|
||||
- 例如:`setup-guide.md`, `task1-api.md`
|
||||
|
||||
### 目录结构
|
||||
|
||||
```
|
||||
tools/
|
||||
└── <分类>/
|
||||
└── <工具名>/
|
||||
├── overview.md
|
||||
├── setup-guide.md
|
||||
├── test-results/
|
||||
│ ├── task1-api.md
|
||||
│ └── ...
|
||||
├── screenshots/
|
||||
└── pros-cons.md
|
||||
```
|
||||
|
||||
## 🔍 测试要求
|
||||
|
||||
### 测试任务优先级
|
||||
|
||||
1. **必须完成**:基础任务(Task 1 - API开发)
|
||||
2. **推荐完成**:中等任务(Task 2 - 调试或Task 3 - 重构)
|
||||
3. **可选完成**:复杂任务或其他分类专属任务
|
||||
|
||||
### 测试标准
|
||||
|
||||
所有测试必须:
|
||||
- 遵循 [测试流程规范](./test-standards/test-flow.md)
|
||||
- 使用统一的测试任务定义
|
||||
- 记录完整的测试过程
|
||||
- 提供可量化的评估结果
|
||||
|
||||
## 💡 贡献建议
|
||||
|
||||
- **客观中立**:基于实测结果,避免主观偏见
|
||||
- **详细准确**:提供足够的细节,方便读者复现
|
||||
- **持续更新**:工具更新后及时同步测试结果
|
||||
- **友好沟通**:在Issue和PR中保持友好和建设性的讨论
|
||||
|
||||
## 📞 联系方式
|
||||
|
||||
如有疑问,可以:
|
||||
- 提交 [Issue](../../issues)
|
||||
- 发起 [Discussion](../../discussions)
|
||||
|
||||
再次感谢您的贡献!🎉
|
||||
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2025 AI4SE Survey Contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
|
|
@ -1,194 +0,0 @@
|
|||
# AI4SE Survey - AI驱动的软件工程工具调研仓库
|
||||
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
[](http://makeapullrequest.com)
|
||||
|
||||
> **AI4SE (AI for Software Engineering)** 实测对比库 + 快速上手手册
|
||||
> 聚焦“真实场景测试+客观数据支撑+无门槛复用”,成为开发者选型AI软件工程工具的“风向标”
|
||||
|
||||
## 📋 仓库定位
|
||||
|
||||
本仓库系统性地调研和测试**AI驱动的软件工程工具**,涵盖软件工程全生命周期(需求分析→架构设计→编码开发→测试调试→代码审查→文档生成→项目管理→DevOps),通过标准化的实测方法,为开发者、技术负责人、研究人员提供:
|
||||
|
||||
- ✅ **实测对比**:每个工具都附带可复现的测试步骤、原始输出、人工评估
|
||||
- ✅ **客观数据**:基于统一测试任务和量化指标,避免主观臆断
|
||||
- ✅ **选型指南**:按场景推荐合适的工具,降低选型成本
|
||||
- ✅ **快速上手**:提供详细的安装配置和使用教程
|
||||
|
||||
## 🎯 核心价值
|
||||
|
||||
1. **覆盖全面**:涵盖软件工程全生命周期各阶段的AI工具
|
||||
2. **测试可复现**:统一的测试环境、标准化的测试任务和评估指标
|
||||
3. **结果客观**:基于实测数据,而非功能罗列或营销宣传
|
||||
4. **持续更新**:跟踪工具迭代,定期更新测试结果
|
||||
|
||||
## 🚀 快速导航
|
||||
|
||||
- **[工具列表](./SUMMARY.md#工具分类)** - 按功能分类浏览所有工具
|
||||
- **[测试标准](./test-standards/test-flow.md)** - 了解测试方法和评估指标
|
||||
- **[对比分析](./comparisons/tool-comparison-table.md)** - 查看工具对比表
|
||||
- **[选型指南](./comparisons/scenario-based-guide.md)** - 按场景选择合适工具
|
||||
- **[贡献指南](./CONTRIBUTING.md)** - 参与仓库建设
|
||||
|
||||
## 📂 仓库结构
|
||||
|
||||
```
|
||||
AI4SE-survey/
|
||||
├── README.md # 本文件:仓库总览
|
||||
├── SUMMARY.md # 目录索引:快速跳转
|
||||
├── CHANGELOG.md # 版本更新记录
|
||||
├── CONTRIBUTING.md # 贡献指南
|
||||
│
|
||||
├── api/ # API服务目录
|
||||
│ ├── main.py # FastAPI应用入口
|
||||
│ ├── routers/ # API路由
|
||||
│ ├── schemas/ # Pydantic数据模型
|
||||
│ └── services/ # 服务层
|
||||
│
|
||||
├── tools/ # 工具详情目录(按软件工程生命周期分类)
|
||||
│ ├── requirements-analysis/ # 需求分析类工具
|
||||
│ ├── architecture-design/ # 架构设计类工具
|
||||
│ ├── code-generation/ # 代码生成类工具
|
||||
│ ├── debugging/ # 调试排障类工具
|
||||
│ ├── refactoring/ # 代码重构类工具
|
||||
│ ├── test-generation/ # 测试生成类工具
|
||||
│ ├── documentation/ # 文档生成类工具
|
||||
│ ├── code-review/ # 代码审查类工具
|
||||
│ ├── project-management/ # 项目管理类工具
|
||||
│ ├── devops-ci-cd/ # DevOps/CI-CD类工具
|
||||
│ ├── local-models/ # 本地化大模型工具
|
||||
│ ├── full-flow/ # 全流程集成工具
|
||||
│ └── tool-template/ # 工具详情模板
|
||||
│
|
||||
├── test-standards/ # 测试标准目录
|
||||
│ ├── test-tasks/ # 统一测试任务
|
||||
│ ├── metrics/ # 测试指标定义
|
||||
│ ├── environment/ # 测试环境配置
|
||||
│ └── test-flow.md # 测试流程规范
|
||||
│
|
||||
├── comparisons/ # 对比分析目录
|
||||
│ ├── tool-comparison-table.md # 工具对比表
|
||||
│ ├── scenario-based-guide.md # 场景选型指南
|
||||
│ └── open-vs-closed.md # 开源vs闭源对比
|
||||
│
|
||||
└── resources/ # 资源拓展目录
|
||||
├── learning-paths.md # 学习路径
|
||||
├── common-issues.md # 常见问题
|
||||
├── trend-analysis.md # 趋势分析
|
||||
└── related-repos.md # 相关资源
|
||||
```
|
||||
|
||||
## 🌐 API服务
|
||||
|
||||
本仓库提供一套基于FastAPI的API,用于查询和管理工具信息及测试结果。
|
||||
|
||||
### 功能特性
|
||||
|
||||
- ✅ 工具信息管理(查看、搜索、筛选)
|
||||
- ✅ 测试任务管理
|
||||
- ✅ 测试结果管理(创建、更新、查询)
|
||||
- ✅ RESTful API接口
|
||||
- ✅ 自动API文档(Swagger UI)
|
||||
|
||||
### 快速开始
|
||||
|
||||
0. **创建并激活虚拟环境**
|
||||
```bash
|
||||
python -m venv venv
|
||||
source venv/bin/activate # macOS/Linux
|
||||
# 或
|
||||
venv\Scripts\activate # Windows
|
||||
```
|
||||
|
||||
1. **安装依赖**:
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
2. **启动服务**:
|
||||
```bash
|
||||
python run.py
|
||||
```
|
||||
3. **访问API文档**:
|
||||
启动服务后,访问 [http://localhost:8000/docs](http://localhost:8000/docs)
|
||||
|
||||
更多详情,如API接口说明、项目结构、部署方法等,请参阅 [`api/README.md`](./api/README.md)。
|
||||
|
||||
## 🔍 工具分类
|
||||
|
||||
### 1. 需求分析类
|
||||
AI辅助需求提取、需求分析、用户故事生成等
|
||||
|
||||
### 2. 架构设计类
|
||||
AI辅助系统架构设计、技术选型、设计模式应用等
|
||||
|
||||
### 3. 代码生成类
|
||||
AI生成代码片段、完整文件、API接口等(如GitHub Copilot、CodeLlama)
|
||||
|
||||
### 4. 调试排障类
|
||||
AI辅助定位bug、提供修复方案、性能分析等
|
||||
|
||||
### 5. 代码重构类
|
||||
AI辅助优化代码结构、提升性能/可读性、消除技术债务等
|
||||
|
||||
### 6. 测试生成类
|
||||
AI自动生成单元测试、接口测试、集成测试用例等
|
||||
|
||||
### 7. 文档生成类
|
||||
AI根据代码生成注释、API文档、技术方案等
|
||||
|
||||
### 8. 代码审查类
|
||||
AI辅助代码审查、安全漏洞检测、代码规范检查等
|
||||
|
||||
### 9. 项目管理类
|
||||
AI辅助项目计划、任务分解、进度跟踪、风险识别等
|
||||
|
||||
### 10. DevOps/CI-CD类
|
||||
AI辅助持续集成、部署自动化、监控告警等
|
||||
|
||||
### 11. 本地化大模型类
|
||||
可本地部署的开发辅助大模型(如CodeLlama、Qwen-Coder)
|
||||
|
||||
### 12. 全流程集成类
|
||||
覆盖软件工程全生命周期的端到端工具(如Cursor、CodeLens)
|
||||
|
||||
## 📊 测试方法
|
||||
|
||||
所有工具的测试均遵循统一的测试标准:
|
||||
|
||||
- **统一测试环境**:固定IDE版本、编程语言版本、系统环境
|
||||
- **标准测试任务**:覆盖不同复杂度的典型软件工程任务
|
||||
- **量化评估指标**:效率指标(开发耗时)、质量指标(代码正确率、测试通过率)、易用性指标(学习曲线)等
|
||||
- **可复现流程**:详细的测试步骤记录,支持读者复现
|
||||
|
||||
详见 [测试标准文档](./test-standards/test-flow.md)
|
||||
|
||||
## 🤝 如何贡献
|
||||
|
||||
我们欢迎社区贡献!您可以:
|
||||
|
||||
- 🔧 提交新工具的测试结果
|
||||
- 📝 补充或更新现有工具的测试
|
||||
- 🐛 报告问题或提出改进建议
|
||||
- 📚 完善文档和教程
|
||||
|
||||
详见 [贡献指南](./CONTRIBUTING.md)
|
||||
|
||||
## 📅 更新计划
|
||||
|
||||
- **2025年11月**:完成仓库初始化,建立核心框架和测试标准
|
||||
- **2025年Q1**:完成10-15个代表性工具的测试(覆盖所有分类)
|
||||
- **持续更新**:每3-6个月更新一次,同步工具最新版本和测试结果
|
||||
|
||||
详见 [更新日志](./CHANGELOG.md)
|
||||
|
||||
## 📄 许可证
|
||||
|
||||
本项目采用 [MIT License](./LICENSE) 许可证。
|
||||
|
||||
## 🙏 致谢
|
||||
|
||||
感谢所有贡献者和工具开发者对AI驱动的软件工程领域的探索和贡献。
|
||||
|
||||
---
|
||||
|
||||
**让AI赋能软件工程,让工具选择更简单!** 🚀
|
||||
|
|
@ -1,95 +0,0 @@
|
|||
# 目录索引
|
||||
|
||||
本文档提供仓库的完整导航索引,帮助您快速找到所需内容。
|
||||
|
||||
## 📖 核心文档
|
||||
|
||||
- [README.md](./README.md) - 仓库总览和快速开始
|
||||
- [CHANGELOG.md](./CHANGELOG.md) - 版本更新记录
|
||||
- [CONTRIBUTING.md](./CONTRIBUTING.md) - 贡献指南
|
||||
- [tools/SUMMARY.md](tools/SUMMARY.md) - 工具调研总结
|
||||
|
||||
## 🛠️ 工具分类
|
||||
|
||||
### 1. [需求分析类](./tools/requirements-analysis/) @zkx
|
||||
AI辅助需求提取、需求分析、用户故事生成等工具
|
||||
|
||||
### 2. [架构设计类](./tools/architecture-design/) @zkx
|
||||
AI辅助系统架构设计图绘制等工具
|
||||
|
||||
### 3. [代码生成类](./tools/code-generation/) @xmy
|
||||
AI生成代码片段、完整文件、API接口等工具
|
||||
- 示例工具:GitHub Copilot、CodeLlama、CodeGeeX、Cursor
|
||||
|
||||
### 4. [调试排障类](./tools/debugging/) @xmy
|
||||
AI辅助定位bug、提供修复方案、性能分析等工具
|
||||
- 示例工具:Sentry AI、DebugGPT、CodeLlama Debug
|
||||
|
||||
### 5. [代码重构类](./tools/refactoring/) @zsy
|
||||
AI辅助优化代码结构、提升性能/可读性、消除技术债务等工具
|
||||
- 示例工具:RefactorGPT、SonarQube AI、Cursor Refactor
|
||||
|
||||
### 6. [测试生成类](./tools/test-generation/) @zsy
|
||||
AI自动生成单元测试、接口测试、集成测试用例等工具
|
||||
- 示例工具:TestGPT、Copilot X Test Generation、LangChain Test Builder
|
||||
|
||||
### 7. [文档生成类](./tools/documentation/) @cyt
|
||||
AI根据代码生成注释、API文档、技术方案等工具
|
||||
- 示例工具:AutoDoc、CodeWhisperer Docs、DocGPT
|
||||
|
||||
### 8. [代码审查类](./tools/code-review/) @cyt
|
||||
AI辅助代码审查、安全漏洞检测、代码规范检查等工具
|
||||
|
||||
### 9. [项目管理类](./tools/project-management/) @gwx
|
||||
AI辅助项目计划、任务分解、进度跟踪、风险识别等工具
|
||||
|
||||
### 10. [DevOps/CI-CD类](./tools/devops-ci-cd/) @gwx
|
||||
AI辅助持续集成、部署自动化、监控告警等工具
|
||||
|
||||
### 11. [本地化大模型类](./tools/local-models/) @xmy
|
||||
可本地部署的开发辅助大模型
|
||||
- 示例工具:CodeLlama、StarCoder、Qwen-Coder
|
||||
|
||||
### 12. [全流程集成类](./tools/full-flow/) @zkx
|
||||
覆盖软件工程全生命周期的端到端工具
|
||||
- 示例工具:Cursor、CodeLens、Tabnine Enterprise
|
||||
|
||||
## 📐 测试标准
|
||||
|
||||
### 测试规范
|
||||
- [测试流程规范](./test-standards/test-flow.md) - 测试执行步骤和规范
|
||||
- [测试任务](./test-standards/test-tasks/) - 统一测试任务定义
|
||||
- [评估指标](./test-standards/metrics/) - 量化评估指标定义
|
||||
- [环境配置](./test-standards/environment/) - 测试环境要求
|
||||
|
||||
### 测试任务
|
||||
- [任务1:基础API开发](./test-standards/test-tasks/task1-api.md) - Python FastAPI RESTful API开发
|
||||
- [任务2:前端组件调试](./test-standards/test-tasks/task2-debug.md) - React组件bug定位和修复
|
||||
- [任务3:代码重构](./test-standards/test-tasks/task3-refactor.md) - Legacy代码重构优化
|
||||
- [任务4:需求分析](./test-standards/test-tasks/task4-requirements.md) - 需求文档生成和分析
|
||||
- [任务5:架构设计](./test-standards/test-tasks/task5-architecture.md) - 微服务架构设计
|
||||
|
||||
## 📊 对比分析
|
||||
|
||||
- [工具对比表](./comparisons/tool-comparison-table.md) - 所有工具核心指标对比
|
||||
- [场景选型指南](./comparisons/scenario-based-guide.md) - 按使用场景推荐工具
|
||||
- [开源vs闭源对比](./comparisons/open-vs-closed.md) - 开源工具与闭源工具对比分析
|
||||
|
||||
## 📚 资源拓展
|
||||
|
||||
- [学习路径](./resources/learning-paths.md) - AI4SE工具学习路径(入门→进阶)
|
||||
- [常见问题](./resources/common-issues.md) - 工具使用常见问题和解决方案
|
||||
- [趋势分析](./resources/trend-analysis.md) - AI4SE工具发展趋势分析
|
||||
- [相关资源](./resources/related-repos.md) - 相关优质开源仓库和资源推荐
|
||||
|
||||
## 🔧 工具详情模板
|
||||
|
||||
- [工具详情模板](./tools/tool-template/) - 供贡献者参考的统一格式模板
|
||||
|
||||
---
|
||||
|
||||
**提示**:如果您是首次访问,建议按以下顺序阅读:
|
||||
1. [README.md](./README.md) - 了解仓库定位
|
||||
2. [tools/SUMMARY.md](tools/SUMMARY.md) - 快速查看工具
|
||||
3. 选择感兴趣的[工具分类](./tools/) - 深入了解具体工具
|
||||
|
||||
|
|
@ -1,163 +0,0 @@
|
|||
# API 快速启动指南
|
||||
|
||||
## ✅ 当前状态
|
||||
|
||||
API已经可以运行!依赖已安装,代码结构完整。
|
||||
|
||||
## 🚀 运行方式
|
||||
|
||||
### 方式1:使用 run.py(推荐)
|
||||
|
||||
```bash
|
||||
python run.py
|
||||
```
|
||||
|
||||
### 方式2:使用 start_api.py(带详细输出)
|
||||
|
||||
```bash
|
||||
python start_api.py
|
||||
```
|
||||
|
||||
### 方式3:直接使用 uvicorn
|
||||
|
||||
```bash
|
||||
python -m uvicorn api.main:app --host 0.0.0.0 --port 8000 --reload
|
||||
```
|
||||
|
||||
## 📍 访问地址
|
||||
|
||||
启动成功后,可以通过以下地址访问:
|
||||
|
||||
- **Swagger UI(交互式API文档)**: http://localhost:8000/docs
|
||||
- **ReDoc(API文档)**: http://localhost:8000/redoc
|
||||
- **健康检查**: http://localhost:8000/health
|
||||
- **API根路径**: http://localhost:8000/
|
||||
|
||||
## 🔍 验证API是否运行
|
||||
|
||||
### 方法1:检查端口
|
||||
|
||||
```bash
|
||||
# Windows PowerShell
|
||||
netstat -ano | findstr :8000
|
||||
|
||||
# 或使用
|
||||
Get-NetTCPConnection -LocalPort 8000
|
||||
```
|
||||
|
||||
### 方法2:访问健康检查接口
|
||||
|
||||
在浏览器中打开:http://localhost:8000/health
|
||||
|
||||
应该返回:
|
||||
```json
|
||||
{"status": "healthy"}
|
||||
```
|
||||
|
||||
### 方法3:使用curl测试
|
||||
|
||||
```bash
|
||||
# Windows PowerShell
|
||||
Invoke-WebRequest -Uri http://localhost:8000/health
|
||||
|
||||
# 或使用curl(如果已安装)
|
||||
curl http://localhost:8000/health
|
||||
```
|
||||
|
||||
## 📋 API功能
|
||||
|
||||
### 已实现的功能
|
||||
|
||||
✅ **工具信息管理**
|
||||
- 获取工具列表:`GET /api/tools/`
|
||||
- 获取工具详情:`GET /api/tools/{tool_id}`
|
||||
- 工具搜索和筛选
|
||||
- 获取工具分类和类型
|
||||
|
||||
✅ **测试任务管理**
|
||||
- 获取所有测试任务:`GET /api/test-tasks/`
|
||||
- 获取任务详情:`GET /api/test-tasks/{task_type}`
|
||||
|
||||
✅ **测试结果管理**
|
||||
- 获取测试结果列表:`GET /api/test-results/`
|
||||
- 获取测试结果详情:`GET /api/test-results/{result_id}`
|
||||
- 创建测试结果:`POST /api/test-results/`
|
||||
- 更新测试结果:`PUT /api/test-results/{result_id}`
|
||||
- 删除测试结果:`DELETE /api/test-results/{result_id}`
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
### 1. Pydantic警告
|
||||
|
||||
启动时可能会看到以下警告(不影响运行):
|
||||
```
|
||||
Field "model_base" has conflict with protected namespace "model_".
|
||||
Field "model_version" has conflict with protected namespace "model_".
|
||||
```
|
||||
|
||||
这是Pydantic的警告,不影响功能。如需消除警告,可以在相关schema中添加:
|
||||
```python
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
```
|
||||
|
||||
### 2. 路径问题
|
||||
|
||||
如果遇到模块导入错误,确保:
|
||||
- 在项目根目录(AI4SE-survey)运行
|
||||
- Python路径包含项目根目录
|
||||
|
||||
### 3. 端口占用
|
||||
|
||||
如果8000端口被占用,可以修改端口:
|
||||
```python
|
||||
# 在 run.py 或 start_api.py 中修改
|
||||
uvicorn.run(..., port=8001) # 改为其他端口
|
||||
```
|
||||
|
||||
## 🐛 常见问题
|
||||
|
||||
### 问题1:ModuleNotFoundError: No module named 'api'
|
||||
|
||||
**解决方案**:
|
||||
1. 确保在项目根目录(AI4SE-survey)运行
|
||||
2. 检查Python路径:
|
||||
```python
|
||||
import sys
|
||||
print(sys.path)
|
||||
```
|
||||
|
||||
### 问题2:端口已被占用
|
||||
|
||||
**解决方案**:
|
||||
1. 查找占用端口的进程:
|
||||
```bash
|
||||
netstat -ano | findstr :8000
|
||||
```
|
||||
2. 结束进程或修改端口
|
||||
|
||||
### 问题3:依赖未安装
|
||||
|
||||
**解决方案**:
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## 📝 下一步
|
||||
|
||||
1. **访问API文档**:打开 http://localhost:8000/docs 查看所有接口
|
||||
2. **测试接口**:在Swagger UI中直接测试各个接口
|
||||
3. **查看工具数据**:访问 `/api/tools/` 查看工具列表
|
||||
4. **查看测试任务**:访问 `/api/test-tasks/` 查看测试任务
|
||||
|
||||
## 🔗 相关文档
|
||||
|
||||
- [API详细文档](./README.md)
|
||||
- [项目README](../README.md)
|
||||
|
||||
---
|
||||
|
||||
**提示**:如果遇到任何问题,请检查:
|
||||
1. 依赖是否已安装:`pip list | findstr fastapi`
|
||||
2. 代码是否有语法错误:`python -c "from api.main import app"`
|
||||
3. 端口是否被占用:`netstat -ano | findstr :8000`
|
||||
|
||||
|
|
@ -1,328 +0,0 @@
|
|||
# AI4SE Survey API
|
||||
|
||||
FastAPI实现的AI4SE工具调研API,提供统一的接口用于查看和管理工具信息、测试结果等。
|
||||
|
||||
## 📋 功能特性
|
||||
|
||||
- ✅ 工具信息管理(查看、搜索、筛选)
|
||||
- ✅ 测试任务管理
|
||||
- ✅ 测试结果管理(创建、更新、查询)
|
||||
- ✅ RESTful API接口
|
||||
- ✅ 自动API文档(Swagger UI)
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 安装依赖
|
||||
|
||||
```bash
|
||||
# 创建虚拟环境(推荐)
|
||||
python -m venv venv
|
||||
source venv/bin/activate # macOS/Linux
|
||||
# 或
|
||||
venv\Scripts\activate # Windows
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 启动服务
|
||||
|
||||
```bash
|
||||
# 方式1:使用run.py
|
||||
python run.py
|
||||
|
||||
# 方式2:使用uvicorn直接运行
|
||||
uvicorn api.main:app --reload --host 0.0.0.0 --port 8000
|
||||
```
|
||||
|
||||
### 访问API文档
|
||||
|
||||
启动服务后,访问以下地址:
|
||||
|
||||
- **Swagger UI**:http://localhost:8000/docs
|
||||
- **ReDoc**:http://localhost:8000/redoc
|
||||
- **API根路径**:http://localhost:8000/
|
||||
|
||||
## 📚 API接口说明
|
||||
|
||||
### 工具相关接口
|
||||
|
||||
#### 获取工具列表
|
||||
|
||||
```bash
|
||||
GET /api/tools/
|
||||
```
|
||||
|
||||
**参数**:
|
||||
- `page`: 页码(默认:1)
|
||||
- `page_size`: 每页数量(默认:20)
|
||||
- `type`: 工具类型筛选
|
||||
- `category`: 分类筛选
|
||||
- `search`: 搜索关键词
|
||||
|
||||
**示例**:
|
||||
```bash
|
||||
curl "http://localhost:8000/api/tools/?page=1&page_size=10&type=code-generation"
|
||||
```
|
||||
|
||||
#### 获取工具详情
|
||||
|
||||
```bash
|
||||
GET /api/tools/{tool_id}
|
||||
```
|
||||
|
||||
**示例**:
|
||||
```bash
|
||||
curl "http://localhost:8000/api/tools/code-generation_github-copilot"
|
||||
```
|
||||
|
||||
#### 获取所有分类
|
||||
|
||||
```bash
|
||||
GET /api/tools/categories
|
||||
```
|
||||
|
||||
#### 获取所有工具类型
|
||||
|
||||
```bash
|
||||
GET /api/tools/types
|
||||
```
|
||||
|
||||
#### 根据分类获取工具
|
||||
|
||||
```bash
|
||||
GET /api/tools/category/{category}
|
||||
```
|
||||
|
||||
#### 根据类型获取工具
|
||||
|
||||
```bash
|
||||
GET /api/tools/type/{tool_type}
|
||||
```
|
||||
|
||||
#### 刷新工具缓存
|
||||
|
||||
```bash
|
||||
POST /api/tools/refresh
|
||||
```
|
||||
|
||||
### 测试任务相关接口
|
||||
|
||||
#### 获取所有测试任务
|
||||
|
||||
```bash
|
||||
GET /api/test-tasks/
|
||||
```
|
||||
|
||||
#### 获取测试任务详情
|
||||
|
||||
```bash
|
||||
GET /api/test-tasks/{task_type}
|
||||
```
|
||||
|
||||
**任务类型**:
|
||||
- `task1-api`: RESTful API开发
|
||||
- `task2-debug`: React组件调试
|
||||
- `task3-refactor`: 代码重构
|
||||
- `task4-requirements`: 需求分析
|
||||
- `task5-architecture`: 微服务架构设计
|
||||
|
||||
### 测试结果相关接口
|
||||
|
||||
#### 获取测试结果列表
|
||||
|
||||
```bash
|
||||
GET /api/test-results/
|
||||
```
|
||||
|
||||
**参数**:
|
||||
- `page`: 页码
|
||||
- `page_size`: 每页数量
|
||||
- `tool_id`: 工具ID筛选
|
||||
- `task_type`: 任务类型筛选
|
||||
- `status`: 测试状态筛选
|
||||
|
||||
#### 获取测试结果详情
|
||||
|
||||
```bash
|
||||
GET /api/test-results/{result_id}
|
||||
```
|
||||
|
||||
#### 创建测试结果
|
||||
|
||||
```bash
|
||||
POST /api/test-results/
|
||||
```
|
||||
|
||||
**请求体示例**:
|
||||
```json
|
||||
{
|
||||
"tool_id": "code-generation_github-copilot",
|
||||
"task_type": "task1-api",
|
||||
"environment": {
|
||||
"python": "3.10",
|
||||
"fastapi": "0.103.1"
|
||||
},
|
||||
"original_code": "# 原始生成代码",
|
||||
"final_code": "# 最终可用代码",
|
||||
"metrics": {
|
||||
"efficiency": {
|
||||
"development_time": 20,
|
||||
"interaction_count": 3
|
||||
},
|
||||
"quality": {
|
||||
"code_accuracy": 85.0,
|
||||
"test_pass_rate": 90.0
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 更新测试结果
|
||||
|
||||
```bash
|
||||
PUT /api/test-results/{result_id}
|
||||
```
|
||||
|
||||
#### 删除测试结果
|
||||
|
||||
```bash
|
||||
DELETE /api/test-results/{result_id}
|
||||
```
|
||||
|
||||
## 🏗️ 项目结构
|
||||
|
||||
```
|
||||
api/
|
||||
├── main.py # FastAPI应用入口
|
||||
├── schemas/ # Pydantic数据模型
|
||||
│ ├── tool.py # 工具相关模型
|
||||
│ └── test.py # 测试相关模型
|
||||
├── routers/ # API路由
|
||||
│ ├── tools.py # 工具相关路由
|
||||
│ ├── test_results.py # 测试结果路由
|
||||
│ └── test_tasks.py # 测试任务路由
|
||||
├── services/ # 服务层
|
||||
│ ├── tool_service.py # 工具服务
|
||||
│ └── test_service.py # 测试服务
|
||||
└── models/ # 数据库模型(如需要)
|
||||
```
|
||||
|
||||
## 🔧 配置说明
|
||||
|
||||
### 环境变量
|
||||
|
||||
创建`.env`文件:
|
||||
|
||||
```env
|
||||
# API配置
|
||||
API_HOST=0.0.0.0
|
||||
API_PORT=8000
|
||||
API_RELOAD=true
|
||||
|
||||
# 工具数据路径(可选)
|
||||
TOOLS_BASE_PATH=./tools
|
||||
```
|
||||
|
||||
### CORS配置
|
||||
|
||||
在生产环境中,应该修改`api/main.py`中的CORS配置:
|
||||
|
||||
```python
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["http://localhost:3000", "https://your-domain.com"],
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
```
|
||||
|
||||
## 📝 数据模型
|
||||
|
||||
### 工具模型(Tool)
|
||||
|
||||
- `id`: 工具ID
|
||||
- `name`: 工具名称
|
||||
- `type`: 工具类型
|
||||
- `category`: 工具分类
|
||||
- `description`: 工具描述
|
||||
- `website`: 网站信息
|
||||
- `pricing`: 定价信息
|
||||
- `language_support`: 语言支持
|
||||
- `features`: 功能列表
|
||||
- `pros`: 优点列表
|
||||
- `cons`: 缺点列表
|
||||
|
||||
### 测试结果模型(TestResult)
|
||||
|
||||
- `id`: 测试结果ID
|
||||
- `tool_id`: 工具ID
|
||||
- `task_type`: 测试任务类型
|
||||
- `status`: 测试状态
|
||||
- `metrics`: 测试指标
|
||||
- `original_code`: 原始代码
|
||||
- `final_code`: 最终代码
|
||||
- `pros`: 优点
|
||||
- `cons`: 缺点
|
||||
|
||||
## 🧪 测试
|
||||
|
||||
### 运行测试
|
||||
|
||||
```bash
|
||||
# 运行所有测试
|
||||
pytest
|
||||
|
||||
# 运行特定测试文件
|
||||
pytest tests/test_tools.py
|
||||
|
||||
# 运行测试并显示覆盖率
|
||||
pytest --cov=api
|
||||
```
|
||||
|
||||
## 🚀 部署
|
||||
|
||||
### Docker部署
|
||||
|
||||
创建`Dockerfile`:
|
||||
|
||||
```dockerfile
|
||||
FROM python:3.10-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY . .
|
||||
|
||||
CMD ["uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
```
|
||||
|
||||
构建和运行:
|
||||
|
||||
```bash
|
||||
docker build -t ai4se-survey-api .
|
||||
docker run -p 8000:8000 ai4se-survey-api
|
||||
```
|
||||
|
||||
### 生产环境部署
|
||||
|
||||
使用Gunicorn和Uvicorn Workers:
|
||||
|
||||
```bash
|
||||
pip install gunicorn
|
||||
gunicorn api.main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000
|
||||
```
|
||||
|
||||
## 🔗 相关链接
|
||||
|
||||
- [FastAPI文档](https://fastapi.tiangolo.com/)
|
||||
- [Pydantic文档](https://docs.pydantic.dev/)
|
||||
- [API文档](./docs/)
|
||||
|
||||
---
|
||||
|
||||
**提示**:更多详细信息请查看项目根目录的[README.md](../README.md)。
|
||||
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
"""
|
||||
AI4SE Survey API
|
||||
"""
|
||||
|
||||
__version__ = "0.1.0"
|
||||
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
"""
|
||||
AI4SE Survey API主应用
|
||||
"""
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.responses import JSONResponse
|
||||
|
||||
from api.routers import tools, test_results, test_tasks
|
||||
from api import __version__
|
||||
|
||||
|
||||
app = FastAPI(
|
||||
title="AI4SE Survey API",
|
||||
description="AI驱动的软件工程工具调研API",
|
||||
version=__version__,
|
||||
docs_url="/docs",
|
||||
redoc_url="/redoc",
|
||||
openapi_url="/openapi.json", # 明确指定OpenAPI JSON路径
|
||||
)
|
||||
|
||||
|
||||
# CORS配置
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"], # 生产环境应该设置具体的域名
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
|
||||
# 注册路由
|
||||
app.include_router(tools.router)
|
||||
app.include_router(test_results.router)
|
||||
app.include_router(test_tasks.router)
|
||||
|
||||
|
||||
@app.get("/", tags=["root"])
|
||||
async def root():
|
||||
"""
|
||||
API根路径
|
||||
"""
|
||||
return {
|
||||
"name": "AI4SE Survey API",
|
||||
"version": __version__,
|
||||
"description": "AI驱动的软件工程工具调研API",
|
||||
"docs": "/docs",
|
||||
"redoc": "/redoc",
|
||||
}
|
||||
|
||||
|
||||
@app.get("/health", tags=["health"])
|
||||
async def health():
|
||||
"""
|
||||
健康检查
|
||||
"""
|
||||
return {"status": "healthy"}
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import uvicorn
|
||||
uvicorn.run(app, host="0.0.0.0", port=8000)
|
||||
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
"""
|
||||
API路由
|
||||
"""
|
||||
|
||||
|
|
@ -1,121 +0,0 @@
|
|||
"""
|
||||
测试结果相关API路由
|
||||
"""
|
||||
from typing import List, Optional
|
||||
from fastapi import APIRouter, Query, HTTPException, Depends
|
||||
from datetime import datetime
|
||||
|
||||
from api.schemas.test import (
|
||||
TestResult,
|
||||
TestResultCreate,
|
||||
TestResultUpdate,
|
||||
TestResultListResponse,
|
||||
TestStatus,
|
||||
TestTaskType,
|
||||
)
|
||||
from api.services.test_service import TestService
|
||||
|
||||
|
||||
router = APIRouter(prefix="/api/test-results", tags=["test-results"])
|
||||
|
||||
|
||||
def get_test_service() -> TestService:
|
||||
"""获取测试服务实例"""
|
||||
return TestService()
|
||||
|
||||
|
||||
@router.get("/", response_model=TestResultListResponse, summary="获取测试结果列表")
|
||||
async def get_test_results(
|
||||
page: int = Query(1, ge=1, description="页码"),
|
||||
page_size: int = Query(20, ge=1, le=100, description="每页数量"),
|
||||
tool_id: Optional[str] = Query(None, description="工具ID筛选"),
|
||||
task_type: Optional[TestTaskType] = Query(None, description="测试任务类型筛选"),
|
||||
status: Optional[TestStatus] = Query(None, description="测试状态筛选"),
|
||||
service: TestService = Depends(get_test_service),
|
||||
):
|
||||
"""
|
||||
获取测试结果列表
|
||||
|
||||
- 支持分页
|
||||
- 支持按工具ID、任务类型、状态筛选
|
||||
"""
|
||||
results = service.get_all_results(tool_id=tool_id, task_type=task_type)
|
||||
|
||||
if status:
|
||||
results = [r for r in results if r.status == status]
|
||||
|
||||
total = len(results)
|
||||
|
||||
# 分页
|
||||
start = (page - 1) * page_size
|
||||
end = start + page_size
|
||||
paginated_results = results[start:end]
|
||||
|
||||
return TestResultListResponse(
|
||||
total=total,
|
||||
results=paginated_results,
|
||||
page=page,
|
||||
page_size=page_size,
|
||||
)
|
||||
|
||||
|
||||
@router.get("/{result_id}", response_model=TestResult, summary="获取测试结果详情")
|
||||
async def get_test_result(
|
||||
result_id: str,
|
||||
service: TestService = Depends(get_test_service),
|
||||
):
|
||||
"""
|
||||
根据测试结果ID获取详细信息
|
||||
"""
|
||||
result = service.get_result_by_id(result_id)
|
||||
|
||||
if result is None:
|
||||
raise HTTPException(status_code=404, detail=f"测试结果 {result_id} 不存在")
|
||||
|
||||
return result
|
||||
|
||||
|
||||
@router.post("/", response_model=TestResult, summary="创建测试结果")
|
||||
async def create_test_result(
|
||||
result: TestResultCreate,
|
||||
service: TestService = Depends(get_test_service),
|
||||
):
|
||||
"""
|
||||
创建新的测试结果
|
||||
"""
|
||||
new_result = service.create_result(result)
|
||||
return new_result
|
||||
|
||||
|
||||
@router.put("/{result_id}", response_model=TestResult, summary="更新测试结果")
|
||||
async def update_test_result(
|
||||
result_id: str,
|
||||
result: TestResultUpdate,
|
||||
service: TestService = Depends(get_test_service),
|
||||
):
|
||||
"""
|
||||
更新测试结果
|
||||
"""
|
||||
updated_result = service.update_result(result_id, result)
|
||||
|
||||
if updated_result is None:
|
||||
raise HTTPException(status_code=404, detail=f"测试结果 {result_id} 不存在")
|
||||
|
||||
return updated_result
|
||||
|
||||
|
||||
@router.delete("/{result_id}", summary="删除测试结果")
|
||||
async def delete_test_result(
|
||||
result_id: str,
|
||||
service: TestService = Depends(get_test_service),
|
||||
):
|
||||
"""
|
||||
删除测试结果
|
||||
"""
|
||||
success = service.delete_result(result_id)
|
||||
|
||||
if not success:
|
||||
raise HTTPException(status_code=404, detail=f"测试结果 {result_id} 不存在")
|
||||
|
||||
return {"message": f"测试结果 {result_id} 已删除"}
|
||||
|
||||
|
|
@ -1,135 +0,0 @@
|
|||
"""
|
||||
测试任务相关API路由
|
||||
"""
|
||||
from typing import List
|
||||
from fastapi import APIRouter, HTTPException
|
||||
|
||||
from api.schemas.test import TestTaskInfo, TestTaskType
|
||||
|
||||
|
||||
router = APIRouter(prefix="/api/test-tasks", tags=["test-tasks"])
|
||||
|
||||
|
||||
# 测试任务定义
|
||||
TEST_TASKS = {
|
||||
TestTaskType.TASK1_API: TestTaskInfo(
|
||||
task_type=TestTaskType.TASK1_API,
|
||||
name="RESTful API开发",
|
||||
description="使用Python + FastAPI开发一个用户管理系统的RESTful API",
|
||||
requirements=[
|
||||
"用户注册接口 (POST /api/users/register)",
|
||||
"用户登录接口 (POST /api/users/login)",
|
||||
"用户查询接口 (GET /api/users/{user_id})",
|
||||
"使用FastAPI框架",
|
||||
"实现数据校验(Pydantic模型)",
|
||||
"实现错误处理",
|
||||
"使用SQLite数据库",
|
||||
"实现密码加密(bcrypt)",
|
||||
"实现JWT认证",
|
||||
],
|
||||
acceptance_criteria=[
|
||||
"所有接口功能完整",
|
||||
"数据校验正确",
|
||||
"错误处理统一",
|
||||
"密码加密存储",
|
||||
"JWT认证正确",
|
||||
"代码符合PEP8规范",
|
||||
],
|
||||
),
|
||||
TestTaskType.TASK2_DEBUG: TestTaskInfo(
|
||||
task_type=TestTaskType.TASK2_DEBUG,
|
||||
name="React组件调试",
|
||||
description="定位和修复包含逻辑bug的React表单组件",
|
||||
requirements=[
|
||||
"修复邮箱验证逻辑错误",
|
||||
"修复状态更新问题",
|
||||
"修复表单提交逻辑错误",
|
||||
"确保表单验证逻辑正确",
|
||||
"确保表单提交逻辑正确",
|
||||
],
|
||||
acceptance_criteria=[
|
||||
"所有bug已修复",
|
||||
"表单验证逻辑正确",
|
||||
"表单提交逻辑正确",
|
||||
"代码符合React最佳实践",
|
||||
],
|
||||
),
|
||||
TestTaskType.TASK3_REFACTOR: TestTaskInfo(
|
||||
task_type=TestTaskType.TASK3_REFACTOR,
|
||||
name="代码重构",
|
||||
description="重构Python legacy代码,提升代码质量",
|
||||
requirements=[
|
||||
"提升代码可读性",
|
||||
"修复潜在的安全漏洞",
|
||||
"优化性能和结构",
|
||||
"添加适当的错误处理",
|
||||
"符合PEP8规范",
|
||||
],
|
||||
acceptance_criteria=[
|
||||
"消除SQL注入漏洞",
|
||||
"使用安全的密码哈希算法",
|
||||
"代码符合PEP8规范",
|
||||
"添加类型提示",
|
||||
"函数职责单一",
|
||||
"消除硬编码值",
|
||||
],
|
||||
),
|
||||
TestTaskType.TASK4_REQUIREMENTS: TestTaskInfo(
|
||||
task_type=TestTaskType.TASK4_REQUIREMENTS,
|
||||
name="需求分析",
|
||||
description="生成需求文档、用户故事、技术方案等",
|
||||
requirements=[
|
||||
"生成需求文档",
|
||||
"生成用户故事",
|
||||
"生成技术方案",
|
||||
"生成功能列表",
|
||||
],
|
||||
acceptance_criteria=[
|
||||
"需求描述清晰完整",
|
||||
"用户故事格式规范",
|
||||
"技术方案合理",
|
||||
"功能点完整",
|
||||
],
|
||||
),
|
||||
TestTaskType.TASK5_ARCHITECTURE: TestTaskInfo(
|
||||
task_type=TestTaskType.TASK5_ARCHITECTURE,
|
||||
name="微服务架构设计",
|
||||
description="设计微服务架构方案",
|
||||
requirements=[
|
||||
"服务拆分",
|
||||
"架构设计",
|
||||
"技术选型",
|
||||
"接口设计",
|
||||
"数据设计",
|
||||
"部署方案",
|
||||
],
|
||||
acceptance_criteria=[
|
||||
"服务边界清晰",
|
||||
"架构设计合理",
|
||||
"技术选型合理",
|
||||
"接口设计清晰",
|
||||
"数据设计合理",
|
||||
"部署方案完整",
|
||||
],
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
@router.get("/", response_model=List[TestTaskInfo], summary="获取所有测试任务")
|
||||
async def get_test_tasks():
|
||||
"""
|
||||
获取所有测试任务定义
|
||||
"""
|
||||
return list(TEST_TASKS.values())
|
||||
|
||||
|
||||
@router.get("/{task_type}", response_model=TestTaskInfo, summary="获取测试任务详情")
|
||||
async def get_test_task(task_type: TestTaskType):
|
||||
"""
|
||||
根据任务类型获取测试任务详细信息
|
||||
"""
|
||||
if task_type not in TEST_TASKS:
|
||||
raise HTTPException(status_code=404, detail=f"测试任务 {task_type} 不存在")
|
||||
|
||||
return TEST_TASKS[task_type]
|
||||
|
||||
|
|
@ -1,154 +0,0 @@
|
|||
"""
|
||||
工具相关API路由
|
||||
"""
|
||||
from typing import List, Optional
|
||||
from fastapi import APIRouter, Query, HTTPException, Depends
|
||||
from pydantic import BaseModel
|
||||
|
||||
from api.schemas.tool import (
|
||||
ToolOverview,
|
||||
ToolDetail,
|
||||
ToolFilter,
|
||||
ToolType,
|
||||
PricingType,
|
||||
DeploymentType,
|
||||
ToolListResponse
|
||||
)
|
||||
from api.services.tool_service import ToolService
|
||||
|
||||
|
||||
router = APIRouter(prefix="/api/tools", tags=["tools"])
|
||||
|
||||
|
||||
def get_tool_service() -> ToolService:
|
||||
"""获取工具服务实例"""
|
||||
return ToolService()
|
||||
|
||||
|
||||
@router.get("/", response_model=ToolListResponse, summary="获取工具列表")
|
||||
async def get_tools(
|
||||
page: int = Query(1, ge=1, description="页码"),
|
||||
page_size: int = Query(20, ge=1, le=100, description="每页数量"),
|
||||
type: Optional[ToolType] = Query(None, description="工具类型筛选"),
|
||||
category: Optional[str] = Query(None, description="分类筛选"),
|
||||
pricing_type: Optional[PricingType] = Query(None, description="定价类型筛选"),
|
||||
deployment: Optional[DeploymentType] = Query(None, description="部署类型筛选"),
|
||||
search: Optional[str] = Query(None, description="搜索关键词"),
|
||||
service: ToolService = Depends(get_tool_service),
|
||||
):
|
||||
"""
|
||||
获取工具列表
|
||||
|
||||
- 支持分页
|
||||
- 支持多种筛选条件
|
||||
- 支持关键词搜索
|
||||
"""
|
||||
filter_params = ToolFilter(
|
||||
type=type,
|
||||
category=category,
|
||||
pricing_type=pricing_type,
|
||||
deployment=deployment,
|
||||
search=search,
|
||||
)
|
||||
|
||||
tools = service.get_all_tools(filter_params)
|
||||
total = len(tools)
|
||||
|
||||
# 分页
|
||||
start = (page - 1) * page_size
|
||||
end = start + page_size
|
||||
paginated_tools = tools[start:end]
|
||||
|
||||
return ToolListResponse(
|
||||
total=total,
|
||||
tools=paginated_tools,
|
||||
page=page,
|
||||
page_size=page_size,
|
||||
)
|
||||
|
||||
|
||||
@router.get("/categories", summary="获取所有分类")
|
||||
async def get_categories(service: ToolService = Depends(get_tool_service)):
|
||||
"""
|
||||
获取所有工具分类列表
|
||||
"""
|
||||
tools = service.get_all_tools()
|
||||
categories = list(set(tool.category for tool in tools))
|
||||
return {"categories": sorted(categories)}
|
||||
|
||||
|
||||
@router.get("/types", summary="获取所有工具类型")
|
||||
async def get_types():
|
||||
"""
|
||||
获取所有工具类型
|
||||
"""
|
||||
return {
|
||||
"types": [
|
||||
{
|
||||
"value": tool_type.value,
|
||||
"label": tool_type.value.replace("-", " ").title(),
|
||||
}
|
||||
for tool_type in ToolType
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
@router.get("/{tool_id}", response_model=ToolDetail, summary="获取工具详情")
|
||||
async def get_tool(
|
||||
tool_id: str,
|
||||
service: ToolService = Depends(get_tool_service),
|
||||
):
|
||||
"""
|
||||
根据工具ID获取工具详细信息
|
||||
|
||||
- 包含工具的基本信息
|
||||
- 包含安装配置指南
|
||||
- 包含测试结果
|
||||
- 包含优缺点分析
|
||||
"""
|
||||
tool = service.get_tool_by_id(tool_id)
|
||||
|
||||
if tool is None:
|
||||
raise HTTPException(status_code=404, detail=f"工具 {tool_id} 不存在")
|
||||
|
||||
return tool
|
||||
|
||||
|
||||
@router.get("/category/{category}", response_model=List[ToolOverview], summary="根据分类获取工具")
|
||||
async def get_tools_by_category(
|
||||
category: str,
|
||||
service: ToolService = Depends(get_tool_service),
|
||||
):
|
||||
"""
|
||||
根据分类获取工具列表
|
||||
"""
|
||||
tools = service.get_tools_by_category(category)
|
||||
return tools
|
||||
|
||||
|
||||
@router.get("/type/{tool_type}", response_model=List[ToolOverview], summary="根据类型获取工具")
|
||||
async def get_tools_by_type(
|
||||
tool_type: ToolType,
|
||||
service: ToolService = Depends(get_tool_service),
|
||||
):
|
||||
"""
|
||||
根据工具类型获取工具列表
|
||||
"""
|
||||
tools = service.get_tools_by_type(tool_type)
|
||||
return tools
|
||||
|
||||
|
||||
@router.post("/refresh", summary="刷新工具缓存")
|
||||
async def refresh_tools(service: ToolService = Depends(get_tool_service)):
|
||||
"""
|
||||
刷新工具数据缓存
|
||||
|
||||
当工具信息更新后,可以调用此接口刷新缓存
|
||||
"""
|
||||
service.clear_cache()
|
||||
tools = service.get_all_tools()
|
||||
return {
|
||||
"message": "工具缓存已刷新",
|
||||
"total": len(tools),
|
||||
}
|
||||
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
"""
|
||||
API数据模型
|
||||
"""
|
||||
|
||||
|
|
@ -1,112 +0,0 @@
|
|||
"""
|
||||
测试任务相关的数据模型
|
||||
"""
|
||||
from datetime import datetime
|
||||
from typing import List, Optional, Dict, Any
|
||||
from enum import Enum
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class TestTaskType(str, Enum):
|
||||
"""测试任务类型"""
|
||||
TASK1_API = "task1-api"
|
||||
TASK2_DEBUG = "task2-debug"
|
||||
TASK3_REFACTOR = "task3-refactor"
|
||||
TASK4_REQUIREMENTS = "task4-requirements"
|
||||
TASK5_ARCHITECTURE = "task5-architecture"
|
||||
|
||||
|
||||
class TestStatus(str, Enum):
|
||||
"""测试状态"""
|
||||
PENDING = "pending"
|
||||
IN_PROGRESS = "in_progress"
|
||||
COMPLETED = "completed"
|
||||
FAILED = "failed"
|
||||
|
||||
|
||||
class EfficiencyMetrics(BaseModel):
|
||||
"""效率指标"""
|
||||
development_time: Optional[int] = Field(None, description="开发耗时(分钟)")
|
||||
interaction_count: Optional[int] = Field(None, description="交互次数")
|
||||
automation_rate: Optional[float] = Field(None, description="自动化程度(%)", ge=0, le=100)
|
||||
response_time: Optional[float] = Field(None, description="响应速度(秒)")
|
||||
|
||||
|
||||
class QualityMetrics(BaseModel):
|
||||
"""质量指标"""
|
||||
code_accuracy: Optional[float] = Field(None, description="代码正确率(%)", ge=0, le=100)
|
||||
test_pass_rate: Optional[float] = Field(None, description="测试通过率(%)", ge=0, le=100)
|
||||
readability_score: Optional[int] = Field(None, description="可读性评分(1-5)", ge=1, le=5)
|
||||
security_score: Optional[int] = Field(None, description="安全性评分(1-5)", ge=1, le=5)
|
||||
standard_score: Optional[int] = Field(None, description="规范性评分(1-5)", ge=1, le=5)
|
||||
|
||||
|
||||
class TestMetrics(BaseModel):
|
||||
"""测试指标"""
|
||||
efficiency: Optional[EfficiencyMetrics] = None
|
||||
quality: Optional[QualityMetrics] = None
|
||||
overall_score: Optional[float] = Field(None, description="综合评分(1-5)", ge=1, le=5)
|
||||
|
||||
|
||||
class TestResult(BaseModel):
|
||||
"""测试结果"""
|
||||
id: str = Field(..., description="测试结果ID")
|
||||
tool_id: str = Field(..., description="工具ID")
|
||||
task_type: TestTaskType = Field(..., description="测试任务类型")
|
||||
status: TestStatus = Field(default=TestStatus.PENDING, description="测试状态")
|
||||
test_date: Optional[datetime] = None
|
||||
environment: Optional[Dict[str, Any]] = None
|
||||
original_code: Optional[str] = None
|
||||
final_code: Optional[str] = None
|
||||
modifications: Optional[List[Dict[str, str]]] = []
|
||||
metrics: Optional[TestMetrics] = None
|
||||
pros: Optional[List[str]] = []
|
||||
cons: Optional[List[str]] = []
|
||||
screenshots: Optional[List[str]] = []
|
||||
notes: Optional[str] = None
|
||||
created_at: Optional[datetime] = None
|
||||
updated_at: Optional[datetime] = None
|
||||
|
||||
|
||||
class TestResultCreate(BaseModel):
|
||||
"""创建测试结果请求"""
|
||||
tool_id: str
|
||||
task_type: TestTaskType
|
||||
environment: Optional[Dict[str, Any]] = None
|
||||
original_code: Optional[str] = None
|
||||
final_code: Optional[str] = None
|
||||
modifications: Optional[List[Dict[str, str]]] = []
|
||||
metrics: Optional[TestMetrics] = None
|
||||
pros: Optional[List[str]] = []
|
||||
cons: Optional[List[str]] = []
|
||||
notes: Optional[str] = None
|
||||
|
||||
|
||||
class TestResultUpdate(BaseModel):
|
||||
"""更新测试结果请求"""
|
||||
status: Optional[TestStatus] = None
|
||||
final_code: Optional[str] = None
|
||||
modifications: Optional[List[Dict[str, str]]] = None
|
||||
metrics: Optional[TestMetrics] = None
|
||||
pros: Optional[List[str]] = None
|
||||
cons: Optional[List[str]] = None
|
||||
notes: Optional[str] = None
|
||||
|
||||
|
||||
class TestResultListResponse(BaseModel):
|
||||
"""测试结果列表响应"""
|
||||
total: int
|
||||
results: List[TestResult]
|
||||
page: int = 1
|
||||
page_size: int = 20
|
||||
|
||||
|
||||
class TestTaskInfo(BaseModel):
|
||||
"""测试任务信息"""
|
||||
task_type: TestTaskType
|
||||
name: str
|
||||
description: str
|
||||
requirements: List[str]
|
||||
acceptance_criteria: List[str]
|
||||
initial_conditions: Optional[Dict[str, Any]] = None
|
||||
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
"""
|
||||
工具相关的数据模型
|
||||
"""
|
||||
from datetime import datetime
|
||||
from typing import List, Optional, Dict, Any
|
||||
from enum import Enum
|
||||
from pydantic import BaseModel, Field, HttpUrl, ConfigDict
|
||||
|
||||
|
||||
class ToolType(str, Enum):
|
||||
"""工具类型枚举"""
|
||||
REQUIREMENTS_ANALYSIS = "requirements-analysis"
|
||||
ARCHITECTURE_DESIGN = "architecture-design"
|
||||
CODE_GENERATION = "code-generation"
|
||||
DEBUGGING = "debugging"
|
||||
REFACTORING = "refactoring"
|
||||
TEST_GENERATION = "test-generation"
|
||||
DOCUMENTATION = "documentation"
|
||||
CODE_REVIEW = "code-review"
|
||||
PROJECT_MANAGEMENT = "project-management"
|
||||
DEVOPS_CI_CD = "devops-ci-cd"
|
||||
LOCAL_MODELS = "local-models"
|
||||
FULL_FLOW = "full-flow"
|
||||
|
||||
|
||||
class PricingType(str, Enum):
|
||||
"""定价类型"""
|
||||
FREE = "free"
|
||||
PAID = "paid"
|
||||
OPEN_SOURCE = "open-source"
|
||||
FREEMIUM = "freemium"
|
||||
|
||||
|
||||
class DeploymentType(str, Enum):
|
||||
"""部署类型"""
|
||||
CLOUD = "cloud"
|
||||
LOCAL = "local"
|
||||
HYBRID = "hybrid"
|
||||
|
||||
|
||||
class LanguageSupport(BaseModel):
|
||||
"""语言支持"""
|
||||
python: Optional[bool] = False
|
||||
javascript: Optional[bool] = False
|
||||
typescript: Optional[bool] = False
|
||||
java: Optional[bool] = False
|
||||
go: Optional[bool] = False
|
||||
rust: Optional[bool] = False
|
||||
cpp: Optional[bool] = False
|
||||
other: Optional[List[str]] = []
|
||||
|
||||
|
||||
class VersionInfo(BaseModel):
|
||||
"""版本信息"""
|
||||
version: str
|
||||
release_date: Optional[str] = None
|
||||
last_updated: Optional[str] = None
|
||||
|
||||
|
||||
class PricingInfo(BaseModel):
|
||||
"""定价信息"""
|
||||
type: PricingType
|
||||
free_tier: Optional[str] = None
|
||||
paid_tier: Optional[str] = None
|
||||
price: Optional[str] = None
|
||||
open_source_license: Optional[str] = None
|
||||
|
||||
|
||||
class WebsiteInfo(BaseModel):
|
||||
"""网站信息"""
|
||||
official: Optional[HttpUrl] = None
|
||||
github: Optional[HttpUrl] = None
|
||||
docs: Optional[HttpUrl] = None
|
||||
|
||||
|
||||
class ToolBase(BaseModel):
|
||||
"""工具基础模型"""
|
||||
# 禁用受保护命名空间检查,允许使用 model_ 开头的字段名
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
name: str = Field(..., description="工具名称")
|
||||
type: ToolType = Field(..., description="工具类型")
|
||||
category: str = Field(..., description="工具分类")
|
||||
description: str = Field(..., description="工具简介")
|
||||
website: Optional[WebsiteInfo] = None
|
||||
pricing: Optional[PricingInfo] = None
|
||||
model_base: Optional[str] = Field(None, description="底层模型,如GPT-4、CodeLlama等")
|
||||
model_version: Optional[str] = Field(None, description="模型版本")
|
||||
language_support: Optional[LanguageSupport] = None
|
||||
deployment: Optional[DeploymentType] = None
|
||||
version: Optional[VersionInfo] = None
|
||||
features: Optional[List[str]] = []
|
||||
suitable_scenarios: Optional[List[str]] = []
|
||||
unsuitable_scenarios: Optional[List[str]] = []
|
||||
|
||||
|
||||
class ToolOverview(ToolBase):
|
||||
"""工具概览"""
|
||||
id: str = Field(..., description="工具ID")
|
||||
created_at: Optional[datetime] = None
|
||||
updated_at: Optional[datetime] = None
|
||||
|
||||
|
||||
class ToolDetail(ToolOverview):
|
||||
"""工具详细信息"""
|
||||
setup_guide: Optional[str] = None
|
||||
test_results: Optional[List[Dict[str, Any]]] = []
|
||||
pros: Optional[List[str]] = []
|
||||
cons: Optional[List[str]] = []
|
||||
screenshots: Optional[List[str]] = []
|
||||
|
||||
|
||||
class ToolListResponse(BaseModel):
|
||||
"""工具列表响应"""
|
||||
total: int
|
||||
tools: List[ToolOverview]
|
||||
page: int = 1
|
||||
page_size: int = 20
|
||||
|
||||
|
||||
class ToolFilter(BaseModel):
|
||||
"""工具筛选条件"""
|
||||
type: Optional[ToolType] = None
|
||||
category: Optional[str] = None
|
||||
pricing_type: Optional[PricingType] = None
|
||||
deployment: Optional[DeploymentType] = None
|
||||
language: Optional[str] = None
|
||||
search: Optional[str] = None
|
||||
|
||||
|
||||
class ToolCreate(ToolBase):
|
||||
"""创建工具请求"""
|
||||
pass
|
||||
|
||||
|
||||
class ToolUpdate(BaseModel):
|
||||
"""更新工具请求"""
|
||||
name: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
version: Optional[VersionInfo] = None
|
||||
features: Optional[List[str]] = None
|
||||
pros: Optional[List[str]] = None
|
||||
cons: Optional[List[str]] = None
|
||||
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
"""
|
||||
服务层
|
||||
"""
|
||||
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
"""
|
||||
测试服务
|
||||
"""
|
||||
from typing import List, Optional, Dict
|
||||
from datetime import datetime
|
||||
import uuid
|
||||
|
||||
from api.schemas.test import (
|
||||
TestResult,
|
||||
TestResultCreate,
|
||||
TestResultUpdate,
|
||||
TestTaskType,
|
||||
TestStatus,
|
||||
)
|
||||
|
||||
|
||||
class TestService:
|
||||
"""测试服务类"""
|
||||
|
||||
def __init__(self):
|
||||
"""初始化测试服务"""
|
||||
# TODO: 从数据库或文件加载测试结果
|
||||
self.results: Dict[str, TestResult] = {}
|
||||
|
||||
def get_all_results(
|
||||
self,
|
||||
tool_id: Optional[str] = None,
|
||||
task_type: Optional[TestTaskType] = None,
|
||||
) -> List[TestResult]:
|
||||
"""获取所有测试结果"""
|
||||
results = list(self.results.values())
|
||||
|
||||
if tool_id:
|
||||
results = [r for r in results if r.tool_id == tool_id]
|
||||
|
||||
if task_type:
|
||||
results = [r for r in results if r.task_type == task_type]
|
||||
|
||||
return results
|
||||
|
||||
def get_result_by_id(self, result_id: str) -> Optional[TestResult]:
|
||||
"""根据ID获取测试结果"""
|
||||
return self.results.get(result_id)
|
||||
|
||||
def create_result(self, result: TestResultCreate) -> TestResult:
|
||||
"""创建测试结果"""
|
||||
result_id = str(uuid.uuid4())
|
||||
|
||||
new_result = TestResult(
|
||||
id=result_id,
|
||||
tool_id=result.tool_id,
|
||||
task_type=result.task_type,
|
||||
status=TestStatus.PENDING,
|
||||
test_date=datetime.now(),
|
||||
environment=result.environment,
|
||||
original_code=result.original_code,
|
||||
final_code=result.final_code,
|
||||
modifications=result.modifications or [],
|
||||
metrics=result.metrics,
|
||||
pros=result.pros or [],
|
||||
cons=result.cons or [],
|
||||
notes=result.notes,
|
||||
created_at=datetime.now(),
|
||||
updated_at=datetime.now(),
|
||||
)
|
||||
|
||||
self.results[result_id] = new_result
|
||||
return new_result
|
||||
|
||||
def update_result(
|
||||
self,
|
||||
result_id: str,
|
||||
result: TestResultUpdate,
|
||||
) -> Optional[TestResult]:
|
||||
"""更新测试结果"""
|
||||
existing_result = self.results.get(result_id)
|
||||
|
||||
if existing_result is None:
|
||||
return None
|
||||
|
||||
# 更新字段
|
||||
update_data = result.dict(exclude_unset=True)
|
||||
for key, value in update_data.items():
|
||||
setattr(existing_result, key, value)
|
||||
|
||||
existing_result.updated_at = datetime.now()
|
||||
|
||||
return existing_result
|
||||
|
||||
def delete_result(self, result_id: str) -> bool:
|
||||
"""删除测试结果"""
|
||||
if result_id in self.results:
|
||||
del self.results[result_id]
|
||||
return True
|
||||
return False
|
||||
|
||||
|
|
@ -1,259 +0,0 @@
|
|||
"""
|
||||
工具信息服务
|
||||
"""
|
||||
import os
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import List, Optional, Dict, Any
|
||||
from datetime import datetime
|
||||
|
||||
from api.schemas.tool import ToolDetail, ToolOverview, ToolFilter, ToolType
|
||||
|
||||
|
||||
class ToolService:
|
||||
"""工具服务类"""
|
||||
|
||||
def __init__(self, base_path: Optional[str] = None):
|
||||
"""
|
||||
初始化工具服务
|
||||
|
||||
Args:
|
||||
base_path: 工具数据基础路径,默认为tools目录
|
||||
"""
|
||||
if base_path is None:
|
||||
# 获取项目根目录
|
||||
current_file = Path(__file__)
|
||||
self.base_path = current_file.parent.parent.parent / "tools"
|
||||
else:
|
||||
self.base_path = Path(base_path)
|
||||
|
||||
self._tools_cache: Optional[Dict[str, ToolDetail]] = None
|
||||
|
||||
def _load_tools(self) -> Dict[str, ToolDetail]:
|
||||
"""加载所有工具信息"""
|
||||
if self._tools_cache is not None:
|
||||
return self._tools_cache
|
||||
|
||||
tools = {}
|
||||
|
||||
# 遍历所有工具分类目录
|
||||
for category_dir in self.base_path.iterdir():
|
||||
if not category_dir.is_dir() or category_dir.name in ["tool-template", "__pycache__"]:
|
||||
continue
|
||||
|
||||
category = category_dir.name
|
||||
|
||||
# 遍历每个工具目录
|
||||
for tool_dir in category_dir.iterdir():
|
||||
if not tool_dir.is_dir():
|
||||
continue
|
||||
|
||||
tool_id = f"{category}_{tool_dir.name}"
|
||||
tool_data = self._load_tool_info(tool_dir, category)
|
||||
|
||||
if tool_data:
|
||||
tools[tool_id] = tool_data
|
||||
|
||||
self._tools_cache = tools
|
||||
return tools
|
||||
|
||||
def _load_tool_info(self, tool_dir: Path, category: str) -> Optional[ToolDetail]:
|
||||
"""加载单个工具信息"""
|
||||
overview_file = tool_dir / "overview.md"
|
||||
|
||||
if not overview_file.exists():
|
||||
return None
|
||||
|
||||
try:
|
||||
# 读取overview.md文件
|
||||
content = overview_file.read_text(encoding="utf-8")
|
||||
|
||||
# 解析Markdown内容(简化版,实际可以使用python-frontmatter)
|
||||
tool_data = self._parse_markdown(content)
|
||||
tool_data["id"] = f"{category}_{tool_dir.name}"
|
||||
tool_data["category"] = category
|
||||
|
||||
# 加载其他信息
|
||||
setup_guide_file = tool_dir / "setup-guide.md"
|
||||
if setup_guide_file.exists():
|
||||
tool_data["setup_guide"] = setup_guide_file.read_text(encoding="utf-8")
|
||||
|
||||
pros_cons_file = tool_dir / "pros-cons.md"
|
||||
if pros_cons_file.exists():
|
||||
pros_cons_content = pros_cons_file.read_text(encoding="utf-8")
|
||||
tool_data["pros"], tool_data["cons"] = self._parse_pros_cons(pros_cons_content)
|
||||
|
||||
# 加载测试结果
|
||||
test_results_dir = tool_dir / "test-results"
|
||||
if test_results_dir.exists():
|
||||
tool_data["test_results"] = self._load_test_results(test_results_dir)
|
||||
|
||||
return ToolDetail(**tool_data)
|
||||
except Exception as e:
|
||||
print(f"Error loading tool {tool_dir.name}: {e}")
|
||||
return None
|
||||
|
||||
def _parse_markdown(self, content: str) -> Dict[str, Any]:
|
||||
"""解析Markdown内容(简化版)"""
|
||||
data = {
|
||||
"name": "",
|
||||
"type": "",
|
||||
"description": "",
|
||||
"website": None,
|
||||
"pricing": None,
|
||||
"model_base": None,
|
||||
"language_support": None,
|
||||
"features": [],
|
||||
"suitable_scenarios": [],
|
||||
"unsuitable_scenarios": [],
|
||||
"created_at": datetime.now(),
|
||||
"updated_at": datetime.now(),
|
||||
}
|
||||
|
||||
lines = content.split("\n")
|
||||
current_section = None
|
||||
|
||||
for line in lines:
|
||||
line = line.strip()
|
||||
|
||||
# 解析标题
|
||||
if line.startswith("# "):
|
||||
data["name"] = line[2:].strip()
|
||||
elif line.startswith("### 工具简介"):
|
||||
current_section = "description"
|
||||
elif line.startswith("### 官方网站"):
|
||||
current_section = "website"
|
||||
elif line.startswith("### 定价信息"):
|
||||
current_section = "pricing"
|
||||
elif line.startswith("### 主要功能"):
|
||||
current_section = "features"
|
||||
elif line.startswith("### 适用场景"):
|
||||
current_section = "suitable_scenarios"
|
||||
elif line.startswith("### 不适用场景"):
|
||||
current_section = "unsuitable_scenarios"
|
||||
elif line.startswith("- **官网**"):
|
||||
# 解析URL
|
||||
url = line.split(":")[-1].strip().replace("[", "").replace("]", "").replace("(", "").replace(")", "")
|
||||
if not data.get("website"):
|
||||
data["website"] = {}
|
||||
data["website"]["official"] = url
|
||||
elif line.startswith("- ") and current_section in ["features", "suitable_scenarios", "unsuitable_scenarios"]:
|
||||
feature = line[2:].strip()
|
||||
if current_section == "features":
|
||||
data["features"].append(feature)
|
||||
elif current_section == "suitable_scenarios":
|
||||
data["suitable_scenarios"].append(feature)
|
||||
elif current_section == "unsuitable_scenarios":
|
||||
data["unsuitable_scenarios"].append(feature)
|
||||
elif line and current_section == "description":
|
||||
if not data["description"]:
|
||||
data["description"] = line
|
||||
else:
|
||||
data["description"] += " " + line
|
||||
|
||||
# 设置默认类型(根据目录名映射)
|
||||
type_mapping = {
|
||||
"requirements-analysis": ToolType.REQUIREMENTS_ANALYSIS,
|
||||
"architecture-design": ToolType.ARCHITECTURE_DESIGN,
|
||||
"code-generation": ToolType.CODE_GENERATION,
|
||||
"debugging": ToolType.DEBUGGING,
|
||||
"refactoring": ToolType.REFACTORING,
|
||||
"test-generation": ToolType.TEST_GENERATION,
|
||||
"documentation": ToolType.DOCUMENTATION,
|
||||
"code-review": ToolType.CODE_REVIEW,
|
||||
"project-management": ToolType.PROJECT_MANAGEMENT,
|
||||
"devops-ci-cd": ToolType.DEVOPS_CI_CD,
|
||||
"local-models": ToolType.LOCAL_MODELS,
|
||||
"full-flow": ToolType.FULL_FLOW,
|
||||
}
|
||||
data["type"] = type_mapping.get(data.get("category", ""), ToolType.CODE_GENERATION)
|
||||
|
||||
return data
|
||||
|
||||
def _parse_pros_cons(self, content: str) -> tuple[List[str], List[str]]:
|
||||
"""解析优缺点"""
|
||||
pros = []
|
||||
cons = []
|
||||
current_section = None
|
||||
|
||||
lines = content.split("\n")
|
||||
for line in lines:
|
||||
line = line.strip()
|
||||
if line.startswith("## ✅ 优点") or line.startswith("### 优点"):
|
||||
current_section = "pros"
|
||||
elif line.startswith("## ❌ 缺点") or line.startswith("### 缺点"):
|
||||
current_section = "cons"
|
||||
elif line.startswith("- ") and current_section:
|
||||
item = line[2:].strip()
|
||||
if current_section == "pros":
|
||||
pros.append(item)
|
||||
elif current_section == "cons":
|
||||
cons.append(item)
|
||||
|
||||
return pros, cons
|
||||
|
||||
def _load_test_results(self, test_results_dir: Path) -> List[Dict[str, Any]]:
|
||||
"""加载测试结果"""
|
||||
results = []
|
||||
|
||||
for test_file in test_results_dir.glob("*.md"):
|
||||
try:
|
||||
content = test_file.read_text(encoding="utf-8")
|
||||
# 简化版:只返回文件名和基本信息
|
||||
results.append({
|
||||
"task_name": test_file.stem,
|
||||
"file_path": str(test_file.relative_to(self.base_path.parent)),
|
||||
})
|
||||
except Exception as e:
|
||||
print(f"Error loading test result {test_file}: {e}")
|
||||
|
||||
return results
|
||||
|
||||
def get_all_tools(self, filter_params: Optional[ToolFilter] = None) -> List[ToolOverview]:
|
||||
"""获取所有工具"""
|
||||
tools = self._load_tools()
|
||||
|
||||
tool_list = [ToolOverview(**tool.model_dump()) for tool in tools.values()]
|
||||
|
||||
# 应用筛选
|
||||
if filter_params:
|
||||
if filter_params.type:
|
||||
tool_list = [t for t in tool_list if t.type == filter_params.type]
|
||||
if filter_params.category:
|
||||
tool_list = [t for t in tool_list if t.category == filter_params.category]
|
||||
if filter_params.search:
|
||||
search_lower = filter_params.search.lower()
|
||||
tool_list = [
|
||||
t for t in tool_list
|
||||
if search_lower in t.name.lower() or search_lower in t.description.lower()
|
||||
]
|
||||
|
||||
return tool_list
|
||||
|
||||
def get_tool_by_id(self, tool_id: str) -> Optional[ToolDetail]:
|
||||
"""根据ID获取工具详情"""
|
||||
tools = self._load_tools()
|
||||
return tools.get(tool_id)
|
||||
|
||||
def get_tools_by_category(self, category: str) -> List[ToolOverview]:
|
||||
"""根据分类获取工具"""
|
||||
tools = self._load_tools()
|
||||
return [
|
||||
ToolOverview(**tool.model_dump())
|
||||
for tool in tools.values()
|
||||
if tool.category == category
|
||||
]
|
||||
|
||||
def get_tools_by_type(self, tool_type: ToolType) -> List[ToolOverview]:
|
||||
"""根据类型获取工具"""
|
||||
tools = self._load_tools()
|
||||
return [
|
||||
ToolOverview(**tool.model_dump())
|
||||
for tool in tools.values()
|
||||
if tool.type == tool_type
|
||||
]
|
||||
|
||||
def clear_cache(self):
|
||||
"""清除缓存"""
|
||||
self._tools_cache = None
|
||||
|
||||
|
|
@ -1,242 +0,0 @@
|
|||
# 开源工具 vs 闭源工具对比分析
|
||||
|
||||
本文档对比分析开源工具和闭源工具的优缺点,帮助读者选择适合的工具类型。
|
||||
|
||||
## 📊 对比概述
|
||||
|
||||
### 开源工具特点
|
||||
|
||||
- **免费使用**:大多数开源工具免费
|
||||
- **可定制**:可以修改源代码以满足特定需求
|
||||
- **社区驱动**:由社区维护和发展
|
||||
- **透明性**:源代码公开,可审计
|
||||
|
||||
### 闭源工具特点
|
||||
|
||||
- **商业支持**:提供商业支持和售后服务
|
||||
- **功能完善**:通常功能更完善,体验更好
|
||||
- **更新及时**:开发团队专注于产品迭代
|
||||
- **安全性**:有专业团队负责安全维护
|
||||
|
||||
## 🔍 详细对比
|
||||
|
||||
### 1. 价格对比
|
||||
|
||||
| 维度 | 开源工具 | 闭源工具 |
|
||||
|-----|---------|---------|
|
||||
| **初始成本** | 免费 | 付费(通常$10-50/月) |
|
||||
| **使用成本** | 硬件成本(如本地模型需要GPU) | 订阅费用 + API调用费用 |
|
||||
| **长期成本** | 较低(主要是硬件和维护) | 较高(持续订阅费用) |
|
||||
| **隐藏成本** | 学习成本、部署成本、维护成本 | 通常包含在订阅费用中 |
|
||||
|
||||
**总结**:
|
||||
- **开源工具**:初始免费,但可能需要硬件投资(GPU)和更多维护时间
|
||||
- **闭源工具**:需要付费订阅,但通常使用更简单,维护成本低
|
||||
|
||||
### 2. 功能对比
|
||||
|
||||
| 维度 | 开源工具 | 闭源工具 |
|
||||
|-----|---------|---------|
|
||||
| **功能完整性** | 可能缺少部分功能 | 通常功能更完善 |
|
||||
| **代码质量** | 参差不齐,依赖社区贡献 | 通常质量更高,经过专业测试 |
|
||||
| **用户体验** | 可能需要配置和调整 | 通常用户体验更好 |
|
||||
| **更新频率** | 依赖社区活跃度 | 通常更新更频繁 |
|
||||
| **功能定制** | 可以修改源代码 | 通常不支持定制 |
|
||||
|
||||
**总结**:
|
||||
- **开源工具**:可能功能不完整,但可以定制
|
||||
- **闭源工具**:功能通常更完善,体验更好,但不支持定制
|
||||
|
||||
### 3. 技术支持对比
|
||||
|
||||
| 维度 | 开源工具 | 闭源工具 |
|
||||
|-----|---------|---------|
|
||||
| **官方支持** | 通常通过社区支持 | 提供官方技术支持 |
|
||||
| **响应时间** | 依赖社区响应时间 | 通常响应更快(24-48小时) |
|
||||
| **文档质量** | 可能文档不完整 | 通常文档更完善 |
|
||||
| **学习资源** | 社区教程和文档 | 官方教程和文档 |
|
||||
| **故障处理** | 依赖社区贡献 | 官方团队负责修复 |
|
||||
|
||||
**总结**:
|
||||
- **开源工具**:依赖社区支持,可能响应较慢,但社区资源丰富
|
||||
- **闭源工具**:提供官方支持,响应更快,文档更完善
|
||||
|
||||
### 4. 安全性对比
|
||||
|
||||
| 维度 | 开源工具 | 闭源工具 |
|
||||
|-----|---------|---------|
|
||||
| **代码审计** | 代码公开,可审计 | 代码不公开,无法审计 |
|
||||
| **漏洞发现** | 社区可以发现和修复漏洞 | 官方团队负责安全维护 |
|
||||
| **数据安全** | 可以本地部署,数据不出境 | 可能需要上传数据到云端 |
|
||||
| **隐私保护** | 完全控制数据 | 依赖服务商的数据保护政策 |
|
||||
| **合规性** | 可以完全控制合规性 | 依赖服务商的合规认证 |
|
||||
|
||||
**总结**:
|
||||
- **开源工具**:代码可审计,可本地部署,数据安全可控
|
||||
- **闭源工具**:专业团队维护安全,但代码不透明,数据可能上传到云端
|
||||
|
||||
### 5. 部署方式对比
|
||||
|
||||
| 维度 | 开源工具 | 闭源工具 |
|
||||
|-----|---------|---------|
|
||||
| **部署方式** | 可以本地部署 | 通常云端部署(SaaS) |
|
||||
| **硬件要求** | 可能需要GPU等硬件 | 通常不需要特殊硬件 |
|
||||
| **配置复杂度** | 可能需要较复杂的配置 | 通常配置简单 |
|
||||
| **可扩展性** | 可以自定义扩展 | 受限于服务商提供的功能 |
|
||||
| **离线使用** | 可以离线使用(本地部署) | 通常需要网络连接 |
|
||||
|
||||
**总结**:
|
||||
- **开源工具**:可以本地部署,但可能需要硬件投资和配置
|
||||
- **闭源工具**:部署简单,但通常需要网络连接
|
||||
|
||||
### 6. 社区生态对比
|
||||
|
||||
| 维度 | 开源工具 | 闭源工具 |
|
||||
|-----|---------|---------|
|
||||
| **社区活跃度** | 依赖社区贡献 | 官方团队主导 |
|
||||
| **贡献机制** | 可以贡献代码和功能 | 通常只能反馈问题 |
|
||||
| **插件生态** | 可能有丰富的插件生态 | 可能有官方插件生态 |
|
||||
| **学习资源** | 社区教程和文档 | 官方教程和文档 |
|
||||
| **长期维护** | 依赖社区维护 | 官方团队保证维护 |
|
||||
|
||||
**总结**:
|
||||
- **开源工具**:社区活跃度高,可以贡献,但依赖社区维护
|
||||
- **闭源工具**:官方主导,保证维护,但用户参与度较低
|
||||
|
||||
## 📋 代表性工具对比
|
||||
|
||||
### 代码生成类
|
||||
|
||||
#### 开源工具:CodeLlama
|
||||
|
||||
**优势**:
|
||||
- ✅ 完全免费
|
||||
- ✅ 可本地部署
|
||||
- ✅ 代码可审计
|
||||
- ✅ 可定制
|
||||
|
||||
**劣势**:
|
||||
- ❌ 需要GPU硬件
|
||||
- ❌ 配置复杂
|
||||
- ❌ 缺少官方支持
|
||||
- ❌ 文档可能不完整
|
||||
|
||||
**适用场景**:
|
||||
- 预算有限
|
||||
- 需要本地部署
|
||||
- 有GPU资源
|
||||
- 需要定制
|
||||
|
||||
#### 闭源工具:GitHub Copilot
|
||||
|
||||
**优势**:
|
||||
- ✅ 功能完善
|
||||
- ✅ 用户体验好
|
||||
- ✅ 官方支持
|
||||
- ✅ 文档完善
|
||||
|
||||
**劣势**:
|
||||
- ❌ 需要付费($10/月)
|
||||
- ❌ 需要网络连接
|
||||
- ❌ 代码不透明
|
||||
- ❌ 不支持定制
|
||||
|
||||
**适用场景**:
|
||||
- 预算充足
|
||||
- 需要官方支持
|
||||
- 注重用户体验
|
||||
- 不需要定制
|
||||
|
||||
### 全流程集成类
|
||||
|
||||
#### 开源工具:Cursor(部分开源)
|
||||
|
||||
**优势**:
|
||||
- ✅ 功能全面
|
||||
- ✅ 支持多模态输入
|
||||
- ✅ 界面友好
|
||||
|
||||
**劣势**:
|
||||
- ❌ 需要付费($15/月)
|
||||
- ❌ 核心功能不开源
|
||||
- ❌ 需要网络连接
|
||||
|
||||
#### 闭源工具:CodeLens
|
||||
|
||||
**优势**:
|
||||
- ✅ 企业级功能
|
||||
- ✅ 团队协作支持
|
||||
- ✅ 官方支持
|
||||
|
||||
**劣势**:
|
||||
- ❌ 价格较高
|
||||
- ❌ 需要网络连接
|
||||
- ❌ 代码不透明
|
||||
|
||||
## 🎯 选择建议
|
||||
|
||||
### 选择开源工具的情况
|
||||
|
||||
1. **预算有限**:无法承担订阅费用
|
||||
2. **需要本地部署**:数据安全要求高,需要本地部署
|
||||
3. **需要定制**:需要根据特定需求定制工具
|
||||
4. **有技术团队**:有能力和时间维护开源工具
|
||||
5. **学习目的**:想了解工具实现原理,学习技术
|
||||
|
||||
### 选择闭源工具的情况
|
||||
|
||||
1. **预算充足**:可以承担订阅费用
|
||||
2. **需要官方支持**:需要及时的技术支持
|
||||
3. **注重用户体验**:希望使用简单,功能完善
|
||||
4. **团队使用**:需要团队协作功能和管理功能
|
||||
5. **快速部署**:希望快速开始使用,不想花时间配置
|
||||
|
||||
## 📊 决策矩阵
|
||||
|
||||
### 场景1:个人开发者,预算有限
|
||||
|
||||
| 工具类型 | 评分 | 理由 |
|
||||
|---------|------|------|
|
||||
| 开源工具 | ⭐⭐⭐⭐⭐ | 免费,可本地部署,适合个人使用 |
|
||||
| 闭源工具 | ⭐⭐⭐ | 需要付费,但体验更好 |
|
||||
|
||||
**推荐**:开源工具(如CodeLlama)
|
||||
|
||||
### 场景2:企业团队,高安全要求
|
||||
|
||||
| 工具类型 | 评分 | 理由 |
|
||||
|---------|------|------|
|
||||
| 开源工具 | ⭐⭐⭐⭐ | 可本地部署,数据安全可控 |
|
||||
| 闭源工具(本地部署) | ⭐⭐⭐⭐ | 企业版可能支持本地部署 |
|
||||
| 闭源工具(云端) | ⭐⭐ | 数据上传云端,安全风险高 |
|
||||
|
||||
**推荐**:开源工具或支持本地部署的企业版闭源工具
|
||||
|
||||
### 场景3:学习目的,想了解技术
|
||||
|
||||
| 工具类型 | 评分 | 理由 |
|
||||
|---------|------|------|
|
||||
| 开源工具 | ⭐⭐⭐⭐⭐ | 代码公开,可以学习实现原理 |
|
||||
| 闭源工具 | ⭐⭐ | 代码不透明,无法学习 |
|
||||
|
||||
**推荐**:开源工具(如CodeLlama)
|
||||
|
||||
### 场景4:快速开发,注重效率
|
||||
|
||||
| 工具类型 | 评分 | 理由 |
|
||||
|---------|------|------|
|
||||
| 开源工具 | ⭐⭐⭐ | 可能需要配置和调整 |
|
||||
| 闭源工具 | ⭐⭐⭐⭐⭐ | 部署简单,功能完善 |
|
||||
|
||||
**推荐**:闭源工具(如GitHub Copilot)
|
||||
|
||||
## 🔗 相关链接
|
||||
|
||||
- [工具对比表](./tool-comparison-table.md) - 查看详细对比数据
|
||||
- [场景选型指南](./scenario-based-guide.md) - 按场景选择合适工具
|
||||
- [工具测试报告](../tools/) - 查看各工具的详细测试报告
|
||||
|
||||
---
|
||||
|
||||
**提示**:开源和闭源工具各有优缺点,建议根据实际需求、预算、技术能力和安全要求进行选择。
|
||||
|
||||
|
|
@ -1,467 +0,0 @@
|
|||
# 场景选型指南
|
||||
|
||||
本文档按使用场景推荐合适的AI4SE工具,帮助读者快速选择适合的工具。
|
||||
|
||||
## 🎯 选型原则
|
||||
|
||||
### 1. 场景优先
|
||||
|
||||
根据实际使用场景选择工具,而非单纯比较功能参数。
|
||||
|
||||
### 2. 预算考虑
|
||||
|
||||
考虑工具价格和使用成本(API调用费用、硬件投资等)。
|
||||
|
||||
### 3. 技术栈匹配
|
||||
|
||||
选择支持目标技术栈和框架的工具。
|
||||
|
||||
### 4. 团队规模
|
||||
|
||||
考虑团队规模和技术水平,选择易于上手的工具。
|
||||
|
||||
### 5. 安全要求
|
||||
|
||||
根据项目安全要求选择工具(本地部署vs云端服务)。
|
||||
|
||||
## 👤 个人开发者场景
|
||||
|
||||
### 场景描述
|
||||
|
||||
- **团队规模**:1人
|
||||
- **项目规模**:中小型项目
|
||||
- **预算**:有限(免费或低价优先)
|
||||
- **技术栈**:Python、JavaScript为主
|
||||
- **时间**:时间紧迫,需要提高开发效率
|
||||
|
||||
### 推荐工具
|
||||
|
||||
#### 1. GitHub Copilot(代码生成)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 免费试用,适合个人开发者
|
||||
- ✅ 与VS Code集成良好,上手简单
|
||||
- ✅ 代码质量较高,减少人工调整时间
|
||||
- ✅ 支持多语言,覆盖主要技术栈
|
||||
|
||||
**适用场景**:
|
||||
- 快速原型开发
|
||||
- 学习新框架/语言
|
||||
- 日常编码辅助
|
||||
|
||||
**价格**:免费试用3个月,之后$10/月
|
||||
|
||||
**详细报告**:[GitHub Copilot测试报告](../tools/code-generation/github-copilot/)
|
||||
|
||||
#### 2. CodeLlama(本地模型)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 完全免费,开源
|
||||
- ✅ 可本地部署,无需API费用
|
||||
- ✅ 支持多语言
|
||||
- ✅ 社区活跃,资源丰富
|
||||
|
||||
**适用场景**:
|
||||
- 有GPU的开发者
|
||||
- 需要本地部署(隐私要求)
|
||||
- 预算有限的项目
|
||||
|
||||
**价格**:免费
|
||||
|
||||
**硬件要求**:16GB+显存(7B模型)
|
||||
|
||||
**详细报告**:[CodeLlama测试报告](../tools/local-models/codellama-7b/)
|
||||
|
||||
#### 3. Cursor(全流程集成)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 功能全面,覆盖编码全流程
|
||||
- ✅ 界面友好,使用便捷
|
||||
- ✅ 支持多模态输入(代码+自然语言)
|
||||
|
||||
**适用场景**:
|
||||
- 需要全流程辅助
|
||||
- 喜欢一体化工具
|
||||
- 预算充足
|
||||
|
||||
**价格**:$15/月
|
||||
|
||||
**详细报告**:[Cursor测试报告](../tools/full-flow/cursor/)
|
||||
|
||||
### 不推荐工具
|
||||
|
||||
- **Tabnine Enterprise**:价格较高,适合团队使用
|
||||
- **SonarQube AI**:配置复杂,适合大型项目
|
||||
|
||||
## 👥 小团队场景(2-5人)
|
||||
|
||||
### 场景描述
|
||||
|
||||
- **团队规模**:2-5人
|
||||
- **项目规模**:中小型项目
|
||||
- **预算**:中等(可接受付费工具)
|
||||
- **技术栈**:Python、JavaScript、Java为主
|
||||
- **协作**:需要代码审查和团队协作
|
||||
|
||||
### 推荐工具
|
||||
|
||||
#### 1. GitHub Copilot for Business(代码生成)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 团队协作功能完善
|
||||
- ✅ 代码审查集成良好
|
||||
- ✅ 团队管理和使用统计
|
||||
- ✅ 安全性考虑(数据保护)
|
||||
|
||||
**适用场景**:
|
||||
- 团队协作开发
|
||||
- 需要代码审查
|
||||
- 需要使用统计
|
||||
|
||||
**价格**:$19/用户/月
|
||||
|
||||
**详细报告**:[GitHub Copilot测试报告](../tools/code-generation/github-copilot/)
|
||||
|
||||
#### 2. Cursor(全流程集成)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 功能全面,团队协作支持
|
||||
- ✅ 代码生成质量高
|
||||
- ✅ 支持团队设置和共享配置
|
||||
|
||||
**适用场景**:
|
||||
- 需要全流程辅助
|
||||
- 团队协作开发
|
||||
- 统一工具使用
|
||||
|
||||
**价格**:$15/用户/月
|
||||
|
||||
**详细报告**:[Cursor测试报告](../tools/full-flow/cursor/)
|
||||
|
||||
#### 3. Tabnine Enterprise(团队版)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 团队管理功能完善
|
||||
- ✅ 本地部署选项(数据安全)
|
||||
- ✅ 企业级安全特性
|
||||
- ✅ 使用统计和分析
|
||||
|
||||
**适用场景**:
|
||||
- 企业团队使用
|
||||
- 需要数据安全
|
||||
- 需要本地部署
|
||||
|
||||
**价格**:企业定价(联系销售)
|
||||
|
||||
**详细报告**:[Tabnine Enterprise测试报告](../tools/full-flow/tabnine-enterprise/)
|
||||
|
||||
### 不推荐工具
|
||||
|
||||
- **CodeLlama**:缺少团队协作功能
|
||||
- **个人版工具**:缺少团队管理功能
|
||||
|
||||
## 🏢 企业团队场景(5+人)
|
||||
|
||||
### 场景描述
|
||||
|
||||
- **团队规模**:5人以上
|
||||
- **项目规模**:大型项目
|
||||
- **预算**:充足
|
||||
- **技术栈**:多种技术栈
|
||||
- **安全要求**:高(需要数据安全、合规等)
|
||||
|
||||
### 推荐工具
|
||||
|
||||
#### 1. Tabnine Enterprise(企业版)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 企业级安全特性
|
||||
- ✅ 本地部署选项(数据不出境)
|
||||
- ✅ 团队管理和使用统计
|
||||
- ✅ 技术支持完善
|
||||
|
||||
**适用场景**:
|
||||
- 大型企业团队
|
||||
- 高安全要求
|
||||
- 需要本地部署
|
||||
|
||||
**价格**:企业定价(联系销售)
|
||||
|
||||
**详细报告**:[Tabnine Enterprise测试报告](../tools/full-flow/tabnine-enterprise/)
|
||||
|
||||
#### 2. SonarQube AI(代码质量)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 代码质量检查完善
|
||||
- ✅ 安全漏洞检测
|
||||
- ✅ 团队协作和报告
|
||||
- ✅ 企业级功能
|
||||
|
||||
**适用场景**:
|
||||
- 注重代码质量
|
||||
- 安全要求高
|
||||
- 需要详细报告
|
||||
|
||||
**价格**:付费(企业版)
|
||||
|
||||
**详细报告**:[SonarQube AI测试报告](../tools/code-review/sonarqube-ai/)
|
||||
|
||||
#### 3. GitHub Copilot for Business(代码生成)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 企业级安全特性
|
||||
- ✅ 团队管理和使用统计
|
||||
- ✅ GitHub集成良好
|
||||
- ✅ 技术支持完善
|
||||
|
||||
**适用场景**:
|
||||
- 使用GitHub的企业
|
||||
- 需要代码生成辅助
|
||||
- 需要团队协作
|
||||
|
||||
**价格**:$19/用户/月
|
||||
|
||||
**详细报告**:[GitHub Copilot测试报告](../tools/code-generation/github-copilot/)
|
||||
|
||||
### 不推荐工具
|
||||
|
||||
- **个人版工具**:缺少企业级功能
|
||||
- **免费开源工具**:缺少企业级支持
|
||||
|
||||
## 🎓 学习场景
|
||||
|
||||
### 场景描述
|
||||
|
||||
- **目标**:学习编程、框架、语言
|
||||
- **预算**:免费优先
|
||||
- **技术栈**:不限
|
||||
- **时间**:充足,需要详细解释
|
||||
|
||||
### 推荐工具
|
||||
|
||||
#### 1. GitHub Copilot(代码生成)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 免费试用3个月
|
||||
- ✅ 代码质量高,学习价值大
|
||||
- ✅ 支持多语言和框架
|
||||
- ✅ 集成VS Code,使用方便
|
||||
|
||||
**适用场景**:
|
||||
- 学习新编程语言
|
||||
- 学习新框架
|
||||
- 了解最佳实践
|
||||
|
||||
**价格**:免费试用3个月
|
||||
|
||||
**详细报告**:[GitHub Copilot测试报告](../tools/code-generation/github-copilot/)
|
||||
|
||||
#### 2. CodeLlama(本地模型)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 完全免费
|
||||
- ✅ 可本地部署,无限制使用
|
||||
- ✅ 代码示例丰富
|
||||
- ✅ 社区资源丰富
|
||||
|
||||
**适用场景**:
|
||||
- 有GPU的学习者
|
||||
- 需要大量代码示例
|
||||
- 学习成本敏感
|
||||
|
||||
**价格**:免费
|
||||
|
||||
**详细报告**:[CodeLlama测试报告](../tools/local-models/codellama-7b/)
|
||||
|
||||
#### 3. Cursor(全流程集成)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 功能全面,学习价值高
|
||||
- ✅ 支持多模态输入(代码+自然语言)
|
||||
- ✅ 解释详细,便于理解
|
||||
|
||||
**适用场景**:
|
||||
- 系统学习软件开发
|
||||
- 需要全流程辅助
|
||||
- 预算充足
|
||||
|
||||
**价格**:$15/月
|
||||
|
||||
**详细报告**:[Cursor测试报告](../tools/full-flow/cursor/)
|
||||
|
||||
### 不推荐工具
|
||||
|
||||
- **企业版工具**:价格较高,学习成本高
|
||||
- **专业调试工具**:学习阶段不需要
|
||||
|
||||
## 🔒 高安全要求场景
|
||||
|
||||
### 场景描述
|
||||
|
||||
- **安全要求**:高(数据安全、隐私保护、合规等)
|
||||
- **预算**:充足
|
||||
- **技术栈**:不限
|
||||
- **部署方式**:本地部署优先
|
||||
|
||||
### 推荐工具
|
||||
|
||||
#### 1. Tabnine Enterprise(本地部署)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 支持本地部署(数据不出境)
|
||||
- ✅ 企业级安全特性
|
||||
- ✅ 数据加密和访问控制
|
||||
- ✅ 合规支持(GDPR、SOC2等)
|
||||
|
||||
**适用场景**:
|
||||
- 高安全要求的企业
|
||||
- 需要数据不出境
|
||||
- 需要合规支持
|
||||
|
||||
**价格**:企业定价(联系销售)
|
||||
|
||||
**详细报告**:[Tabnine Enterprise测试报告](../tools/full-flow/tabnine-enterprise/)
|
||||
|
||||
#### 2. CodeLlama(本地模型)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 完全本地部署(数据不出境)
|
||||
- ✅ 开源,可审计
|
||||
- ✅ 无API调用,数据安全
|
||||
|
||||
**适用场景**:
|
||||
- 有GPU资源的企业
|
||||
- 需要完全本地化
|
||||
- 预算有限
|
||||
|
||||
**价格**:免费
|
||||
|
||||
**硬件要求**:16GB+显存(7B模型)
|
||||
|
||||
**详细报告**:[CodeLlama测试报告](../tools/local-models/codellama-7b/)
|
||||
|
||||
#### 3. Qwen-Coder(本地模型)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 完全本地部署(数据不出境)
|
||||
- ✅ 中文支持良好
|
||||
- ✅ 开源,可审计
|
||||
|
||||
**适用场景**:
|
||||
- 中文开发团队
|
||||
- 需要完全本地化
|
||||
- 预算有限
|
||||
|
||||
**价格**:免费
|
||||
|
||||
**硬件要求**:16GB+显存(7B模型)
|
||||
|
||||
**详细报告**:[Qwen-Coder测试报告](../tools/local-models/qwen-coder/)
|
||||
|
||||
### 不推荐工具
|
||||
|
||||
- **云端工具**:数据上传到云端,存在安全风险
|
||||
- **免费云端工具**:缺少企业级安全特性
|
||||
|
||||
## 🌐 多技术栈场景
|
||||
|
||||
### 场景描述
|
||||
|
||||
- **技术栈**:Python、JavaScript、Java、Go、Rust等多种语言
|
||||
- **预算**:中等
|
||||
- **团队规模**:不限
|
||||
- **需求**:需要支持多种技术栈的工具
|
||||
|
||||
### 推荐工具
|
||||
|
||||
#### 1. GitHub Copilot(代码生成)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 支持30+编程语言
|
||||
- ✅ 支持主流框架和库
|
||||
- ✅ 代码质量高
|
||||
- ✅ 社区活跃,资源丰富
|
||||
|
||||
**适用场景**:
|
||||
- 多语言项目
|
||||
- 需要统一工具
|
||||
- 团队协作
|
||||
|
||||
**价格**:$10/月(个人),$19/用户/月(团队)
|
||||
|
||||
**详细报告**:[GitHub Copilot测试报告](../tools/code-generation/github-copilot/)
|
||||
|
||||
#### 2. Cursor(全流程集成)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 支持多语言
|
||||
- ✅ 支持多种框架
|
||||
- ✅ 功能全面
|
||||
|
||||
**适用场景**:
|
||||
- 多语言项目
|
||||
- 需要全流程辅助
|
||||
- 统一工具使用
|
||||
|
||||
**价格**:$15/月
|
||||
|
||||
**详细报告**:[Cursor测试报告](../tools/full-flow/cursor/)
|
||||
|
||||
#### 3. CodeLlama(本地模型)
|
||||
|
||||
**推荐理由**:
|
||||
- ✅ 支持多语言
|
||||
- ✅ 开源,可定制
|
||||
- ✅ 免费使用
|
||||
|
||||
**适用场景**:
|
||||
- 多语言项目
|
||||
- 需要本地部署
|
||||
- 预算有限
|
||||
|
||||
**价格**:免费
|
||||
|
||||
**详细报告**:[CodeLlama测试报告](../tools/local-models/codellama-7b/)
|
||||
|
||||
### 不推荐工具
|
||||
|
||||
- **单一语言工具**:不支持多技术栈
|
||||
- **框架特定工具**:仅支持特定框架
|
||||
|
||||
## 📊 选型决策树
|
||||
|
||||
```
|
||||
开始
|
||||
├─ 预算充足?
|
||||
│ ├─ 是 → 考虑付费工具(GitHub Copilot、Cursor)
|
||||
│ └─ 否 → 考虑免费工具(CodeLlama、CodeGeeX)
|
||||
│
|
||||
├─ 需要本地部署?
|
||||
│ ├─ 是 → 考虑本地模型(CodeLlama、Qwen-Coder)
|
||||
│ └─ 否 → 考虑云端工具(GitHub Copilot、Cursor)
|
||||
│
|
||||
├─ 团队规模?
|
||||
│ ├─ 个人 → 个人版工具
|
||||
│ ├─ 小团队(2-5人) → 团队版工具
|
||||
│ └─ 大团队(5+人) → 企业版工具
|
||||
│
|
||||
├─ 技术栈?
|
||||
│ ├─ Python为主 → Python工具(如RefactorGPT)
|
||||
│ ├─ JavaScript为主 → JS工具
|
||||
│ └─ 多语言 → 通用工具(GitHub Copilot、Cursor)
|
||||
│
|
||||
└─ 安全要求?
|
||||
├─ 高 → 本地部署工具(Tabnine Enterprise、CodeLlama)
|
||||
└─ 一般 → 云端工具
|
||||
```
|
||||
|
||||
## 🔗 相关链接
|
||||
|
||||
- [工具对比表](./tool-comparison-table.md) - 查看详细对比数据
|
||||
- [开源vs闭源对比](./open-vs-closed.md) - 了解开源和闭源工具的区别
|
||||
- [工具测试报告](../tools/) - 查看各工具的详细测试报告
|
||||
|
||||
---
|
||||
|
||||
**提示**:选型建议基于当前测试结果,建议根据实际需求结合工具详细报告进行决策。
|
||||
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
# 工具对比表
|
||||
|
||||
本文档汇总所有AI4SE工具的核心指标对比,帮助读者快速比较不同工具。
|
||||
|
||||
## 📊 对比说明
|
||||
|
||||
### 对比维度
|
||||
|
||||
- **效率指标**:开发耗时、交互次数、响应速度、自动化程度
|
||||
- **质量指标**:代码正确率、测试通过率、可读性、安全性、规范性
|
||||
- **易用性指标**:学习曲线、上手难度、IDE集成、文档质量
|
||||
- **适配性指标**:语言支持、框架支持、平台兼容性、本地部署
|
||||
- **其他指标**:价格、开源状态、社区活跃度、更新频率
|
||||
|
||||
### 评分说明
|
||||
|
||||
- **评分范围**:1-5分(5分最高)
|
||||
- **综合评分**:各项指标加权平均(效率×0.3 + 质量×0.3 + 易用性×0.2 + 适配性×0.2)
|
||||
- **测试任务**:基于Task 1(API开发)测试结果
|
||||
|
||||
### 数据来源
|
||||
|
||||
- **测试日期**:2025年1月
|
||||
- **测试版本**:各工具当前版本
|
||||
- **测试环境**:详见[测试环境配置](../test-standards/environment/)
|
||||
|
||||
## 📋 代码生成类工具对比
|
||||
|
||||
| 工具名称 | 开发耗时<br/>(分钟) | 代码正确率<br/>(%) | 测试通过率<br/>(%) | 综合评分<br/>(1-5) | 价格 | 本地部署 | 支持语言 | 详细报告 |
|
||||
|---------|------------------|------------------|------------------|------------------|------|---------|---------|---------|
|
||||
| GitHub Copilot | - | - | - | - | $10/月 | ❌ | 多语言 | [链接](./tools/code-generation/github-copilot/) |
|
||||
| CodeLlama | - | - | - | - | 免费 | ✅ | 多语言 | [链接](./tools/code-generation/codellama/) |
|
||||
| Cursor | - | - | - | - | $15/月 | ❌ | 多语言 | [链接](./tools/code-generation/cursor/) |
|
||||
| CodeGeeX | - | - | - | - | 免费 | ✅ | 多语言 | [链接](./tools/code-generation/codegeex/) |
|
||||
| Tabnine | - | - | - | - | 免费/$12/月 | ✅ | 多语言 | [链接](./tools/code-generation/tabnine/) |
|
||||
|
||||
**说明**:数据正在补充中,详见各工具的详细测试报告。
|
||||
|
||||
## 📋 调试排障类工具对比
|
||||
|
||||
| 工具名称 | Bug识别率<br/>(%) | 修复正确率<br/>(%) | 响应速度<br/>(秒) | 综合评分<br/>(1-5) | 价格 | 本地部署 | 支持语言 | 详细报告 |
|
||||
|---------|-----------------|-----------------|-----------------|------------------|------|---------|---------|---------|
|
||||
| Sentry AI | - | - | - | - | $26/月起 | ❌ | 多语言 | [链接](./tools/debugging/sentry-ai/) |
|
||||
| DebugGPT | - | - | - | - | 免费 | ❌ | 多语言 | [链接](./tools/debugging/debuggpt/) |
|
||||
| CodeLlama Debug | - | - | - | - | 免费 | ✅ | 多语言 | [链接](./tools/debugging/codellama-debug/) |
|
||||
|
||||
**说明**:数据正在补充中,详见各工具的详细测试报告。
|
||||
|
||||
## 📋 代码重构类工具对比
|
||||
|
||||
| 工具名称 | 重构准确率<br/>(%) | 代码质量提升<br/>(%) | 安全性提升<br/>(%) | 综合评分<br/>(1-5) | 价格 | 本地部署 | 支持语言 | 详细报告 |
|
||||
|---------|-----------------|------------------|-----------------|------------------|------|---------|---------|---------|
|
||||
| RefactorGPT | - | - | - | - | 免费 | ❌ | Python | [链接](./tools/refactoring/refactorgpt/) |
|
||||
| SonarQube AI | - | - | - | - | 付费 | ✅ | 多语言 | [链接](./tools/refactoring/sonarqube-ai/) |
|
||||
| Cursor Refactor | - | - | - | - | $15/月 | ❌ | 多语言 | [链接](./tools/refactoring/cursor-refactor/) |
|
||||
|
||||
**说明**:数据正在补充中,详见各工具的详细测试报告。
|
||||
|
||||
## 📋 测试生成类工具对比
|
||||
|
||||
| 工具名称 | 测试覆盖率<br/>(%) | 测试通过率<br/>(%) | 用例质量<br/>(1-5) | 综合评分<br/>(1-5) | 价格 | 本地部署 | 支持语言 | 详细报告 |
|
||||
|---------|-----------------|-----------------|-----------------|------------------|------|---------|---------|---------|
|
||||
| TestGPT | - | - | - | - | 免费 | ❌ | Python | [链接](./tools/test-generation/testgpt/) |
|
||||
| Copilot X Test | - | - | - | - | $10/月 | ❌ | 多语言 | [链接](./tools/test-generation/copilot-x-test/) |
|
||||
| LangChain Test | - | - | - | - | 免费 | ❌ | Python | [链接](./tools/test-generation/langchain-test/) |
|
||||
|
||||
**说明**:数据正在补充中,详见各工具的详细测试报告。
|
||||
|
||||
## 📋 文档生成类工具对比
|
||||
|
||||
| 工具名称 | 文档完整性<br/>(%) | 文档准确性<br/>(%) | 文档质量<br/>(1-5) | 综合评分<br/>(1-5) | 价格 | 本地部署 | 支持语言 | 详细报告 |
|
||||
|---------|-----------------|-----------------|-----------------|------------------|------|---------|---------|---------|
|
||||
| AutoDoc | - | - | - | - | 免费 | ❌ | 多语言 | [链接](./tools/documentation/autodoc/) |
|
||||
| CodeWhisperer Docs | - | - | - | - | 免费 | ❌ | 多语言 | [链接](./tools/documentation/codewhisperer-docs/) |
|
||||
| DocGPT | - | - | - | - | 免费 | ❌ | 多语言 | [链接](./tools/documentation/docgpt/) |
|
||||
|
||||
**说明**:数据正在补充中,详见各工具的详细测试报告。
|
||||
|
||||
## 📋 全流程集成类工具对比
|
||||
|
||||
| 工具名称 | 功能覆盖度<br/>(%) | 集成质量<br/>(1-5) | 易用性<br/>(1-5) | 综合评分<br/>(1-5) | 价格 | 本地部署 | 支持语言 | 详细报告 |
|
||||
|---------|-----------------|-----------------|---------------|------------------|------|---------|---------|---------|
|
||||
| Cursor | - | - | - | - | $15/月 | ❌ | 多语言 | [链接](./tools/full-flow/cursor/) |
|
||||
| CodeLens | - | - | - | - | 付费 | ❌ | 多语言 | [链接](./tools/full-flow/codelens/) |
|
||||
| Tabnine Enterprise | - | - | - | - | 企业定价 | ✅ | 多语言 | [链接](./tools/full-flow/tabnine-enterprise/) |
|
||||
|
||||
**说明**:数据正在补充中,详见各工具的详细测试报告。
|
||||
|
||||
## 📋 本地化大模型类工具对比
|
||||
|
||||
| 工具名称 | 模型大小<br/>(参数) | 显存要求<br/>(GB) | 推理速度<br/>(tokens/秒) | 综合评分<br/>(1-5) | 价格 | 开源 | 支持语言 | 详细报告 |
|
||||
|---------|-----------------|-----------------|----------------------|------------------|------|------|---------|---------|
|
||||
| CodeLlama-7B | 7B | 16 | - | - | 免费 | ✅ | 多语言 | [链接](./tools/local-models/codellama-7b/) |
|
||||
| CodeLlama-13B | 13B | 24 | - | - | 免费 | ✅ | 多语言 | [链接](./tools/local-models/codellama-13b/) |
|
||||
| StarCoder | 15B | 32 | - | - | 免费 | ✅ | 多语言 | [链接](./tools/local-models/starcoder/) |
|
||||
| Qwen-Coder | 7B | 16 | - | - | 免费 | ✅ | 多语言 | [链接](./tools/local-models/qwen-coder/) |
|
||||
|
||||
**说明**:数据正在补充中,详见各工具的详细测试报告。
|
||||
|
||||
## 📊 综合排名
|
||||
|
||||
### Top 5 代码生成工具(基于综合评分)
|
||||
|
||||
| 排名 | 工具名称 | 综合评分 | 主要优势 | 适用场景 |
|
||||
|-----|---------|---------|---------|---------|
|
||||
| 1 | - | - | - | - |
|
||||
| 2 | - | - | - | - |
|
||||
| 3 | - | - | - | - |
|
||||
| 4 | - | - | - | - |
|
||||
| 5 | - | - | - | - |
|
||||
|
||||
**说明**:排名数据正在补充中,基于测试结果动态更新。
|
||||
|
||||
### Top 5 最佳性价比工具(免费/低价工具)
|
||||
|
||||
| 排名 | 工具名称 | 综合评分 | 价格 | 主要优势 |
|
||||
|-----|---------|---------|------|---------|
|
||||
| 1 | - | - | - | - |
|
||||
| 2 | - | - | - | - |
|
||||
| 3 | - | - | - | - |
|
||||
| 4 | - | - | - | - |
|
||||
| 5 | - | - | - | - |
|
||||
|
||||
**说明**:排名数据正在补充中,基于测试结果动态更新。
|
||||
|
||||
## 📈 数据更新说明
|
||||
|
||||
- **更新频率**:每3-6个月更新一次
|
||||
- **数据来源**:基于标准测试任务的实际测试结果
|
||||
- **版本记录**:记录测试使用的工具版本
|
||||
|
||||
## 🔗 相关链接
|
||||
|
||||
- [场景选型指南](./scenario-based-guide.md) - 按场景选择合适工具
|
||||
- [开源vs闭源对比](./open-vs-closed.md) - 开源工具与闭源工具对比分析
|
||||
- [测试标准](../test-standards/test-flow.md) - 了解测试方法和评估指标
|
||||
|
||||
---
|
||||
|
||||
**提示**:对比表数据基于当前测试结果,工具更新后可能需要重新测试。建议查看各工具的详细测试报告获取更多信息。
|
||||
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
# Web Framework
|
||||
fastapi==0.104.1
|
||||
uvicorn[standard]==0.24.0
|
||||
|
||||
# Data Validation
|
||||
pydantic==2.5.0
|
||||
pydantic-settings==2.1.0
|
||||
|
||||
# Markdown Parsing
|
||||
markdown==3.5.1
|
||||
python-frontmatter==1.0.0
|
||||
|
||||
# Utilities
|
||||
python-multipart==0.0.6
|
||||
aiofiles==23.2.1
|
||||
|
||||
# CORS Support
|
||||
python-jose[cryptography]==3.3.0
|
||||
|
||||
# Testing
|
||||
pytest==7.4.3
|
||||
pytest-asyncio==0.21.1
|
||||
httpx==0.25.2
|
||||
|
||||
# Development Tools
|
||||
python-dotenv==1.0.0
|
||||
black==23.12.1
|
||||
flake8==7.0.0
|
||||
|
|
@ -1,418 +0,0 @@
|
|||
# 常见问题
|
||||
|
||||
本文档汇总AI4SE工具使用中的常见问题和解决方案。
|
||||
|
||||
## 🔧 安装配置问题
|
||||
|
||||
### 问题1:API密钥配置失败
|
||||
|
||||
**现象**:
|
||||
- 工具提示"API密钥无效"
|
||||
- 无法连接到服务
|
||||
|
||||
**原因**:
|
||||
- API密钥配置错误
|
||||
- API密钥已过期
|
||||
- 环境变量未正确设置
|
||||
|
||||
**解决方案**:
|
||||
|
||||
1. **检查API密钥**
|
||||
```bash
|
||||
# macOS/Linux
|
||||
echo $TOOL_API_KEY
|
||||
|
||||
# Windows (PowerShell)
|
||||
echo $env:TOOL_API_KEY
|
||||
```
|
||||
|
||||
2. **重新配置API密钥**
|
||||
```bash
|
||||
# macOS/Linux
|
||||
export TOOL_API_KEY="your-api-key-here"
|
||||
|
||||
# Windows (PowerShell)
|
||||
$env:TOOL_API_KEY="your-api-key-here"
|
||||
```
|
||||
|
||||
3. **在IDE中配置**
|
||||
- 打开IDE设置
|
||||
- 找到工具配置选项
|
||||
- 输入正确的API密钥
|
||||
|
||||
4. **检查API密钥是否过期**
|
||||
- 登录工具官网
|
||||
- 检查API密钥状态
|
||||
- 如已过期,重新生成
|
||||
|
||||
**预防措施**:
|
||||
- 使用`.env`文件管理API密钥
|
||||
- 不要将API密钥提交到Git仓库
|
||||
- 定期检查API密钥状态
|
||||
|
||||
---
|
||||
|
||||
### 问题2:本地模型部署失败
|
||||
|
||||
**现象**:
|
||||
- 模型加载失败
|
||||
- 提示显存不足
|
||||
- 模型服务无法启动
|
||||
|
||||
**原因**:
|
||||
- GPU显存不足
|
||||
- 模型文件损坏
|
||||
- 依赖版本不兼容
|
||||
|
||||
**解决方案**:
|
||||
|
||||
1. **检查GPU显存**
|
||||
```bash
|
||||
# NVIDIA GPU
|
||||
nvidia-smi
|
||||
|
||||
# 查看显存使用情况
|
||||
# 确保有足够的显存(至少16GB for 7B模型)
|
||||
```
|
||||
|
||||
2. **使用量化模型**
|
||||
```bash
|
||||
# 使用4-bit量化模型
|
||||
# 可以降低显存要求(约8GB for 7B模型)
|
||||
```
|
||||
|
||||
3. **使用CPU推理**(不推荐,速度慢)
|
||||
```python
|
||||
# 在配置中设置device为cpu
|
||||
config = {
|
||||
"device": "cpu"
|
||||
}
|
||||
```
|
||||
|
||||
4. **重新下载模型文件**
|
||||
```bash
|
||||
# 使用git-lfs下载
|
||||
git lfs install
|
||||
git clone https://huggingface.co/model-name/model-repo
|
||||
```
|
||||
|
||||
**预防措施**:
|
||||
- 检查硬件要求(GPU、显存)
|
||||
- 使用官方推荐的模型版本
|
||||
- 使用虚拟环境隔离依赖
|
||||
|
||||
---
|
||||
|
||||
### 问题3:依赖安装失败
|
||||
|
||||
**现象**:
|
||||
- pip/npm install失败
|
||||
- 提示依赖版本冲突
|
||||
- 缺少系统依赖
|
||||
|
||||
**原因**:
|
||||
- Python/Node.js版本不兼容
|
||||
- 依赖版本冲突
|
||||
- 缺少系统依赖(如编译工具)
|
||||
|
||||
**解决方案**:
|
||||
|
||||
1. **检查Python/Node.js版本**
|
||||
```bash
|
||||
# Python
|
||||
python --version # 需要 3.10+
|
||||
|
||||
# Node.js
|
||||
node --version # 需要 18.17.0+
|
||||
```
|
||||
|
||||
2. **使用虚拟环境**(Python)
|
||||
```bash
|
||||
# 创建虚拟环境
|
||||
python -m venv venv
|
||||
source venv/bin/activate # macOS/Linux
|
||||
venv\Scripts\activate # Windows
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
3. **解决依赖冲突**
|
||||
```bash
|
||||
# 使用pip-tools管理依赖
|
||||
pip install pip-tools
|
||||
pip-compile requirements.in
|
||||
pip-sync requirements.txt
|
||||
```
|
||||
|
||||
4. **安装系统依赖**(Linux)
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
sudo apt-get update
|
||||
sudo apt-get install build-essential python3-dev
|
||||
|
||||
# 或其他系统依赖
|
||||
```
|
||||
|
||||
**预防措施**:
|
||||
- 使用虚拟环境隔离依赖
|
||||
- 使用依赖管理工具(pip-tools、npm)
|
||||
- 记录依赖版本(requirements.txt、package.json)
|
||||
|
||||
---
|
||||
|
||||
## 🐛 使用问题
|
||||
|
||||
### 问题4:工具生成代码质量差
|
||||
|
||||
**现象**:
|
||||
- 生成的代码无法运行
|
||||
- 代码逻辑错误
|
||||
- 代码不符合规范
|
||||
|
||||
**原因**:
|
||||
- 提示词不够明确
|
||||
- 工具模型限制
|
||||
- 缺少上下文信息
|
||||
|
||||
**解决方案**:
|
||||
|
||||
1. **优化提示词**
|
||||
```python
|
||||
# 不明确的提示词
|
||||
"生成一个用户管理API"
|
||||
|
||||
# 明确的提示词
|
||||
"""
|
||||
使用Python + FastAPI开发用户管理系统的RESTful API。
|
||||
|
||||
功能要求:
|
||||
1. 用户注册接口 (POST /api/users/register)
|
||||
- 接收用户名、邮箱、密码
|
||||
- 验证输入格式(邮箱格式、密码强度)
|
||||
- 检查用户名和邮箱是否已存在
|
||||
- 返回用户信息(不含密码)
|
||||
|
||||
技术要求:
|
||||
- 使用FastAPI框架
|
||||
- 实现数据校验(Pydantic模型)
|
||||
- 实现错误处理(统一的错误响应格式)
|
||||
- 使用SQLite数据库存储用户数据
|
||||
- 实现密码加密(bcrypt)
|
||||
- 实现JWT认证
|
||||
- 代码符合PEP8规范
|
||||
"""
|
||||
```
|
||||
|
||||
2. **提供更多上下文**
|
||||
- 提供相关的代码示例
|
||||
- 提供项目的技术栈信息
|
||||
- 提供业务需求和约束条件
|
||||
|
||||
3. **分步生成**
|
||||
- 先生成核心功能
|
||||
- 再逐步添加其他功能
|
||||
- 每步验证代码正确性
|
||||
|
||||
4. **人工审查和调整**
|
||||
- 审查生成的代码
|
||||
- 修复明显的错误
|
||||
- 优化代码结构
|
||||
|
||||
**预防措施**:
|
||||
- 学习如何编写有效的提示词
|
||||
- 提供充分的上下文信息
|
||||
- 分步生成,逐步验证
|
||||
|
||||
---
|
||||
|
||||
### 问题5:工具响应速度慢
|
||||
|
||||
**现象**:
|
||||
- 工具响应时间过长(>30秒)
|
||||
- 生成代码过程中卡顿
|
||||
|
||||
**原因**:
|
||||
- 网络延迟(云端工具)
|
||||
- 模型大小(本地工具)
|
||||
- 硬件性能限制
|
||||
|
||||
**解决方案**:
|
||||
|
||||
1. **优化网络连接**(云端工具)
|
||||
```bash
|
||||
# 检查网络连接
|
||||
ping api.tool.com
|
||||
|
||||
# 使用代理(如适用)
|
||||
export HTTP_PROXY=http://proxy:port
|
||||
export HTTPS_PROXY=http://proxy:port
|
||||
```
|
||||
|
||||
2. **使用更小的模型**(本地工具)
|
||||
```bash
|
||||
# 使用7B模型代替13B模型
|
||||
# 或使用量化模型(4-bit、8-bit)
|
||||
```
|
||||
|
||||
3. **优化硬件配置**(本地工具)
|
||||
- 升级GPU
|
||||
- 增加显存
|
||||
- 使用更快的存储(SSD)
|
||||
|
||||
4. **调整生成参数**(本地工具)
|
||||
```python
|
||||
# 减少生成长度
|
||||
config = {
|
||||
"max_tokens": 512, # 默认2048
|
||||
"temperature": 0.7 # 降低温度可以提高速度
|
||||
}
|
||||
```
|
||||
|
||||
**预防措施**:
|
||||
- 使用稳定的网络连接
|
||||
- 根据硬件选择合适大小的模型
|
||||
- 优化生成参数
|
||||
|
||||
---
|
||||
|
||||
### 问题6:工具生成代码安全性问题
|
||||
|
||||
**现象**:
|
||||
- 生成的代码存在SQL注入漏洞
|
||||
- 密码使用明文存储
|
||||
- 缺少输入验证
|
||||
|
||||
**原因**:
|
||||
- 工具模型训练数据限制
|
||||
- 提示词未强调安全性
|
||||
- 缺少安全最佳实践知识
|
||||
|
||||
**解决方案**:
|
||||
|
||||
1. **在提示词中强调安全性**
|
||||
```python
|
||||
"""
|
||||
使用Python + FastAPI开发用户管理API。
|
||||
|
||||
安全要求:
|
||||
- 使用参数化查询防止SQL注入
|
||||
- 使用bcrypt加密密码,不使用MD5
|
||||
- 验证和清理所有用户输入
|
||||
- 实现JWT认证,不使用Session
|
||||
- 返回错误信息时不要泄露敏感信息
|
||||
"""
|
||||
```
|
||||
|
||||
2. **代码审查和测试**
|
||||
- 使用安全扫描工具(如SonarQube)
|
||||
- 进行安全测试(SQL注入、XSS等)
|
||||
- 人工审查安全关键代码
|
||||
|
||||
3. **使用安全最佳实践**
|
||||
- 参考OWASP Top 10
|
||||
- 使用安全框架和库
|
||||
- 遵循安全编码规范
|
||||
|
||||
**预防措施**:
|
||||
- 在提示词中强调安全性要求
|
||||
- 进行充分的安全测试
|
||||
- 使用安全扫描工具
|
||||
|
||||
---
|
||||
|
||||
## 📚 学习问题
|
||||
|
||||
### 问题7:不知道如何选择合适的工具
|
||||
|
||||
**现象**:
|
||||
- 面对多个工具不知道选哪个
|
||||
- 不清楚工具的适用场景
|
||||
|
||||
**解决方案**:
|
||||
|
||||
1. **明确使用场景**
|
||||
- 确定要解决的问题
|
||||
- 明确技术栈和框架
|
||||
- 考虑预算和安全要求
|
||||
|
||||
2. **参考选型指南**
|
||||
- 阅读[场景选型指南](../comparisons/scenario-based-guide.md)
|
||||
- 查看[工具对比表](../comparisons/tool-comparison-table.md)
|
||||
- 阅读各工具的详细测试报告
|
||||
|
||||
3. **试用多个工具**
|
||||
- 免费试用不同工具
|
||||
- 对比实际使用体验
|
||||
- 根据体验选择最适合的工具
|
||||
|
||||
4. **咨询社区**
|
||||
- 在GitHub Discussions提问
|
||||
- 在Stack Overflow搜索相关问题
|
||||
- 参考社区推荐
|
||||
|
||||
**相关资源**:
|
||||
- [场景选型指南](../comparisons/scenario-based-guide.md)
|
||||
- [工具对比表](../comparisons/tool-comparison-table.md)
|
||||
- [工具测试报告](../tools/)
|
||||
|
||||
---
|
||||
|
||||
### 问题8:如何学习使用工具
|
||||
|
||||
**现象**:
|
||||
- 不知道从哪里开始学习
|
||||
- 学习资源分散,难以找到
|
||||
|
||||
**解决方案**:
|
||||
|
||||
1. **参考学习路径**
|
||||
- 阅读[学习路径](./learning-paths.md)
|
||||
- 按照阶段逐步学习
|
||||
- 完成实践任务
|
||||
|
||||
2. **阅读官方文档**
|
||||
- 查看工具官方文档
|
||||
- 学习基本使用和高级功能
|
||||
- 参考示例代码
|
||||
|
||||
3. **完成测试任务**
|
||||
- 参考[测试任务定义](../test-standards/test-tasks/)
|
||||
- 完成标准测试任务
|
||||
- 对比测试结果
|
||||
|
||||
4. **参与社区**
|
||||
- 加入工具社区(GitHub、Discord等)
|
||||
- 参与讨论和问答
|
||||
- 分享使用经验
|
||||
|
||||
**相关资源**:
|
||||
- [学习路径](./learning-paths.md)
|
||||
- [测试任务定义](../test-standards/test-tasks/)
|
||||
- [贡献指南](../CONTRIBUTING.md)
|
||||
|
||||
---
|
||||
|
||||
## 🔗 获取帮助
|
||||
|
||||
如果以上解决方案无法解决您的问题,可以:
|
||||
|
||||
1. **提交Issue**
|
||||
- 在GitHub仓库提交[Issue](https://github.com/)
|
||||
- 详细描述问题和环境信息
|
||||
- 提供错误日志和截图
|
||||
|
||||
2. **参与讨论**
|
||||
- 在GitHub Discussions提问
|
||||
- 分享使用经验和问题
|
||||
- 帮助其他用户解决问题
|
||||
|
||||
3. **查阅文档**
|
||||
- 阅读[工具测试报告](../tools/)
|
||||
- 查看[测试标准](../test-standards/test-flow.md)
|
||||
- 参考[常见问题](./common-issues.md)
|
||||
|
||||
---
|
||||
|
||||
**提示**:遇到问题时,先查阅本文档和相关文档。如果问题仍未解决,可以提交Issue或参与讨论。
|
||||
|
||||
|
|
@ -1,273 +0,0 @@
|
|||
# 学习路径
|
||||
|
||||
本文档提供AI4SE工具的学习路径,帮助开发者从入门到进阶。
|
||||
|
||||
## 🎯 学习目标
|
||||
|
||||
### 初级目标
|
||||
|
||||
- 了解AI4SE工具的基本概念和分类
|
||||
- 掌握1-2个主流工具的基本使用
|
||||
- 能够使用工具辅助日常开发
|
||||
|
||||
### 中级目标
|
||||
|
||||
- 掌握3-5个不同类别的工具
|
||||
- 能够根据场景选择合适的工具
|
||||
- 能够解决工具使用中的常见问题
|
||||
|
||||
### 高级目标
|
||||
|
||||
- 深入了解工具的工作原理和实现机制
|
||||
- 能够配置和优化工具性能
|
||||
- 能够为社区贡献工具测试和改进建议
|
||||
|
||||
## 📚 学习路径
|
||||
|
||||
### 阶段1:入门(1-2周)
|
||||
|
||||
#### 目标
|
||||
|
||||
了解AI4SE工具的基本概念,掌握1-2个主流工具的基本使用。
|
||||
|
||||
#### 学习内容
|
||||
|
||||
1. **了解AI4SE工具分类**
|
||||
- 阅读[README.md](../README.md)了解工具分类
|
||||
- 了解不同类别的工具及其功能
|
||||
|
||||
2. **选择第一个工具**
|
||||
- 推荐:GitHub Copilot(代码生成类)
|
||||
- 理由:功能完善,上手简单,文档齐全
|
||||
|
||||
3. **安装和配置工具**
|
||||
- 参考[工具安装指南](../tools/code-generation/github-copilot/setup-guide.md)
|
||||
- 完成工具的基本配置
|
||||
|
||||
4. **完成第一个任务**
|
||||
- 参考[Task 1:API开发测试](../test-standards/test-tasks/task1-api.md)
|
||||
- 使用工具完成一个简单的API开发任务
|
||||
|
||||
#### 学习资源
|
||||
|
||||
- [GitHub Copilot官方文档](https://docs.github.com/copilot)
|
||||
- [AI4SE工具概览](../README.md)
|
||||
- [测试任务定义](../test-standards/test-tasks/)
|
||||
|
||||
#### 实践任务
|
||||
|
||||
- ✅ 安装配置GitHub Copilot
|
||||
- ✅ 使用Copilot完成一个简单的Python函数
|
||||
- ✅ 使用Copilot完成一个简单的API接口
|
||||
- ✅ 熟悉Copilot的基本快捷键和命令
|
||||
|
||||
### 阶段2:进阶(2-4周)
|
||||
|
||||
#### 目标
|
||||
|
||||
掌握3-5个不同类别的工具,能够根据场景选择合适的工具。
|
||||
|
||||
#### 学习内容
|
||||
|
||||
1. **深入学习代码生成工具**
|
||||
- 对比GitHub Copilot、CodeLlama、Cursor等工具
|
||||
- 了解不同工具的优缺点和适用场景
|
||||
|
||||
2. **学习其他类别工具**
|
||||
- 调试排障类:Sentry AI、DebugGPT
|
||||
- 测试生成类:TestGPT、Copilot X Test
|
||||
- 文档生成类:AutoDoc、DocGPT
|
||||
|
||||
3. **掌握工具选型**
|
||||
- 阅读[场景选型指南](../comparisons/scenario-based-guide.md)
|
||||
- 了解如何根据场景选择合适的工具
|
||||
|
||||
4. **解决常见问题**
|
||||
- 阅读[常见问题](../resources/common-issues.md)
|
||||
- 学习如何解决工具使用中的问题
|
||||
|
||||
#### 学习资源
|
||||
|
||||
- [工具对比表](../comparisons/tool-comparison-table.md)
|
||||
- [场景选型指南](../comparisons/scenario-based-guide.md)
|
||||
- [各工具测试报告](../tools/)
|
||||
|
||||
#### 实践任务
|
||||
|
||||
- ✅ 测试3个不同类别的工具
|
||||
- ✅ 完成每个工具的至少1个测试任务
|
||||
- ✅ 对比不同工具的优缺点
|
||||
- ✅ 根据场景选择合适的工具
|
||||
|
||||
### 阶段3:高级(4-8周)
|
||||
|
||||
#### 目标
|
||||
|
||||
深入了解工具的工作原理,能够配置和优化工具性能。
|
||||
|
||||
#### 学习内容
|
||||
|
||||
1. **了解工具原理**
|
||||
- 学习大模型在软件工程中的应用
|
||||
- 了解代码生成、调试、测试等工具的实现原理
|
||||
|
||||
2. **本地模型部署**
|
||||
- 学习如何部署本地模型(CodeLlama、Qwen-Coder等)
|
||||
- 了解模型量化和优化技术
|
||||
|
||||
3. **工具配置和优化**
|
||||
- 学习如何配置和优化工具性能
|
||||
- 了解如何调优模型参数
|
||||
|
||||
4. **贡献社区**
|
||||
- 阅读[贡献指南](../CONTRIBUTING.md)
|
||||
- 为仓库贡献工具测试或改进建议
|
||||
|
||||
#### 学习资源
|
||||
|
||||
- [测试标准](../test-standards/test-flow.md)
|
||||
- [各工具技术文档](../tools/)
|
||||
- [开源工具源码](https://github.com/)
|
||||
|
||||
#### 实践任务
|
||||
|
||||
- ✅ 部署一个本地模型(如CodeLlama)
|
||||
- ✅ 配置和优化工具性能
|
||||
- ✅ 完成一个工具的完整测试
|
||||
- ✅ 为仓库贡献一个工具测试报告
|
||||
|
||||
## 🛠️ 工具学习路径
|
||||
|
||||
### 代码生成工具
|
||||
|
||||
#### 入门:GitHub Copilot
|
||||
|
||||
1. **安装配置**(1天)
|
||||
- 注册GitHub账号
|
||||
- 安装VS Code插件
|
||||
- 配置API密钥
|
||||
|
||||
2. **基本使用**(3-5天)
|
||||
- 学习基本快捷键
|
||||
- 完成简单代码生成任务
|
||||
- 熟悉代码补全功能
|
||||
|
||||
3. **进阶使用**(1-2周)
|
||||
- 学习复杂代码生成
|
||||
- 掌握代码审查和优化
|
||||
- 学习多文件代码生成
|
||||
|
||||
#### 进阶:CodeLlama(本地模型)
|
||||
|
||||
1. **环境准备**(1-2天)
|
||||
- 检查硬件要求(GPU、显存)
|
||||
- 安装依赖(CUDA、PyTorch等)
|
||||
|
||||
2. **模型部署**(2-3天)
|
||||
- 下载模型文件
|
||||
- 配置模型服务
|
||||
- 测试模型功能
|
||||
|
||||
3. **集成使用**(1周)
|
||||
- 集成到VS Code
|
||||
- 配置参数优化
|
||||
- 对比云端工具性能
|
||||
|
||||
### 调试排障工具
|
||||
|
||||
#### 入门:Sentry AI
|
||||
|
||||
1. **安装配置**(1天)
|
||||
- 注册Sentry账号
|
||||
- 配置项目集成
|
||||
- 安装SDK
|
||||
|
||||
2. **基本使用**(3-5天)
|
||||
- 学习错误监控
|
||||
- 掌握AI辅助调试
|
||||
- 熟悉性能分析
|
||||
|
||||
3. **进阶使用**(1-2周)
|
||||
- 学习告警配置
|
||||
- 掌握性能优化
|
||||
- 学习团队协作
|
||||
|
||||
### 测试生成工具
|
||||
|
||||
#### 入门:TestGPT
|
||||
|
||||
1. **安装配置**(1天)
|
||||
- 安装工具
|
||||
- 配置API密钥
|
||||
- 集成到项目
|
||||
|
||||
2. **基本使用**(3-5天)
|
||||
- 学习单元测试生成
|
||||
- 掌握集成测试生成
|
||||
- 熟悉测试用例优化
|
||||
|
||||
3. **进阶使用**(1-2周)
|
||||
- 学习测试覆盖率提升
|
||||
- 掌握边界测试生成
|
||||
- 学习测试性能优化
|
||||
|
||||
## 📖 学习资源
|
||||
|
||||
### 官方文档
|
||||
|
||||
- [GitHub Copilot官方文档](https://docs.github.com/copilot)
|
||||
- [CodeLlama官方文档](https://github.com/facebookresearch/codellama)
|
||||
- [Cursor官方文档](https://cursor.sh/docs)
|
||||
|
||||
### 社区资源
|
||||
|
||||
- [AI4SE Survey仓库](../README.md)
|
||||
- [GitHub Discussions](https://github.com/)
|
||||
- [Stack Overflow](https://stackoverflow.com/)
|
||||
|
||||
### 视频教程
|
||||
|
||||
- [GitHub Copilot教程](https://www.youtube.com/)
|
||||
- [CodeLlama部署教程](https://www.youtube.com/)
|
||||
- [AI辅助开发实践](https://www.youtube.com/)
|
||||
|
||||
### 书籍推荐
|
||||
|
||||
- 《AI辅助软件开发实战》
|
||||
- 《大模型在软件工程中的应用》
|
||||
- 《代码生成技术原理与实践》
|
||||
|
||||
## ✅ 学习检查清单
|
||||
|
||||
### 入门阶段
|
||||
|
||||
- [ ] 了解AI4SE工具的基本概念和分类
|
||||
- [ ] 安装配置至少1个工具(GitHub Copilot)
|
||||
- [ ] 完成至少1个测试任务(Task 1:API开发)
|
||||
- [ ] 熟悉工具的基本功能和快捷键
|
||||
|
||||
### 进阶阶段
|
||||
|
||||
- [ ] 掌握3个以上不同类别的工具
|
||||
- [ ] 完成每个工具的至少1个测试任务
|
||||
- [ ] 了解工具选型方法
|
||||
- [ ] 能够解决常见问题
|
||||
|
||||
### 高级阶段
|
||||
|
||||
- [ ] 了解工具的工作原理
|
||||
- [ ] 能够部署本地模型
|
||||
- [ ] 能够配置和优化工具性能
|
||||
- [ ] 为仓库贡献至少1个工具测试报告
|
||||
|
||||
## 🔗 相关链接
|
||||
|
||||
- [工具对比表](../comparisons/tool-comparison-table.md)
|
||||
- [场景选型指南](../comparisons/scenario-based-guide.md)
|
||||
- [常见问题](./common-issues.md)
|
||||
- [贡献指南](../CONTRIBUTING.md)
|
||||
|
||||
---
|
||||
|
||||
**提示**:学习路径是一个渐进的过程,建议根据自己的实际情况调整学习进度。遇到问题时,可以查看[常见问题](./common-issues.md)或提交[Issue](https://github.com/)。
|
||||
|
||||
|
|
@ -1,174 +0,0 @@
|
|||
# 相关资源
|
||||
|
||||
本文档汇总与AI4SE相关的优质开源仓库、工具、文章等资源。
|
||||
|
||||
## 🛠️ 相关开源仓库
|
||||
|
||||
### 代码生成工具
|
||||
|
||||
- **[CodeLlama](https://github.com/facebookresearch/codellama)** - Meta开源的代码生成大模型
|
||||
- **[StarCoder](https://github.com/bigcode-project/starcoder)** - BigCode项目的代码生成模型
|
||||
- **[CodeGeeX](https://github.com/THUDM/CodeGeeX)** - 清华大学的代码生成模型
|
||||
- **[Qwen-Coder](https://github.com/QwenLM/Qwen-Coder)** - 阿里的代码生成模型
|
||||
|
||||
### 调试排障工具
|
||||
|
||||
- **[Sentry](https://github.com/getsentry/sentry)** - 错误监控和调试工具(开源版本)
|
||||
- **[DebugGPT](https://github.com/)** - AI辅助调试工具
|
||||
|
||||
### 测试生成工具
|
||||
|
||||
- **[TestGPT](https://github.com/)** - AI测试生成工具
|
||||
- **[LangChain Test Builder](https://github.com/)** - 基于LangChain的测试生成工具
|
||||
|
||||
### 代码审查工具
|
||||
|
||||
- **[SonarQube](https://github.com/SonarSource/sonarqube)** - 代码质量检查工具(社区版)
|
||||
- **[CodeQL](https://github.com/github/codeql)** - GitHub的代码分析工具
|
||||
|
||||
### 文档生成工具
|
||||
|
||||
- **[AutoDoc](https://github.com/)** - AI文档生成工具
|
||||
- **[DocGPT](https://github.com/)** - 基于GPT的文档生成工具
|
||||
|
||||
### 全流程集成工具
|
||||
|
||||
- **[Cursor](https://github.com/getcursor/cursor)** - 全流程AI开发工具(部分开源)
|
||||
- **[CodeLens](https://github.com/)** - 全流程AI开发平台
|
||||
|
||||
## 📚 相关文章和博客
|
||||
|
||||
### 技术文章
|
||||
|
||||
- **《AI辅助软件开发现状与趋势》** - 分析AI4SE工具的发展现状和趋势
|
||||
- **《大模型在软件工程中的应用》** - 介绍大模型在软件工程各阶段的应用
|
||||
- **《代码生成工具对比分析》** - 对比主流代码生成工具的优缺点
|
||||
|
||||
### 实践指南
|
||||
|
||||
- **《如何使用GitHub Copilot提高开发效率》** - GitHub Copilot使用实践
|
||||
- **《本地部署CodeLlama指南》** - CodeLlama本地部署教程
|
||||
- **《AI辅助代码审查实践》** - 使用AI工具进行代码审查的经验
|
||||
|
||||
### 学术论文
|
||||
|
||||
- **《Code Generation with Large Language Models》** - 大模型代码生成技术论文
|
||||
- **《AI-assisted Software Engineering》** - AI辅助软件工程综述
|
||||
- **《Evaluating Code Generation Tools》** - 代码生成工具评估方法论文
|
||||
|
||||
## 🎓 学习资源
|
||||
|
||||
### 在线课程
|
||||
|
||||
- **《AI辅助软件开发》** - 在线课程,介绍AI4SE工具的使用
|
||||
- **《大模型应用实践》** - 大模型在软件开发中的应用实践
|
||||
- **《代码生成技术》** - 代码生成技术的原理和实践
|
||||
|
||||
### 视频教程
|
||||
|
||||
- **GitHub Copilot教程** - YouTube视频教程
|
||||
- **CodeLlama部署教程** - B站视频教程
|
||||
- **AI辅助开发实践** - 在线视频教程
|
||||
|
||||
### 书籍推荐
|
||||
|
||||
- **《AI辅助软件开发实战》** - 介绍AI4SE工具的使用实践
|
||||
- **《大模型在软件工程中的应用》** - 大模型在软件工程中的应用研究
|
||||
- **《代码生成技术原理与实践》** - 代码生成技术的原理和实践
|
||||
|
||||
## 🔗 相关网站
|
||||
|
||||
### 官方文档
|
||||
|
||||
- **[GitHub Copilot Docs](https://docs.github.com/copilot)** - GitHub Copilot官方文档
|
||||
- **[CodeLlama Docs](https://github.com/facebookresearch/codellama)** - CodeLlama官方文档
|
||||
- **[Cursor Docs](https://cursor.sh/docs)** - Cursor官方文档
|
||||
|
||||
### 社区论坛
|
||||
|
||||
- **[GitHub Discussions](https://github.com/)** - GitHub社区讨论
|
||||
- **[Stack Overflow](https://stackoverflow.com/)** - 技术问答社区
|
||||
- **[Reddit r/ai4se](https://www.reddit.com/r/ai4se)** - AI4SE讨论社区
|
||||
|
||||
### 评测网站
|
||||
|
||||
- **[AI Code Tools Comparison](https://example.com)** - AI代码工具对比网站
|
||||
- **[Code Generation Benchmarks](https://example.com)** - 代码生成工具基准测试
|
||||
|
||||
## 📊 数据集和基准测试
|
||||
|
||||
### 代码生成基准测试
|
||||
|
||||
- **[HumanEval](https://github.com/openai/human-eval)** - OpenAI的代码生成基准测试
|
||||
- **[MBPP](https://github.com/google-research/google-research/tree/master/mbpp)** - Google的代码生成基准测试
|
||||
- **[CodeXGLUE](https://github.com/microsoft/CodeXGLUE)** - 微软的代码理解和生成基准测试
|
||||
|
||||
### 数据集
|
||||
|
||||
- **[The Stack](https://huggingface.co/datasets/bigcode/the-stack)** - 代码数据集,用于训练代码生成模型
|
||||
- **[CodeSearchNet](https://github.com/github/CodeSearchNet)** - 代码搜索数据集
|
||||
- **[BigCode](https://www.bigcode-project.org/)** - 大规模代码数据集项目
|
||||
|
||||
## 🛠️ 开发工具
|
||||
|
||||
### 模型训练
|
||||
|
||||
- **[Transformers](https://github.com/huggingface/transformers)** - Hugging Face的Transformer库
|
||||
- **[PEFT](https://github.com/huggingface/peft)** - 参数高效微调库
|
||||
- **[vLLM](https://github.com/vllm-project/vllm)** - 高效的LLM推理库
|
||||
|
||||
### 工具开发
|
||||
|
||||
- **[LangChain](https://github.com/langchain-ai/langchain)** - LLM应用开发框架
|
||||
- **[LlamaIndex](https://github.com/run-llama/llama_index)** - LLM数据框架
|
||||
- **[Semantic Kernel](https://github.com/microsoft/semantic-kernel)** - 微软的AI应用开发框架
|
||||
|
||||
### 评估工具
|
||||
|
||||
- **[CodeBLEU](https://github.com/microsoft/CodeBLEU)** - 代码生成评估工具
|
||||
- **[CodeT5](https://github.com/salesforce/CodeT5)** - 代码理解和生成模型
|
||||
- **[EvalPlus](https://github.com/evalplus/evalplus)** - 代码生成评估框架
|
||||
|
||||
## 📈 行业报告
|
||||
|
||||
### 市场分析
|
||||
|
||||
- **《AI辅助软件开发市场报告》** - AI4SE工具市场分析
|
||||
- **《代码生成工具用户调研》** - 代码生成工具用户使用情况调研
|
||||
- **《AI4SE工具发展趋势报告》** - AI4SE工具发展趋势分析
|
||||
|
||||
### 技术报告
|
||||
|
||||
- **《大模型代码生成技术报告》** - 大模型代码生成技术分析
|
||||
- **《AI辅助软件工程研究报告》** - AI辅助软件工程研究综述
|
||||
- **《代码生成工具评估报告》** - 代码生成工具评估方法报告
|
||||
|
||||
## 🤝 贡献资源
|
||||
|
||||
如果您有相关的优质资源推荐,欢迎:
|
||||
|
||||
1. **提交Issue**:在GitHub仓库提交Issue,推荐资源
|
||||
2. **提交PR**:直接提交PR,添加资源链接
|
||||
3. **参与讨论**:在GitHub Discussions分享资源
|
||||
|
||||
## 📝 资源分类
|
||||
|
||||
### 按类型分类
|
||||
|
||||
- **开源仓库**:代码生成、调试、测试、审查等工具
|
||||
- **学习资源**:课程、教程、书籍等
|
||||
- **数据集**:代码数据集、基准测试等
|
||||
- **开发工具**:模型训练、工具开发、评估工具等
|
||||
- **行业报告**:市场分析、技术报告等
|
||||
|
||||
### 按用途分类
|
||||
|
||||
- **学习**:帮助学习AI4SE工具的资源
|
||||
- **开发**:用于开发AI4SE工具的资源
|
||||
- **评估**:用于评估AI4SE工具的资源
|
||||
- **研究**:用于研究AI4SE的资源
|
||||
|
||||
---
|
||||
|
||||
**提示**:资源列表会持续更新,建议定期查看本文档获取最新资源。如有资源推荐,欢迎提交Issue或PR。
|
||||
|
||||
|
|
@ -1,306 +0,0 @@
|
|||
# 趋势分析
|
||||
|
||||
本文档分析AI4SE工具的发展趋势,定期更新。
|
||||
|
||||
## 📊 更新说明
|
||||
|
||||
- **更新频率**:每季度更新一次
|
||||
- **更新时间**:2025年1月(首次创建)
|
||||
- **数据来源**:工具测试结果、社区反馈、行业报告
|
||||
|
||||
## 🚀 当前趋势(2025 Q1)
|
||||
|
||||
### 1. 本地化部署趋势增强
|
||||
|
||||
**现象**:
|
||||
- 越来越多的工具支持本地部署
|
||||
- 开源本地模型数量增加
|
||||
- 本地模型性能持续提升
|
||||
|
||||
**原因**:
|
||||
- 数据安全和隐私保护需求
|
||||
- 企业合规要求(GDPR、SOC2等)
|
||||
- 硬件成本下降(GPU价格降低)
|
||||
|
||||
**影响**:
|
||||
- 用户对数据控制能力增强
|
||||
- 降低了云端API调用成本
|
||||
- 推动了硬件市场发展
|
||||
|
||||
**预测**:
|
||||
- 未来1-2年,本地化工具将更加成熟
|
||||
- 模型量化技术将降低硬件要求
|
||||
- 更多企业将采用本地部署方案
|
||||
|
||||
### 2. 多模态输入支持成为趋势
|
||||
|
||||
**现象**:
|
||||
- 工具开始支持代码+自然语言+图像的组合输入
|
||||
- 多模态大模型(如GPT-4 Vision)的应用
|
||||
- 代码可视化工具增多
|
||||
|
||||
**原因**:
|
||||
- 大模型技术发展(多模态模型成熟)
|
||||
- 用户体验需求(更直观的交互方式)
|
||||
- 场景需求(架构图、流程图等)
|
||||
|
||||
**影响**:
|
||||
- 提升了工具的易用性
|
||||
- 扩展了工具的应用场景
|
||||
- 降低了使用门槛
|
||||
|
||||
**预测**:
|
||||
- 未来工具将更多支持多模态输入
|
||||
- 代码生成将结合图像理解能力
|
||||
- 架构设计工具将更加智能
|
||||
|
||||
### 3. 专业化工具增多
|
||||
|
||||
**现象**:
|
||||
- 针对特定场景的专业工具增多(如前端、后端、DevOps)
|
||||
- 特定技术栈的深度优化工具
|
||||
- 垂直领域的AI辅助工具
|
||||
|
||||
**原因**:
|
||||
- 通用工具难以满足所有需求
|
||||
- 专业化工具可以提供更好的体验
|
||||
- 市场细分需求增加
|
||||
|
||||
**影响**:
|
||||
- 用户可以选择更专业的工具
|
||||
- 提高了特定场景的使用体验
|
||||
- 推动了工具生态的多样性
|
||||
|
||||
**预测**:
|
||||
- 未来将出现更多专业化工具
|
||||
- 工具生态将更加丰富
|
||||
- 用户需要掌握多个工具
|
||||
|
||||
### 4. 工具集成化程度提升
|
||||
|
||||
**现象**:
|
||||
- 全流程集成工具增多(如Cursor、CodeLens)
|
||||
- 工具之间的集成和互操作
|
||||
- 一站式开发平台出现
|
||||
|
||||
**原因**:
|
||||
- 用户希望统一工具使用体验
|
||||
- 减少工具切换成本
|
||||
- 提高开发效率
|
||||
|
||||
**影响**:
|
||||
- 简化了工具使用流程
|
||||
- 提高了开发效率
|
||||
- 降低了学习成本
|
||||
|
||||
**预测**:
|
||||
- 未来工具将更加集成化
|
||||
- 一站式开发平台将成为主流
|
||||
- 工具之间的互操作性将增强
|
||||
|
||||
### 5. 开源工具社区活跃度提升
|
||||
|
||||
**现象**:
|
||||
- 开源AI4SE工具数量增加
|
||||
- 社区贡献活跃度提升
|
||||
- 开源工具质量持续改进
|
||||
|
||||
**原因**:
|
||||
- 开源社区发展成熟
|
||||
- 开发者对开源工具的认可
|
||||
- 大模型开源趋势
|
||||
|
||||
**影响**:
|
||||
- 降低了工具使用成本
|
||||
- 促进了技术创新
|
||||
- 推动了行业标准化
|
||||
|
||||
**预测**:
|
||||
- 开源工具将成为主流
|
||||
- 社区生态将更加完善
|
||||
- 开源工具质量将持续提升
|
||||
|
||||
## 📈 技术趋势
|
||||
|
||||
### 1. 模型技术发展
|
||||
|
||||
#### 模型规模
|
||||
|
||||
- **当前**:7B-15B参数的模型为主流
|
||||
- **趋势**:模型规模持续增长(70B+参数)
|
||||
- **影响**:提供更强的能力,但需要更多硬件资源
|
||||
|
||||
#### 模型量化
|
||||
|
||||
- **当前**:4-bit、8-bit量化技术成熟
|
||||
- **趋势**:量化技术持续优化,降低硬件要求
|
||||
- **影响**:使更多用户可以使用本地模型
|
||||
|
||||
#### 模型微调
|
||||
|
||||
- **当前**:支持模型微调以适应特定场景
|
||||
- **趋势**:微调技术更加成熟,成本降低
|
||||
- **影响**:工具可以更好地适应特定需求
|
||||
|
||||
### 2. 工具能力提升
|
||||
|
||||
#### 代码生成质量
|
||||
|
||||
- **当前**:基础代码生成准确率约80-90%
|
||||
- **趋势**:代码生成质量持续提升,准确率有望达到95%+
|
||||
- **影响**:减少人工调整时间,提高开发效率
|
||||
|
||||
#### 上下文理解能力
|
||||
|
||||
- **当前**:工具可以理解简单的上下文
|
||||
- **趋势**:上下文理解能力增强,支持更大规模的代码库
|
||||
- **影响**:生成代码更加符合项目规范
|
||||
|
||||
#### 多文件协作能力
|
||||
|
||||
- **当前**:工具主要支持单文件生成
|
||||
- **趋势**:支持多文件协作生成
|
||||
- **影响**:可以生成完整的项目结构
|
||||
|
||||
### 3. 用户体验改进
|
||||
|
||||
#### 交互方式
|
||||
|
||||
- **当前**:主要支持文本输入
|
||||
- **趋势**:支持多模态输入(代码+自然语言+图像)
|
||||
- **影响**:提升用户体验,降低使用门槛
|
||||
|
||||
#### 响应速度
|
||||
|
||||
- **当前**:云端工具响应时间5-20秒
|
||||
- **趋势**:响应速度持续优化,有望降至1-5秒
|
||||
- **影响**:提升开发效率,改善用户体验
|
||||
|
||||
#### 智能化程度
|
||||
|
||||
- **当前**:需要用户明确提示
|
||||
- **趋势**:工具更加智能,可以自动理解意图
|
||||
- **影响**:减少提示词编写,提高使用便捷性
|
||||
|
||||
## 🎯 应用场景趋势
|
||||
|
||||
### 1. 代码生成
|
||||
|
||||
**当前状态**:
|
||||
- 代码生成是最成熟的应用场景
|
||||
- 工具覆盖主要编程语言和框架
|
||||
|
||||
**发展趋势**:
|
||||
- 代码生成质量持续提升
|
||||
- 支持更多编程语言和框架
|
||||
- 生成代码更符合项目规范
|
||||
|
||||
### 2. 调试排障
|
||||
|
||||
**当前状态**:
|
||||
- 工具可以辅助定位常见bug
|
||||
- 修复建议准确率有待提升
|
||||
|
||||
**发展趋势**:
|
||||
- 调试能力持续增强
|
||||
- 支持更复杂的bug定位
|
||||
- 修复建议准确率提升
|
||||
|
||||
### 3. 测试生成
|
||||
|
||||
**当前状态**:
|
||||
- 工具可以生成基础测试用例
|
||||
- 测试覆盖率有待提升
|
||||
|
||||
**发展趋势**:
|
||||
- 测试生成质量提升
|
||||
- 支持更复杂的测试场景
|
||||
- 测试覆盖率提升
|
||||
|
||||
### 4. 代码审查
|
||||
|
||||
**当前状态**:
|
||||
- 工具可以检测常见问题
|
||||
- 深度分析能力有待提升
|
||||
|
||||
**发展趋势**:
|
||||
- 代码审查能力增强
|
||||
- 支持更复杂的问题检测
|
||||
- 提供更详细的修复建议
|
||||
|
||||
### 5. 架构设计
|
||||
|
||||
**当前状态**:
|
||||
- 工具可以生成基础架构设计
|
||||
- 复杂架构设计能力有限
|
||||
|
||||
**发展趋势**:
|
||||
- 架构设计能力提升
|
||||
- 支持更复杂的架构设计
|
||||
- 提供更详细的架构建议
|
||||
|
||||
## 📊 市场趋势
|
||||
|
||||
### 1. 工具类型分布
|
||||
|
||||
| 工具类型 | 当前占比 | 趋势 |
|
||||
|---------|---------|------|
|
||||
| 代码生成 | 40% | 稳定 |
|
||||
| 全流程集成 | 25% | 上升 |
|
||||
| 本地模型 | 20% | 上升 |
|
||||
| 专业化工具 | 15% | 上升 |
|
||||
|
||||
### 2. 开源vs闭源
|
||||
|
||||
| 工具类型 | 当前占比 | 趋势 |
|
||||
|---------|---------|------|
|
||||
| 开源工具 | 60% | 上升 |
|
||||
| 闭源工具 | 40% | 稳定 |
|
||||
|
||||
### 3. 价格趋势
|
||||
|
||||
- **免费工具**:数量增加,功能持续完善
|
||||
- **付费工具**:价格趋于稳定,功能持续增强
|
||||
- **企业版**:价格较高,但功能更完善
|
||||
|
||||
## 🔮 未来预测(1-2年)
|
||||
|
||||
### 短期预测(6-12个月)
|
||||
|
||||
1. **本地化工具成熟**
|
||||
- 更多工具支持本地部署
|
||||
- 模型量化技术优化,硬件要求降低
|
||||
|
||||
2. **多模态输入普及**
|
||||
- 主流工具支持多模态输入
|
||||
- 代码+图像组合输入成为标准
|
||||
|
||||
3. **专业化工具增多**
|
||||
- 针对特定场景的专业工具增多
|
||||
- 工具生态更加丰富
|
||||
|
||||
### 长期预测(1-2年)
|
||||
|
||||
1. **一站式开发平台**
|
||||
- 全流程集成工具成为主流
|
||||
- 工具之间的互操作性增强
|
||||
|
||||
2. **智能化程度提升**
|
||||
- 工具更加智能,减少人工干预
|
||||
- 自动理解意图,生成高质量代码
|
||||
|
||||
3. **行业标准化**
|
||||
- AI4SE工具标准和规范建立
|
||||
- 工具评估和认证体系形成
|
||||
|
||||
## 📚 相关资源
|
||||
|
||||
- [工具对比表](../comparisons/tool-comparison-table.md)
|
||||
- [场景选型指南](../comparisons/scenario-based-guide.md)
|
||||
- [工具测试报告](../tools/)
|
||||
- [更新日志](../CHANGELOG.md)
|
||||
|
||||
---
|
||||
|
||||
**提示**:趋势分析基于当前数据和预测,实际发展可能有所不同。建议定期查看本文档获取最新趋势分析。
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
API启动脚本
|
||||
"""
|
||||
import uvicorn
|
||||
|
||||
if __name__ == "__main__":
|
||||
uvicorn.run(
|
||||
"api.main:app",
|
||||
host="0.0.0.0",
|
||||
port=8000,
|
||||
reload=True, # 开发模式下自动重载
|
||||
log_level="info",
|
||||
)
|
||||
|
||||
|
|
@ -1,291 +0,0 @@
|
|||
# 依赖清单
|
||||
|
||||
本文档定义测试环境的依赖版本要求。
|
||||
|
||||
## 🐍 Python环境
|
||||
|
||||
### Python版本
|
||||
|
||||
- **Python**:3.10.0 - 3.12.x
|
||||
|
||||
### Python依赖
|
||||
|
||||
#### Web框架
|
||||
|
||||
- **FastAPI**:0.103.1+
|
||||
- **Flask**:3.0.0+(如适用)
|
||||
- **Django**:5.0.0+(如适用)
|
||||
|
||||
#### 数据库
|
||||
|
||||
- **SQLAlchemy**:2.0.23+
|
||||
- **pymongo**:4.6.0+(如适用)
|
||||
- **psycopg2-binary**:2.9.9+(如适用)
|
||||
|
||||
#### 认证和加密
|
||||
|
||||
- **bcrypt**:4.0.1+
|
||||
- **python-jose[cryptography]**:3.3.0+
|
||||
- **passlib**:1.7.4+(如适用)
|
||||
|
||||
#### 测试框架
|
||||
|
||||
- **pytest**:7.4.3+
|
||||
- **pytest-asyncio**:0.21.1+(如适用)
|
||||
- **pytest-cov**:4.1.0+(如适用)
|
||||
|
||||
#### 代码质量
|
||||
|
||||
- **black**:23.12.1+
|
||||
- **pylint**:3.0.3+
|
||||
- **flake8**:7.0.0+
|
||||
- **mypy**:1.7.1+(如适用)
|
||||
|
||||
#### 其他
|
||||
|
||||
- **uvicorn[standard]**:0.24.0+
|
||||
- **pydantic**:2.4.2+
|
||||
- **pydantic[email]**:2.4.2+
|
||||
- **httpx**:0.25.2+(如适用)
|
||||
|
||||
### 依赖清单示例(requirements.txt)
|
||||
|
||||
```txt
|
||||
# Web框架
|
||||
fastapi==0.103.1
|
||||
uvicorn[standard]==0.24.0
|
||||
|
||||
# 数据验证
|
||||
pydantic==2.4.2
|
||||
pydantic[email]==2.4.2
|
||||
|
||||
# 数据库
|
||||
sqlalchemy==2.0.23
|
||||
|
||||
# 认证和加密
|
||||
bcrypt==4.0.1
|
||||
python-jose[cryptography]==3.3.0
|
||||
|
||||
# 测试框架
|
||||
pytest==7.4.3
|
||||
pytest-asyncio==0.21.1
|
||||
pytest-cov==4.1.0
|
||||
|
||||
# 代码质量
|
||||
black==23.12.1
|
||||
pylint==3.0.3
|
||||
flake8==7.0.0
|
||||
|
||||
# 其他
|
||||
httpx==0.25.2
|
||||
```
|
||||
|
||||
## 🟢 Node.js环境
|
||||
|
||||
### Node.js版本
|
||||
|
||||
- **Node.js**:18.17.0 - 20.x.x
|
||||
|
||||
### npm/yarn版本
|
||||
|
||||
- **npm**:9.6.7+(随Node.js安装)
|
||||
- **yarn**:1.22.19+(可选)
|
||||
|
||||
### JavaScript/TypeScript依赖
|
||||
|
||||
#### 前端框架
|
||||
|
||||
- **React**:18.2.0+
|
||||
- **Vue**:3.4.0+(如适用)
|
||||
- **Angular**:17.0.0+(如适用)
|
||||
|
||||
#### 构建工具
|
||||
|
||||
- **Vite**:5.0.0+(如适用)
|
||||
- **Create React App**:5.0.1+(如适用)
|
||||
- **Next.js**:14.0.0+(如适用)
|
||||
|
||||
#### 测试框架
|
||||
|
||||
- **Jest**:29.7.0+
|
||||
- **React Testing Library**:14.1.2+
|
||||
- **Vitest**:1.0.4+(如适用)
|
||||
|
||||
#### 代码质量
|
||||
|
||||
- **ESLint**:8.54.0+
|
||||
- **Prettier**:3.1.0+
|
||||
- **TypeScript**:5.3.2+(如适用)
|
||||
|
||||
#### 其他
|
||||
|
||||
- **axios**:1.6.2+
|
||||
- **react-router-dom**:6.20.0+(如适用)
|
||||
|
||||
### 依赖清单示例(package.json)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "test-project",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-router-dom": "^6.20.0",
|
||||
"axios": "^1.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react": "^18.2.42",
|
||||
"@types/react-dom": "^18.2.17",
|
||||
"@typescript-eslint/eslint-plugin": "^6.13.1",
|
||||
"@typescript-eslint/parser": "^6.13.1",
|
||||
"eslint": "^8.54.0",
|
||||
"eslint-plugin-react": "^7.33.2",
|
||||
"prettier": "^3.1.0",
|
||||
"typescript": "^5.3.2",
|
||||
"vite": "^5.0.0",
|
||||
"vitest": "^1.0.4",
|
||||
"@testing-library/react": "^14.1.2"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## ☕ Java环境
|
||||
|
||||
### Java版本
|
||||
|
||||
- **Java**:17.0.0+ (OpenJDK 或 Oracle JDK)
|
||||
|
||||
### 构建工具
|
||||
|
||||
- **Maven**:3.9.5+ 或 **Gradle**:8.5+
|
||||
|
||||
### Java依赖
|
||||
|
||||
#### Web框架
|
||||
|
||||
- **Spring Boot**:3.2.0+
|
||||
- **Spring Framework**:6.1.0+(如适用)
|
||||
|
||||
#### 数据库
|
||||
|
||||
- **Spring Data JPA**:3.2.0+
|
||||
- **H2 Database**:2.2.224+(测试用)
|
||||
- **PostgreSQL Driver**:42.7.1+(如适用)
|
||||
|
||||
#### 测试框架
|
||||
|
||||
- **JUnit**:5.10.0+
|
||||
- **Mockito**:5.7.0+
|
||||
- **Spring Boot Test**:3.2.0+
|
||||
|
||||
#### 其他
|
||||
|
||||
- **Lombok**:1.18.30+(如适用)
|
||||
|
||||
### 依赖清单示例(pom.xml)
|
||||
|
||||
```xml
|
||||
<properties>
|
||||
<java.version>17</java.version>
|
||||
<spring-boot.version>3.2.0</spring-boot.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
```
|
||||
|
||||
## 🐳 Docker环境(可选)
|
||||
|
||||
### Docker版本
|
||||
|
||||
- **Docker**:24.0.0+
|
||||
- **Docker Compose**:2.23.0+
|
||||
|
||||
### Docker镜像
|
||||
|
||||
- **Python**:python:3.10-slim
|
||||
- **Node.js**:node:18-alpine
|
||||
- **Java**:openjdk:17-slim
|
||||
|
||||
## 📦 依赖管理建议
|
||||
|
||||
### Python
|
||||
|
||||
使用虚拟环境:
|
||||
|
||||
```bash
|
||||
python -m venv venv
|
||||
source venv/bin/activate # macOS/Linux
|
||||
# 或
|
||||
venv\Scripts\activate # Windows
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### Node.js
|
||||
|
||||
使用npm或yarn:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
# 或
|
||||
yarn install
|
||||
```
|
||||
|
||||
### Java
|
||||
|
||||
使用Maven或Gradle:
|
||||
|
||||
```bash
|
||||
mvn clean install
|
||||
# 或
|
||||
./gradlew build
|
||||
```
|
||||
|
||||
## ✅ 环境验证
|
||||
|
||||
测试前,验证环境是否正确配置:
|
||||
|
||||
### Python
|
||||
|
||||
```bash
|
||||
python --version # 应该显示 3.10.x - 3.12.x
|
||||
pip list # 查看已安装包
|
||||
```
|
||||
|
||||
### Node.js
|
||||
|
||||
```bash
|
||||
node --version # 应该显示 v18.17.0+
|
||||
npm --version # 应该显示 9.6.7+
|
||||
```
|
||||
|
||||
### Java
|
||||
|
||||
```bash
|
||||
java -version # 应该显示 openjdk version "17"
|
||||
mvn --version # 应该显示 Apache Maven 3.9.5+
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**注意**:所有测试应该在相同版本的依赖环境下进行,以确保测试结果的可比性。如有依赖更新,应及时更新本文档。
|
||||
|
||||
|
|
@ -1,173 +0,0 @@
|
|||
# 硬件要求
|
||||
|
||||
本文档定义测试环境的硬件配置要求。
|
||||
|
||||
## 💻 基础硬件要求
|
||||
|
||||
### CPU
|
||||
|
||||
- **最低要求**:Intel Core i5 或 AMD Ryzen 5(4核心)
|
||||
- **推荐配置**:Intel Core i7 或 AMD Ryzen 7(8核心)
|
||||
- **架构**:x64 或 ARM64(Apple Silicon)
|
||||
|
||||
### 内存(RAM)
|
||||
|
||||
- **最低要求**:8GB
|
||||
- **推荐配置**:16GB+
|
||||
- **本地模型部署**:32GB+(取决于模型大小)
|
||||
|
||||
### 存储
|
||||
|
||||
- **最低要求**:50GB 可用空间
|
||||
- **推荐配置**:100GB+ 可用空间(SSD推荐)
|
||||
- **本地模型部署**:200GB+(模型文件较大)
|
||||
|
||||
### 网络
|
||||
|
||||
- **云端工具**:稳定的互联网连接(≥10 Mbps)
|
||||
- **本地工具**:无特殊要求
|
||||
|
||||
## 🚀 本地模型部署要求
|
||||
|
||||
### 显存(GPU)
|
||||
|
||||
#### 小模型(≤7B参数)
|
||||
|
||||
- **最低显存**:8GB VRAM
|
||||
- **推荐显存**:16GB VRAM
|
||||
- **推荐GPU**:NVIDIA RTX 3060 或更高
|
||||
|
||||
#### 中等模型(7B-13B参数)
|
||||
|
||||
- **最低显存**:16GB VRAM
|
||||
- **推荐显存**:24GB VRAM
|
||||
- **推荐GPU**:NVIDIA RTX 3090/4090 或更高
|
||||
|
||||
#### 大模型(>13B参数)
|
||||
|
||||
- **最低显存**:24GB VRAM
|
||||
- **推荐显存**:32GB+ VRAM
|
||||
- **推荐GPU**:NVIDIA A100 或更高
|
||||
|
||||
### CPU推理(无GPU)
|
||||
|
||||
如果使用CPU推理,需要更强的CPU和内存:
|
||||
|
||||
- **CPU**:Intel Core i9 或 AMD Ryzen 9(16核心+)
|
||||
- **内存**:32GB+ RAM
|
||||
- **性能**:推理速度较慢(不推荐用于实际测试)
|
||||
|
||||
## 📊 工具类型硬件需求
|
||||
|
||||
### 代码生成工具(云端)
|
||||
|
||||
- **CPU**:无特殊要求(基础配置即可)
|
||||
- **内存**:8GB RAM
|
||||
- **网络**:稳定的互联网连接
|
||||
|
||||
### 代码生成工具(本地)
|
||||
|
||||
- **CPU**:Intel Core i7 或 AMD Ryzen 7(8核心+)
|
||||
- **内存**:16GB+ RAM
|
||||
- **显存**:取决于模型大小(见上文)
|
||||
- **存储**:50GB+ 可用空间
|
||||
|
||||
### 代码分析工具
|
||||
|
||||
- **CPU**:Intel Core i5 或 AMD Ryzen 5(4核心+)
|
||||
- **内存**:8GB+ RAM
|
||||
- **存储**:20GB+ 可用空间
|
||||
|
||||
### 测试工具
|
||||
|
||||
- **CPU**:Intel Core i5 或 AMD Ryzen 5(4核心+)
|
||||
- **内存**:8GB+ RAM
|
||||
- **存储**:20GB+ 可用空间
|
||||
|
||||
## 🖥️ 测试环境配置
|
||||
|
||||
### 标准测试环境
|
||||
|
||||
用于大多数云端工具的测试:
|
||||
|
||||
- **CPU**:Intel Core i7 或 AMD Ryzen 7(8核心)
|
||||
- **内存**:16GB RAM
|
||||
- **存储**:100GB SSD
|
||||
- **网络**:稳定的互联网连接
|
||||
|
||||
### 本地模型测试环境
|
||||
|
||||
用于本地部署工具的测试:
|
||||
|
||||
- **CPU**:Intel Core i9 或 AMD Ryzen 9(16核心+)
|
||||
- **内存**:32GB RAM
|
||||
- **显存**:24GB+ VRAM(NVIDIA GPU)
|
||||
- **存储**:500GB+ SSD
|
||||
- **网络**:无特殊要求
|
||||
|
||||
## ⚠️ 性能考虑
|
||||
|
||||
### 响应时间
|
||||
|
||||
- **云端工具**:网络延迟可能影响响应时间
|
||||
- **本地工具**:硬件配置影响响应时间
|
||||
|
||||
### 并发能力
|
||||
|
||||
- **CPU核心数**:影响并发处理能力
|
||||
- **内存大小**:影响可同时运行的任务数
|
||||
- **显存大小**:影响模型推理并发数
|
||||
|
||||
### 成本考虑
|
||||
|
||||
- **云端工具**:需要API调用费用
|
||||
- **本地工具**:需要硬件投资(GPU较昂贵)
|
||||
|
||||
## 📝 硬件记录要求
|
||||
|
||||
测试报告中应记录:
|
||||
|
||||
- **CPU型号和核心数**
|
||||
- **内存大小**
|
||||
- **显存大小(如适用)**
|
||||
- **存储类型和大小**
|
||||
- **网络速度(如适用)**
|
||||
|
||||
## ✅ 硬件验证
|
||||
|
||||
测试前,验证硬件配置:
|
||||
|
||||
### 系统信息
|
||||
|
||||
#### macOS
|
||||
|
||||
```bash
|
||||
system_profiler SPHardwareDataType
|
||||
```
|
||||
|
||||
#### Windows
|
||||
|
||||
```powershell
|
||||
Get-ComputerInfo | Select-Object CsName, CsProcessors, CsTotalPhysicalMemory
|
||||
```
|
||||
|
||||
#### Linux
|
||||
|
||||
```bash
|
||||
lscpu
|
||||
free -h
|
||||
nvidia-smi # 如果有NVIDIA GPU
|
||||
```
|
||||
|
||||
### 性能基准
|
||||
|
||||
可以使用以下工具进行性能基准测试:
|
||||
|
||||
- **CPU**:Geekbench、Cinebench
|
||||
- **GPU**:CUDA-Z(NVIDIA GPU)、nvidia-smi
|
||||
- **存储**:CrystalDiskMark、BlackMagic Disk Speed Test
|
||||
|
||||
---
|
||||
|
||||
**注意**:硬件配置会影响测试结果,特别是响应时间和并发能力。所有测试应在相同或相似的硬件配置下进行,以确保测试结果的可比性。
|
||||
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
# IDE配置
|
||||
|
||||
本文档定义测试环境的IDE配置要求。
|
||||
|
||||
## 📋 IDE选择
|
||||
|
||||
### 主IDE:Visual Studio Code
|
||||
|
||||
**版本要求**:1.85.0+
|
||||
|
||||
### 其他IDE(可选)
|
||||
|
||||
- **IntelliJ IDEA**:2023.3+(适用于Java项目)
|
||||
- **PyCharm**:2023.3+(适用于Python项目)
|
||||
- **WebStorm**:2023.3+(适用于前端项目)
|
||||
|
||||
## 🔧 VS Code配置
|
||||
|
||||
### 必需插件
|
||||
|
||||
#### Python开发
|
||||
|
||||
- **Python**:ms-python.python(2023.22.0+)
|
||||
- **Pylance**:ms-python.vscode-pylance(2023.12.0+)
|
||||
|
||||
#### JavaScript/TypeScript开发
|
||||
|
||||
- **ESLint**:dbaeumer.vscode-eslint(2.4.0+)
|
||||
- **Prettier**:esbenp.prettier-vscode(10.1.0+)
|
||||
|
||||
#### 通用插件
|
||||
|
||||
- **GitLens**:eamodio.gitlens(14.5.0+)
|
||||
- **Markdown All in One**:yzhang.markdown-all-in-one(3.5.1+)
|
||||
|
||||
### 配置文件
|
||||
|
||||
#### settings.json
|
||||
|
||||
```json
|
||||
{
|
||||
"editor.formatOnSave": true,
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": true,
|
||||
"source.organizeImports": true
|
||||
},
|
||||
"python.formatting.provider": "black",
|
||||
"python.linting.enabled": true,
|
||||
"python.linting.pylintEnabled": true,
|
||||
"[python]": {
|
||||
"editor.defaultFormatter": "ms-python.black-formatter",
|
||||
"editor.formatOnSave": true
|
||||
},
|
||||
"[javascript]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"[typescript]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 🖥️ 操作系统要求
|
||||
|
||||
### macOS
|
||||
|
||||
- **版本**:macOS 14.0 (Sonoma)+
|
||||
- **架构**:Apple Silicon (M1/M2/M3) 或 Intel
|
||||
|
||||
### Windows
|
||||
|
||||
- **版本**:Windows 11 或 Windows 10 (22H2+)
|
||||
- **架构**:x64
|
||||
|
||||
### Linux
|
||||
|
||||
- **发行版**:Ubuntu 22.04+ 或 Debian 12+
|
||||
- **架构**:x64
|
||||
|
||||
## 📝 配置文件位置
|
||||
|
||||
所有IDE配置文件应该统一管理:
|
||||
|
||||
```
|
||||
AI4SE-survey/
|
||||
└── test-standards/
|
||||
└── environment/
|
||||
├── ide-config.md
|
||||
├── vscode-settings.json
|
||||
├── vscode-extensions.json
|
||||
└── ...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**注意**:确保所有测试在同一IDE版本和插件版本下进行,以保证测试结果的可比性。
|
||||
|
||||
|
|
@ -1,229 +0,0 @@
|
|||
# 效率指标定义
|
||||
|
||||
本文档定义AI4SE工具测试中的效率评估指标。
|
||||
|
||||
## 📊 指标概述
|
||||
|
||||
效率指标主要评估工具在**提升开发效率**方面的表现,包括:
|
||||
|
||||
- 开发耗时
|
||||
- 交互次数
|
||||
- 自动化程度
|
||||
- 响应速度
|
||||
|
||||
## 🕐 1. 开发耗时
|
||||
|
||||
### 定义
|
||||
|
||||
从**需求输入**到**完成可用代码/文档**所需的时间。
|
||||
|
||||
### 测量方法
|
||||
|
||||
1. 记录任务开始时间(输入需求的时间)
|
||||
2. 记录任务完成时间(生成可用代码/文档的时间)
|
||||
3. 计算时间差(分钟)
|
||||
|
||||
### 测量要点
|
||||
|
||||
- **仅计算工具使用时间**:不包括工具安装和配置时间
|
||||
- **包括人工调整时间**:如果需要对生成结果进行调整,调整时间也计算在内
|
||||
- **记录详细时间分布**:
|
||||
- 工具生成时间:工具生成原始结果的时间
|
||||
- 人工调整时间:对生成结果进行调整的时间
|
||||
- 测试验证时间:验证结果正确性的时间
|
||||
|
||||
### 评分标准
|
||||
|
||||
- **优秀**(5分):<10分钟
|
||||
- **良好**(4分):10-20分钟
|
||||
- **一般**(3分):20-30分钟
|
||||
- **较差**(2分):30-45分钟
|
||||
- **很差**(1分):>45分钟
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
任务:Task 1 - API开发
|
||||
|
||||
时间记录:
|
||||
- 09:00 - 开始任务(输入需求)
|
||||
- 09:12 - 工具生成原始代码完成
|
||||
- 09:18 - 人工调整完成
|
||||
- 09:20 - 测试验证完成
|
||||
|
||||
开发耗时:20分钟
|
||||
- 工具生成时间:12分钟
|
||||
- 人工调整时间:6分钟
|
||||
- 测试验证时间:2分钟
|
||||
```
|
||||
|
||||
## 🔄 2. 交互次数
|
||||
|
||||
### 定义
|
||||
|
||||
完成一个任务需要与工具进行**交互的次数**。
|
||||
|
||||
### 测量方法
|
||||
|
||||
记录以下交互类型:
|
||||
|
||||
- **输入次数**:向工具输入需求/代码/提示的次数
|
||||
- **修改次数**:对工具生成结果进行调整后再次输入的次数
|
||||
- **查询次数**:查询工具帮助/文档的次数
|
||||
|
||||
**总交互次数** = 输入次数 + 修改次数
|
||||
|
||||
### 测量要点
|
||||
|
||||
- **仅计算必需交互**:不包括探索性交互
|
||||
- **记录交互类型**:区分不同类型的交互
|
||||
- **记录每次交互的内容**:了解交互的具体内容
|
||||
|
||||
### 评分标准
|
||||
|
||||
- **优秀**(5分):1-2次交互
|
||||
- **良好**(4分):3-4次交互
|
||||
- **一般**(3分):5-6次交互
|
||||
- **较差**(2分):7-9次交互
|
||||
- **很差**(1分):≥10次交互
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
任务:Task 1 - API开发
|
||||
|
||||
交互记录:
|
||||
1. 输入需求:"开发用户注册、登录、查询接口"
|
||||
2. 查看生成结果,发现缺少JWT认证
|
||||
3. 输入补充需求:"添加JWT认证功能"
|
||||
4. 查看生成结果,发现代码格式问题
|
||||
5. 输入:"修复代码格式,符合PEP8规范"
|
||||
|
||||
总交互次数:5次
|
||||
- 输入次数:3次
|
||||
- 修改次数:2次
|
||||
```
|
||||
|
||||
## ⚙️ 3. 自动化程度
|
||||
|
||||
### 定义
|
||||
|
||||
工具能够**自动完成**的任务比例。
|
||||
|
||||
### 测量方法
|
||||
|
||||
计算以下比例:
|
||||
|
||||
- **自动生成比例**:工具自动生成的内容占总内容的比例
|
||||
- **手动调整比例**:需要人工调整的内容占总内容的比例
|
||||
|
||||
**自动化程度** = 自动生成比例 / 总内容比例 × 100%
|
||||
|
||||
### 测量要点
|
||||
|
||||
- **量化内容**:以代码行数、功能点、文档章节等为单位量化
|
||||
- **区分类型**:区分不同类型的内容(代码、配置、文档等)
|
||||
|
||||
### 评分标准
|
||||
|
||||
- **优秀**(5分):≥90%自动化
|
||||
- **良好**(4分):75-89%自动化
|
||||
- **一般**(3分):60-74%自动化
|
||||
- **较差**(2分):40-59%自动化
|
||||
- **很差**(1分):<40%自动化
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
任务:Task 1 - API开发
|
||||
|
||||
内容统计:
|
||||
- 总代码行数:300行
|
||||
- 工具自动生成:270行
|
||||
- 人工修改/添加:30行
|
||||
|
||||
自动化程度:270/300 × 100% = 90%
|
||||
```
|
||||
|
||||
## ⚡ 4. 响应速度
|
||||
|
||||
### 定义
|
||||
|
||||
工具**生成结果**的平均响应时间。
|
||||
|
||||
### 测量方法
|
||||
|
||||
1. 记录每次工具调用的响应时间
|
||||
2. 计算平均响应时间
|
||||
3. 记录最长和最短响应时间
|
||||
|
||||
### 测量要点
|
||||
|
||||
- **网络延迟**:如使用云端工具,网络延迟可能影响结果
|
||||
- **任务复杂度**:不同复杂度的任务响应时间不同
|
||||
- **工具类型**:本地工具vs云端工具的响应时间差异
|
||||
|
||||
### 评分标准
|
||||
|
||||
根据工具类型和任务复杂度,响应时间评分标准有所不同:
|
||||
|
||||
#### 云端工具(网络延迟)
|
||||
|
||||
- **优秀**(5分):<5秒
|
||||
- **良好**(4分):5-10秒
|
||||
- **一般**(3分):10-20秒
|
||||
- **较差**(2分):20-30秒
|
||||
- **很差**(1分):>30秒
|
||||
|
||||
#### 本地工具(无网络延迟)
|
||||
|
||||
- **优秀**(5分):<2秒
|
||||
- **良好**(4分):2-5秒
|
||||
- **一般**(3分):5-10秒
|
||||
- **较差**(2分):10-20秒
|
||||
- **很差**(1分):>20秒
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
任务:Task 1 - API开发
|
||||
|
||||
响应时间记录:
|
||||
- 第1次调用:8秒
|
||||
- 第2次调用:6秒
|
||||
- 第3次调用:7秒
|
||||
- 第4次调用:9秒
|
||||
- 第5次调用:8秒
|
||||
|
||||
平均响应时间:7.6秒
|
||||
最长响应时间:9秒
|
||||
最短响应时间:6秒
|
||||
```
|
||||
|
||||
## 📈 综合效率评分
|
||||
|
||||
### 计算方法
|
||||
|
||||
综合效率评分 = (开发耗时评分 × 0.3 + 交互次数评分 × 0.3 + 自动化程度评分 × 0.2 + 响应速度评分 × 0.2)
|
||||
|
||||
### 评分说明
|
||||
|
||||
- **权重分配**:根据指标重要性分配权重
|
||||
- **标准化处理**:所有指标均按1-5分标准化
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
工具A效率指标:
|
||||
- 开发耗时:20分钟(3分)
|
||||
- 交互次数:4次(4分)
|
||||
- 自动化程度:85%(4分)
|
||||
- 响应速度:8秒(4分)
|
||||
|
||||
综合效率评分 = 3×0.3 + 4×0.3 + 4×0.2 + 4×0.2 = 3.7分
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**注意**:效率指标应该结合具体的测试任务和工具类型来评估,不同任务类型和工具类型的评估标准可能有所不同。
|
||||
|
||||
|
|
@ -1,299 +0,0 @@
|
|||
# 质量指标定义
|
||||
|
||||
本文档定义AI4SE工具测试中的质量评估指标。
|
||||
|
||||
## 📊 指标概述
|
||||
|
||||
质量指标主要评估工具在**生成内容质量**方面的表现,包括:
|
||||
|
||||
- 代码正确率
|
||||
- 测试通过率
|
||||
- 可读性评分
|
||||
- 安全性评分
|
||||
- 规范性评分
|
||||
|
||||
## ✅ 1. 代码正确率
|
||||
|
||||
### 定义
|
||||
|
||||
工具生成的代码在**无需或少量修改**的情况下能够**正确运行**的比例。
|
||||
|
||||
### 测量方法
|
||||
|
||||
将生成代码分为四个等级:
|
||||
|
||||
1. **无需修改**:生成的代码可以直接运行,功能完全正确
|
||||
2. **少量修改**:需要修改<10行代码才能正确运行
|
||||
3. **大量修改**:需要修改10-50行代码才能正确运行
|
||||
4. **无法使用**:需要修改>50行代码或完全重写
|
||||
|
||||
### 计算方式
|
||||
|
||||
**代码正确率** = (无需修改行数 + 少量修改行数 × 0.8) / 总代码行数 × 100%
|
||||
|
||||
### 评分标准
|
||||
|
||||
- **优秀**(5分):≥90%正确率,且无需修改或仅少量修改
|
||||
- **良好**(4分):75-89%正确率,少量修改即可
|
||||
- **一般**(3分):60-74%正确率,需要一定修改
|
||||
- **较差**(2分):40-59%正确率,需要大量修改
|
||||
- **很差**(1分):<40%正确率,或无法使用
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
任务:Task 1 - API开发
|
||||
|
||||
代码统计:
|
||||
- 总代码行数:300行
|
||||
- 无需修改:250行
|
||||
- 少量修改(<10行):40行
|
||||
- 大量修改(10-50行):10行
|
||||
|
||||
代码正确率 = (250 + 40×0.8) / 300 × 100% = 94%
|
||||
评分:5分(优秀)
|
||||
```
|
||||
|
||||
## 🧪 2. 测试通过率
|
||||
|
||||
### 定义
|
||||
|
||||
工具生成的代码通过**自动化测试**的比例。
|
||||
|
||||
### 测量方法
|
||||
|
||||
1. **编写测试用例**:为生成代码编写单元测试/集成测试
|
||||
2. **运行测试**:使用测试框架(如pytest、Jest)运行测试
|
||||
3. **统计通过率**:通过测试数 / 总测试数 × 100%
|
||||
|
||||
### 测试类型
|
||||
|
||||
- **单元测试**:测试单个函数/方法
|
||||
- **集成测试**:测试模块间交互
|
||||
- **功能测试**:测试业务功能
|
||||
- **边界测试**:测试边界条件
|
||||
|
||||
### 评分标准
|
||||
|
||||
- **优秀**(5分):≥95%通过率
|
||||
- **良好**(4分):85-94%通过率
|
||||
- **一般**(3分):70-84%通过率
|
||||
- **较差**(2分):50-69%通过率
|
||||
- **很差**(1分):<50%通过率
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
任务:Task 1 - API开发
|
||||
|
||||
测试统计:
|
||||
- 总测试用例:20个
|
||||
- 通过测试:18个
|
||||
- 失败测试:2个
|
||||
|
||||
测试通过率 = 18/20 × 100% = 90%
|
||||
评分:4分(良好)
|
||||
```
|
||||
|
||||
## 📖 3. 可读性评分
|
||||
|
||||
### 定义
|
||||
|
||||
生成代码的**可读性**和**可理解性**。
|
||||
|
||||
### 评估维度
|
||||
|
||||
1. **命名规范**:变量、函数、类名是否清晰有意义
|
||||
2. **代码结构**:代码组织是否清晰,函数职责是否单一
|
||||
3. **注释质量**:是否有适当的注释,注释是否准确
|
||||
4. **代码风格**:是否符合语言规范和最佳实践
|
||||
|
||||
### 评分标准
|
||||
|
||||
每个维度1-5分,总分20分,转换为1-5分:
|
||||
|
||||
| 总分 | 评分 | 等级 |
|
||||
|------|------|------|
|
||||
| 18-20 | 5 | 优秀 |
|
||||
| 15-17 | 4 | 良好 |
|
||||
| 12-14 | 3 | 一般 |
|
||||
| 9-11 | 2 | 较差 |
|
||||
| 0-8 | 1 | 很差 |
|
||||
|
||||
### 评估要点
|
||||
|
||||
#### 命名规范(5分)
|
||||
|
||||
- **优秀**(5分):命名清晰、语义化、符合规范
|
||||
- **良好**(4分):命名基本清晰,偶有不规范
|
||||
- **一般**(3分):命名一般,部分不清晰
|
||||
- **较差**(2分):命名混乱,难以理解
|
||||
- **很差**(1分):大量使用无意义命名
|
||||
|
||||
#### 代码结构(5分)
|
||||
|
||||
- **优秀**(5分):结构清晰,职责单一,模块化
|
||||
- **良好**(4分):结构基本清晰,偶有职责不清
|
||||
- **一般**(3分):结构一般,存在职责混乱
|
||||
- **较差**(2分):结构混乱,职责不清
|
||||
- **很差**(1分):代码结构混乱
|
||||
|
||||
#### 注释质量(5分)
|
||||
|
||||
- **优秀**(5分):注释充分、准确、有价值
|
||||
- **良好**(4分):注释基本充分,偶有遗漏
|
||||
- **一般**(3分):注释一般,部分关键逻辑缺少注释
|
||||
- **较差**(2分):注释较少或不准确
|
||||
- **很差**(1分):几乎没有注释
|
||||
|
||||
#### 代码风格(5分)
|
||||
|
||||
- **优秀**(5分):完全符合语言规范和最佳实践
|
||||
- **良好**(4分):基本符合,偶有小问题
|
||||
- **一般**(3分):基本符合,但有明显问题
|
||||
- **较差**(2分):不符合规范,存在较多问题
|
||||
- **很差**(1分):严重不符合规范
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
任务:Task 1 - API开发
|
||||
|
||||
可读性评估:
|
||||
- 命名规范:4分(基本清晰,偶有不规范)
|
||||
- 代码结构:5分(结构清晰,职责单一)
|
||||
- 注释质量:3分(注释一般,缺少部分关键逻辑注释)
|
||||
- 代码风格:4分(基本符合PEP8,偶有小问题)
|
||||
|
||||
总分:16分
|
||||
可读性评分:4分(良好)
|
||||
```
|
||||
|
||||
## 🔒 4. 安全性评分
|
||||
|
||||
### 定义
|
||||
|
||||
生成代码的**安全性**,是否存在安全漏洞。
|
||||
|
||||
### 评估维度
|
||||
|
||||
1. **输入验证**:是否正确验证和清理用户输入
|
||||
2. **SQL注入防护**:是否使用参数化查询
|
||||
3. **认证授权**:认证授权实现是否安全
|
||||
4. **敏感信息**:是否泄露敏感信息(密码、密钥等)
|
||||
5. **依赖安全**:依赖包是否存在已知漏洞
|
||||
|
||||
### 评分标准
|
||||
|
||||
每个安全维度检查通过得1分,总分5分:
|
||||
|
||||
| 得分 | 评分 | 等级 |
|
||||
|------|------|------|
|
||||
| 5 | 5 | 优秀 |
|
||||
| 4 | 4 | 良好 |
|
||||
| 3 | 3 | 一般 |
|
||||
| 2 | 2 | 较差 |
|
||||
| 0-1 | 1 | 很差 |
|
||||
|
||||
### 安全漏洞示例
|
||||
|
||||
#### SQL注入
|
||||
|
||||
```python
|
||||
# 不安全
|
||||
cursor.execute("SELECT * FROM users WHERE username = '" + username + "'")
|
||||
|
||||
# 安全
|
||||
cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
|
||||
```
|
||||
|
||||
#### 密码存储
|
||||
|
||||
```python
|
||||
# 不安全
|
||||
password_hash = hashlib.md5(password.encode()).hexdigest()
|
||||
|
||||
# 安全
|
||||
import bcrypt
|
||||
password_hash = bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode()
|
||||
```
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
任务:Task 1 - API开发
|
||||
|
||||
安全性评估:
|
||||
- 输入验证:✓(1分)
|
||||
- SQL注入防护:✓(1分)
|
||||
- 认证授权:✓(1分)
|
||||
- 敏感信息:✓(1分)
|
||||
- 依赖安全:✓(1分)
|
||||
|
||||
总分:5分
|
||||
安全性评分:5分(优秀)
|
||||
```
|
||||
|
||||
## 📏 5. 规范性评分
|
||||
|
||||
### 定义
|
||||
|
||||
生成代码是否符合**语言规范**和**最佳实践**。
|
||||
|
||||
### 评估维度
|
||||
|
||||
1. **PEP8规范**(Python)/ **ESLint规范**(JavaScript)
|
||||
2. **设计模式**:是否合理使用设计模式
|
||||
3. **最佳实践**:是否符合语言和框架最佳实践
|
||||
4. **文档规范**:文档字符串/注释是否符合规范
|
||||
|
||||
### 评分标准
|
||||
|
||||
使用静态代码分析工具(如pylint、ESLint)评估:
|
||||
|
||||
- **优秀**(5分):0个错误,≤5个警告
|
||||
- **良好**(4分):0个错误,6-10个警告
|
||||
- **一般**(3分):1-3个错误,或11-20个警告
|
||||
- **较差**(2分):4-10个错误,或21-30个警告
|
||||
- **很差**(1分):>10个错误,或>30个警告
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
任务:Task 1 - API开发
|
||||
|
||||
规范性评估(使用pylint):
|
||||
- 错误数:0
|
||||
- 警告数:8
|
||||
|
||||
规范性评分:4分(良好)
|
||||
```
|
||||
|
||||
## 📈 综合质量评分
|
||||
|
||||
### 计算方法
|
||||
|
||||
综合质量评分 = (代码正确率评分 × 0.3 + 测试通过率评分 × 0.2 + 可读性评分 × 0.2 + 安全性评分 × 0.2 + 规范性评分 × 0.1)
|
||||
|
||||
### 评分说明
|
||||
|
||||
- **权重分配**:根据指标重要性分配权重
|
||||
- **标准化处理**:所有指标均按1-5分标准化
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
工具A质量指标:
|
||||
- 代码正确率:94%(5分)
|
||||
- 测试通过率:90%(4分)
|
||||
- 可读性:16分(4分)
|
||||
- 安全性:5分(5分)
|
||||
- 规范性:4分(4分)
|
||||
|
||||
综合质量评分 = 5×0.3 + 4×0.2 + 4×0.2 + 5×0.2 + 4×0.1 = 4.5分
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**注意**:质量指标应该结合具体的测试任务来评估,不同任务类型的评估标准可能有所不同。对于非代码生成类工具(如需求分析、架构设计),需要调整评估指标。
|
||||
|
||||
|
|
@ -1,251 +0,0 @@
|
|||
# 测试流程规范
|
||||
|
||||
本文档定义AI4SE工具测试的标准化流程,确保测试结果的可复现性和可比性。
|
||||
|
||||
## 📋 测试流程概述
|
||||
|
||||
每个工具的测试必须遵循以下统一流程:
|
||||
|
||||
1. **工具准备** - 安装和配置工具
|
||||
2. **任务输入** - 明确需求和初始条件
|
||||
3. **操作步骤** - 记录详细的操作过程
|
||||
4. **结果输出** - 记录生成结果和评估数据
|
||||
|
||||
## 🔧 1. 工具准备
|
||||
|
||||
### 安装步骤
|
||||
|
||||
记录完整的安装和配置过程:
|
||||
|
||||
- **依赖安装**:列出所有必需的依赖和版本
|
||||
- **API密钥配置**:如需要,记录配置步骤
|
||||
- **IDE插件安装**:如适用,记录插件安装过程
|
||||
- **本地部署教程**:如适用,记录本地部署步骤
|
||||
- **关键截图**:提供安装过程中的关键截图
|
||||
|
||||
### 版本记录
|
||||
|
||||
记录测试使用的工具版本:
|
||||
|
||||
- 工具版本号
|
||||
- 插件版本号(如适用)
|
||||
- 依赖版本号(如适用)
|
||||
|
||||
## 📝 2. 任务输入
|
||||
|
||||
### 需求描述
|
||||
|
||||
使用统一的测试任务描述,确保所有工具测试相同的需求。
|
||||
|
||||
### 初始条件
|
||||
|
||||
明确说明:
|
||||
|
||||
- **初始代码状态**:是否有初始代码?如有,提供完整代码
|
||||
- **项目环境**:项目类型、框架、技术栈
|
||||
- **其他上下文**:相关的配置、数据、环境变量等
|
||||
|
||||
### 测试任务列表
|
||||
|
||||
所有工具必须测试以下标准任务:
|
||||
|
||||
#### 基础任务(必须完成)
|
||||
|
||||
- **Task 1: API开发** - 用Python+FastAPI开发RESTful API
|
||||
- 详见:[task1-api.md](./test-tasks/task1-api.md)
|
||||
|
||||
#### 中等任务(推荐完成)
|
||||
|
||||
- **Task 2: 前端调试** - React组件bug定位和修复
|
||||
- 详见:[task2-debug.md](./test-tasks/task2-debug.md)
|
||||
- **Task 3: 代码重构** - Legacy代码重构优化
|
||||
- 详见:[task3-refactor.md](./test-tasks/task3-refactor.md)
|
||||
|
||||
#### 高级任务(可选完成)
|
||||
|
||||
- **Task 4: 需求分析** - 需求文档生成和分析
|
||||
- 详见:[task4-requirements.md](./test-tasks/task4-requirements.md)
|
||||
- **Task 5: 架构设计** - 微服务架构设计
|
||||
- 详见:[task5-architecture.md](./test-tasks/task5-architecture.md)
|
||||
|
||||
## 📸 3. 操作步骤
|
||||
|
||||
### 操作记录
|
||||
|
||||
按以下顺序记录操作过程:
|
||||
|
||||
1. **工具调用方式**:如何调用工具(命令、界面、快捷键等)
|
||||
2. **输入内容**:输入的提示词、代码片段、需求描述等
|
||||
3. **生成结果**:工具生成的原始结果(代码、文档等)
|
||||
4. **人工调整**:对生成结果的人工修改
|
||||
- 修改点:具体修改了什么
|
||||
- 修改原因:为什么需要修改
|
||||
|
||||
### 截图要求
|
||||
|
||||
记录关键操作截图:
|
||||
|
||||
- 工具调用界面
|
||||
- 输入内容界面
|
||||
- 生成结果界面
|
||||
- 最终结果界面
|
||||
|
||||
## 📊 4. 结果输出
|
||||
|
||||
### 结果文件
|
||||
|
||||
每个测试任务必须包含:
|
||||
|
||||
#### 原始生成结果
|
||||
|
||||
- 工具生成的**未修改**原始代码/文档
|
||||
- 保存为文件(如 `task1-original.py`)
|
||||
|
||||
#### 最终可用结果
|
||||
|
||||
- 人工修改后的**可用**代码/文档
|
||||
- 标注修改点和修改原因(注释或单独文档)
|
||||
|
||||
#### 指标数据
|
||||
|
||||
记录以下量化指标(详见 [metrics/](./metrics/)):
|
||||
|
||||
**效率指标**:
|
||||
- 开发耗时:从需求输入到完成可用代码的时间(分钟)
|
||||
- 交互次数:需要多少次人工调整才能生成可用代码
|
||||
|
||||
**质量指标**:
|
||||
- 代码正确率:无需修改/少量修改(<10行)/大量修改(>10行)/无法使用
|
||||
- 测试通过率:生成代码的单元测试通过率(%)
|
||||
- 可读性评分:按行业规范打分(1-5分)
|
||||
|
||||
**易用性指标**:
|
||||
- 学习曲线:从安装到上手完成任务的操作步骤数
|
||||
- 上手难度:主观评分(1-5分,1=非常容易,5=非常困难)
|
||||
|
||||
**适配性指标**:
|
||||
- 语言/框架兼容性:是否支持目标技术栈,有无功能缺失
|
||||
- 平台兼容性:支持的操作系统和IDE
|
||||
|
||||
#### 优缺点分析
|
||||
|
||||
基于实测的客观评价:
|
||||
|
||||
- **优点**:实际使用中表现好的方面
|
||||
- **缺点**:实际使用中遇到的问题和限制
|
||||
- **适用场景**:工具最适合的使用场景
|
||||
- **不适用场景**:工具不适合的使用场景
|
||||
|
||||
## 📐 测试环境要求
|
||||
|
||||
所有测试必须在统一的环境下进行,详见 [environment/](./environment/)。
|
||||
|
||||
### IDE配置
|
||||
|
||||
- **VS Code**:固定版本(如 1.85.0)
|
||||
- **插件版本**:记录各插件版本号
|
||||
|
||||
### 编程语言/框架
|
||||
|
||||
- **Python**:3.10+
|
||||
- **JavaScript**:Node.js 18.17.0+
|
||||
- **React**:18.x
|
||||
- **FastAPI**:0.103.1+
|
||||
- **Java**:17+
|
||||
- **Spring Boot**:3.x
|
||||
|
||||
### 操作系统
|
||||
|
||||
- macOS 14.0+
|
||||
- Windows 11
|
||||
- Linux(Ubuntu 22.04+)
|
||||
|
||||
### 硬件要求
|
||||
|
||||
- **本地部署工具**:记录硬件要求(CPU、内存、显存等)
|
||||
- 例如:CodeLlama-7B需16GB显存
|
||||
|
||||
## ✅ 测试检查清单
|
||||
|
||||
测试完成后,请检查:
|
||||
|
||||
- [ ] 记录了完整的安装和配置步骤
|
||||
- [ ] 使用了统一的测试任务描述
|
||||
- [ ] 记录了详细的操作过程
|
||||
- [ ] 提供了关键操作截图
|
||||
- [ ] 保存了原始生成结果
|
||||
- [ ] 保存了最终可用结果并标注了修改点
|
||||
- [ ] 记录了所有量化指标数据
|
||||
- [ ] 提供了客观的优缺点分析
|
||||
- [ ] 确认测试环境符合要求
|
||||
|
||||
## 📝 测试报告模板
|
||||
|
||||
每个测试任务的报告应包含以下结构:
|
||||
|
||||
```markdown
|
||||
# Task X: <任务名称>
|
||||
|
||||
## 任务描述
|
||||
[统一的任务描述]
|
||||
|
||||
## 初始条件
|
||||
[初始代码/项目环境/上下文]
|
||||
|
||||
## 操作步骤
|
||||
|
||||
### 1. 工具调用
|
||||
[如何调用工具]
|
||||
|
||||
### 2. 输入内容
|
||||
[输入的提示词/代码/需求]
|
||||
|
||||
### 3. 生成结果
|
||||
[工具生成的原始结果]
|
||||
|
||||
### 4. 人工调整
|
||||
[修改点和修改原因]
|
||||
|
||||
## 结果评估
|
||||
|
||||
### 效率指标
|
||||
- 开发耗时:XX分钟
|
||||
- 交互次数:XX次
|
||||
|
||||
### 质量指标
|
||||
- 代码正确率:XX
|
||||
- 测试通过率:XX%
|
||||
- 可读性评分:XX/5
|
||||
|
||||
### 易用性指标
|
||||
- 学习曲线:XX步骤
|
||||
- 上手难度:XX/5
|
||||
|
||||
### 适配性指标
|
||||
- 语言/框架兼容性:XX
|
||||
- 平台兼容性:XX
|
||||
|
||||
## 优缺点分析
|
||||
|
||||
### 优点
|
||||
- [优点1]
|
||||
- [优点2]
|
||||
|
||||
### 缺点
|
||||
- [缺点1]
|
||||
- [缺点2]
|
||||
|
||||
## 截图
|
||||
|
||||
[关键操作截图]
|
||||
|
||||
## 代码文件
|
||||
|
||||
- `taskX-original.xxx` - 原始生成结果
|
||||
- `taskX-final.xxx` - 最终可用结果
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**提示**:详细测试任务定义见 [test-tasks/](./test-tasks/),详细指标定义见 [metrics/](./metrics/)。
|
||||
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
# Samples 目录说明
|
||||
|
||||
本目录包含为每个测试任务准备的示例输入文件,便于快速开始工具测试。每个示例文件以 `taskN-sample-input.md` 命名,对应 `taskN-*.md` 测试规范中的任务编号。
|
||||
|
||||
使用方法:
|
||||
- 将所需的 `taskN-sample-input.md` 作为工具输入或提示的素材。
|
||||
- 保存工具原始输出为 `taskN-original-<tool>.md`,并将最终人工修订结果保存为 `taskN-final-<tool>.md`。
|
||||
- 每个示例文件顶部包含用途说明与复现/运行步骤(如适用)。
|
||||
|
||||
目录列表:
|
||||
- `task1-sample-input.md` — 需求分析示例(产品简介与访谈要点)
|
||||
- `task2-sample-input.md` — 架构设计示例(功能与非功能需求)
|
||||
- `task3-sample-input.md` — 代码生成示例(接口规范)
|
||||
- `task4-sample-input.md` — 调试示例(故障代码与复现步骤)
|
||||
- `task5-sample-input.md` — 重构示例(遗留代码片段)
|
||||
- `task6-sample-input.md` — 测试生成示例(待测代码)
|
||||
- `task7-sample-input.md` — 文档生成示例(项目代码)
|
||||
- `task8-sample-input.md` — 代码审查示例(PR diff)
|
||||
- `task9-sample-input.md` — 项目管理示例(功能说明与资源)
|
||||
- `task10-sample-input.md` — DevOps/CI-CD 示例(仓库与 Dockerfile)
|
||||
- `task11-sample-input.md` — 本地模型示例(部署与测试提示)
|
||||
- `task12-sample-input.md` — 全流程示例(端到端任务说明)
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
# Task1 示例输入:需求分析(需求文档 / 访谈要点)
|
||||
|
||||
## 产品简介(示例)
|
||||
|
||||
产品名称:SmartLibrary 智能图书检索系统
|
||||
|
||||
目标:为高校图书馆提供基于自然语言的图书检索与推荐服务,支持模糊查询、相似书目推荐与借阅统计分析。
|
||||
|
||||
功能要点:
|
||||
- 用户能够用自然语言搜索图书(支持书名、作者、主题、摘要关键词)。
|
||||
- 系统根据用户历史与相似用户行为推荐图书。
|
||||
- 管理员可以导入书目并查看借阅统计报表。
|
||||
|
||||
## 用户访谈要点(示例)
|
||||
|
||||
1. 学生希望能按课程名快速找到推荐教材。
|
||||
2. 教师需要把推荐书单导出为 PDF。
|
||||
3. 图书馆管理员关心导入数据的格式兼容性与批量更新。
|
||||
|
||||
## 模糊需求示例
|
||||
|
||||
“提升搜索体验” — 期望工具给出可执行的需求拆解与 KPI(如搜索结果平均点击率、首条结果满意度)。
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
# Task10 示例输入:DevOps / CI-CD(仓库与 Dockerfile 示例)
|
||||
|
||||
## 仓库示例结构
|
||||
|
||||
```
|
||||
- demo-service/
|
||||
- app.py
|
||||
- requirements.txt
|
||||
- Dockerfile
|
||||
```
|
||||
|
||||
Dockerfile 示例:
|
||||
|
||||
```dockerfile
|
||||
FROM python:3.10-slim
|
||||
WORKDIR /app
|
||||
COPY requirements.txt .
|
||||
RUN pip install -r requirements.txt
|
||||
COPY . .
|
||||
CMD ["python", "app.py"]
|
||||
```
|
||||
|
||||
期望工具输出:GitHub Actions 配置用于构建镜像并推送到镜像仓库、Kubernetes 部署清单或 Docker Compose、以及基本监控/告警建议。
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
# Task11 示例输入:本地化大模型(部署与测试提示)
|
||||
|
||||
## 目标机器信息(示例)
|
||||
|
||||
- 操作系统:Ubuntu 22.04
|
||||
- GPU:NVIDIA RTX 4090,显存 24GB
|
||||
- 可用内存:64GB
|
||||
|
||||
## 部署要求
|
||||
|
||||
安装并启动 CodeLlama-7B,本地提供一个 HTTP 接口用于代码补全与审查任务。
|
||||
|
||||
## 测试用例示例
|
||||
|
||||
1. 提示:"为以下函数生成 docstring:def add(a, b): return a + b"
|
||||
2. 提示:"将以下同步函数改为异步实现,并说明潜在问题。"
|
||||
|
||||
记录:启动日志、平均响应时延(ms)、内存/显存占用。
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
# Task12 示例输入:全流程集成(端到端任务说明)
|
||||
|
||||
## 项目愿景(示例)
|
||||
|
||||
开发一个简易“任务管理”微服务,从需求到部署的端到端示例:
|
||||
|
||||
- 需求:用户能创建/分配/完成任务,支持附件与评论;提供 REST API 与简单前端。
|
||||
- 非功能:每日 1000 次请求;可在 Kubernetes 中部署。
|
||||
|
||||
## 期望阶段输出(作为检验点)
|
||||
|
||||
1. 需求到用户故事与验收标准(任务1)
|
||||
2. 架构草案与部署拓扑(任务2)
|
||||
3. 代码骨架与基本实现(任务3)
|
||||
4. 自动生成测试并运行(任务6)
|
||||
5. CI/CD 配置与测试环境部署(任务10)
|
||||
|
||||
记录每阶段的工具输出、人工修改点与交互次数。
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
# Task2 示例输入:架构设计(需求 + 非功能需求)
|
||||
|
||||
## 功能需求(示例)
|
||||
|
||||
实现一个在线笔记应用,支持:用户注册登录、笔记创建/编辑/删除、笔记按标签检索、笔记分享链接。
|
||||
|
||||
## 非功能需求(示例)
|
||||
|
||||
- 并发用户峰值 5000 人;平均响应时延 < 200ms。
|
||||
- 高可用:99.9% 可用性,支持跨区域部署。
|
||||
- 成本约束:每月云资源开销不超过 1000 美元(小团队)。
|
||||
|
||||
## 约束与偏好
|
||||
|
||||
- 优先使用开源组件,数据库偏好 PostgreSQL;支持容器化部署(Kubernetes)。
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
# Task3 示例输入:代码生成(接口规范示例)
|
||||
|
||||
## 简要接口规范(示例)
|
||||
|
||||
服务:用户管理 API(Python + FastAPI)
|
||||
|
||||
端点:
|
||||
- `POST /api/users/register` — body:{"username":"","email":"","password":""}
|
||||
- `POST /api/users/login` — body:{"username_or_email":"","password":""}
|
||||
- `GET /api/users/{user_id}` — 需要 JWT 认证
|
||||
|
||||
数据模型示例:
|
||||
|
||||
- UserCreate: username, email, password
|
||||
- UserPublic: id, username, email, created_at
|
||||
|
||||
其他要求:使用 SQLite,密码加密(bcrypt),返回 JSON API。请生成项目骨架、模型、路由与简单 README。
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
# Task4 示例输入:调试排障(含故障代码与复现说明)
|
||||
|
||||
## 问题描述(示例)
|
||||
|
||||
项目:一个简易并发计数器服务,存在竞态条件导致计数不稳定。
|
||||
|
||||
关键文件(示例)`counter.py`:
|
||||
|
||||
```python
|
||||
import threading
|
||||
|
||||
class Counter:
|
||||
def __init__(self):
|
||||
self.value = 0
|
||||
|
||||
def inc(self):
|
||||
tmp = self.value
|
||||
tmp += 1
|
||||
self.value = tmp
|
||||
|
||||
counter = Counter()
|
||||
|
||||
def worker(n):
|
||||
for _ in range(n):
|
||||
counter.inc()
|
||||
|
||||
if __name__ == '__main__':
|
||||
threads = []
|
||||
for _ in range(10):
|
||||
t = threading.Thread(target=worker, args=(10000,))
|
||||
threads.append(t)
|
||||
t.start()
|
||||
for t in threads:
|
||||
t.join()
|
||||
print('Counter value=', counter.value)
|
||||
```
|
||||
|
||||
复现步骤:在本机运行 `python counter.py`,多次运行观察 `Counter value` 是否小于预期 100000。
|
||||
|
||||
期望工具输出:定位竞态,给出锁/原子操作修复建议,并提供修复补丁与性能影响说明。
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
# Task5 示例输入:重构(遗留代码片段)
|
||||
|
||||
## 遗留代码示例(Python)
|
||||
|
||||
文件:`legacy_utils.py`
|
||||
|
||||
```python
|
||||
def process_records(records):
|
||||
out = []
|
||||
for r in records:
|
||||
if r['status'] == 'active':
|
||||
v = r.get('value', 0)
|
||||
if v is None:
|
||||
v = 0
|
||||
s = r.get('meta', {}).get('tag', '')
|
||||
out.append({'id': r['id'], 'val': v, 'tag': s})
|
||||
else:
|
||||
# skip
|
||||
pass
|
||||
return out
|
||||
```
|
||||
|
||||
问题点示例:重复检查、缺乏类型校验、没有单元测试、函数过长。
|
||||
|
||||
期望工具输出:重构建议、分解后的函数、并附带单元测试与基准性能对比。
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
# Task6 示例输入:测试生成(待测代码示例)
|
||||
|
||||
## 待测函数(示例,`math_utils.py`)
|
||||
|
||||
```python
|
||||
def is_prime(n):
|
||||
if n <= 1:
|
||||
return False
|
||||
i = 2
|
||||
while i * i <= n:
|
||||
if n % i == 0:
|
||||
return False
|
||||
i += 1
|
||||
return True
|
||||
|
||||
def gcd(a, b):
|
||||
while b:
|
||||
a, b = b, a % b
|
||||
return a
|
||||
```
|
||||
|
||||
测试目标:生成单元测试覆盖正常输入、边界值(0、1、2)、大质数、负数与异常输入处理;为 `gcd` 生成多组互质与非互质案例。
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
# Task7 示例输入:文档生成(项目代码示例)
|
||||
|
||||
## 小型项目结构示例
|
||||
|
||||
```
|
||||
- mycli/
|
||||
- cli.py
|
||||
- utils.py
|
||||
- README.md (空)
|
||||
```
|
||||
|
||||
`cli.py` 示例:
|
||||
|
||||
```python
|
||||
import argparse
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--name', help='your name')
|
||||
args = parser.parse_args()
|
||||
print(f'Hello {args.name}')
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
```
|
||||
|
||||
期望工具输出:补全 `README.md`(安装、使用示例)、为 `main` 添加 docstring、生成安装/发布指引示例。
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
# Task8 示例输入:代码审查(PR diff 示例)
|
||||
|
||||
## 示例 PR 描述
|
||||
|
||||
标题:修复用户密码字段在日志中泄露的问题
|
||||
|
||||
变更摘要:在 `auth.py` 的登录逻辑中添加了日志记录,误将 `password` 字段包含在日志输出中。PR 移除了该字段并改为仅记录 `user_id` 与错误码。
|
||||
|
||||
示例 diff(简化):
|
||||
|
||||
```diff
|
||||
--- a/auth.py
|
||||
+++ b/auth.py
|
||||
@@ -1,5 +1,5 @@
|
||||
logger.info(f"login attempt: {payload}")
|
||||
- logger.info(f"login attempt: {payload}")
|
||||
+ logger.info(f"login attempt: user_id={payload.get('user_id')}")
|
||||
```
|
||||
|
||||
同时存在问题的文件:`db.py` 中有一个未经参数化的 SQL 拼接语句(可能存在注入风险)。
|
||||
|
||||
期望工具输出:识别日志泄露敏感信息、检测 SQL 注入风险、给出修复建议和严重性分级。
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
# Task9 示例输入:项目管理(功能说明与资源约束)
|
||||
|
||||
## 功能说明(示例)
|
||||
|
||||
功能:实现“课程公告板”功能,教师可发布公告,学生可订阅、查看、按课程筛选和接收邮件通知。
|
||||
|
||||
可用资源:2 名后端开发、1 名前端、1 名测试工程师;期限:4 周。
|
||||
|
||||
优先级:1) 发布/查看 2) 邮件通知 3) 订阅/筛选
|
||||
|
||||
期望工具输出:WBS(任务清单与估时)、甘特图建议、风险清单(含概率与影响)与缓解措施。
|
||||
|
|
@ -1,130 +0,0 @@
|
|||
# Task 1: RESTful API开发(基础任务)
|
||||
|
||||
## 任务描述
|
||||
|
||||
使用Python + FastAPI开发一个用户管理系统的RESTful API,包含以下功能:
|
||||
|
||||
1. **用户注册接口** (`POST /api/users/register`)
|
||||
- 接收用户名、邮箱、密码
|
||||
- 验证输入格式(邮箱格式、密码强度)
|
||||
- 检查用户名和邮箱是否已存在
|
||||
- 返回用户信息(不含密码)
|
||||
|
||||
2. **用户登录接口** (`POST /api/users/login`)
|
||||
- 接收用户名/邮箱和密码
|
||||
- 验证用户凭证
|
||||
- 返回JWT Token
|
||||
|
||||
3. **用户查询接口** (`GET /api/users/{user_id}`)
|
||||
- 需要JWT认证
|
||||
- 返回指定用户的公开信息
|
||||
|
||||
### 技术要求
|
||||
|
||||
- 使用FastAPI框架
|
||||
- 实现数据校验(Pydantic模型)
|
||||
- 实现错误处理(统一的错误响应格式)
|
||||
- 使用SQLite数据库存储用户数据
|
||||
- 实现密码加密(bcrypt)
|
||||
- 实现JWT认证
|
||||
- 代码符合PEP8规范
|
||||
- 提供API文档(FastAPI自动生成)
|
||||
|
||||
## 初始条件
|
||||
|
||||
- **初始代码状态**:无,从零开始
|
||||
- **项目类型**:Python Web API项目
|
||||
- **框架**:FastAPI 0.103.1+
|
||||
- **Python版本**:3.10+
|
||||
- **数据库**:SQLite(无需额外配置)
|
||||
|
||||
## 验收标准
|
||||
|
||||
### 功能验收
|
||||
|
||||
- [ ] 用户注册接口功能完整,数据校验正确
|
||||
- [ ] 用户登录接口功能完整,认证正确
|
||||
- [ ] 用户查询接口功能完整,权限验证正确
|
||||
- [ ] 密码加密存储,未明文保存
|
||||
- [ ] JWT Token生成和验证正确
|
||||
- [ ] 错误处理统一,返回格式规范
|
||||
|
||||
### 代码质量
|
||||
|
||||
- [ ] 代码符合PEP8规范
|
||||
- [ ] 代码结构清晰,函数职责单一
|
||||
- [ ] 注释充分,关键逻辑有说明
|
||||
- [ ] 无明显的安全漏洞
|
||||
|
||||
### 测试验收
|
||||
|
||||
- [ ] 使用Postman或curl可以成功调用所有接口
|
||||
- [ ] 所有接口的边界条件处理正确(如:重复注册、错误密码、无效Token等)
|
||||
- [ ] 错误响应格式统一且信息明确
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. **创建项目结构**
|
||||
- 创建Python虚拟环境
|
||||
- 安装依赖(FastAPI、uvicorn、pydantic、bcrypt、python-jose等)
|
||||
- 创建项目目录结构
|
||||
|
||||
2. **开发API接口**
|
||||
- 使用工具生成/辅助编写代码
|
||||
- 记录工具生成的代码
|
||||
- 记录人工修改的点和原因
|
||||
|
||||
3. **测试验证**
|
||||
- 使用Postman测试所有接口
|
||||
- 验证功能正确性
|
||||
- 记录测试结果
|
||||
|
||||
## 评估要点
|
||||
|
||||
### 代码生成质量
|
||||
|
||||
- **完整性**:是否生成了所有必需的接口和功能
|
||||
- **正确性**:生成的代码是否能直接运行,是否需要大量修改
|
||||
- **规范性**:代码是否符合PEP8和FastAPI最佳实践
|
||||
- **安全性**:是否正确实现密码加密和JWT认证
|
||||
|
||||
### 工具使用体验
|
||||
|
||||
- **响应速度**:工具生成代码的速度
|
||||
- **交互便利性**:需要多少次交互才能生成完整功能
|
||||
- **错误处理**:工具是否能处理边界情况和错误场景
|
||||
|
||||
## 示例代码结构
|
||||
|
||||
期望生成的项目结构:
|
||||
|
||||
```
|
||||
user-api/
|
||||
├── main.py # FastAPI应用入口
|
||||
├── models.py # Pydantic数据模型
|
||||
├── database.py # 数据库配置和连接
|
||||
├── auth.py # JWT认证逻辑
|
||||
├── routers/
|
||||
│ └── users.py # 用户相关路由
|
||||
├── requirements.txt # 依赖清单
|
||||
└── README.md # 项目说明
|
||||
```
|
||||
|
||||
## 参考示例
|
||||
|
||||
### 依赖清单示例
|
||||
|
||||
```txt
|
||||
fastapi==0.103.1
|
||||
uvicorn[standard]==0.24.0
|
||||
pydantic==2.4.2
|
||||
pydantic[email]==2.4.2
|
||||
bcrypt==4.0.1
|
||||
python-jose[cryptography]==3.3.0
|
||||
sqlalchemy==2.0.23
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**注意**:这是一个基础任务,所有工具都必须完成此任务的测试。测试结果将作为对比评估的重要依据。
|
||||
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
# Task 1: 需求分析类(Requirement Analysis)
|
||||
|
||||
## 任务描述
|
||||
|
||||
使用AI工具辅助从给定的产品简介、用户访谈记录或需求草案中提取需求、生成用户故事(user stories)、构建需求优先级列表和验收标准。测试目标是评估工具在理解上下文、提取完整需求、消除歧义和产出可执行用户故事方面的表现。
|
||||
|
||||
### 子任务
|
||||
1. 从一段产品简介(约300-800字)生成5-8条用户故事(包含验收标准)。
|
||||
2. 对一组用户访谈要点(5-10条)抽取功能性与非功能性需求并做优先级排序。
|
||||
3. 给出一个模糊需求(例如:提升搜索体验),要求工具生成详细需求拆解和度量指标(KPI)。
|
||||
|
||||
## 技术要求与初始条件
|
||||
|
||||
- 初始代码/文档:无;测试以文本输入/输出为主。
|
||||
- 环境:Windows/macOS/Linux 均可;若工具为在线服务,记录版本与网络条件。
|
||||
- 输入样例文件:提供产品简介、访谈记录、模糊需求文档(保存为 `.md` 或 `.txt`)。
|
||||
|
||||
## 验收标准
|
||||
|
||||
### 功能验收
|
||||
- [ ] 输出的用户故事数量符合要求(5-8条)且每条包含清晰的验收标准。
|
||||
- [ ] 提取的功能/非功能需求完整且去重,关键项未遗漏。
|
||||
- [ ] 优先级排序有逻辑依据(如基于用户价值/实现成本)。
|
||||
- [ ] 对模糊需求的拆解清晰,并给出可衡量的KPI或验收指标。
|
||||
|
||||
### 质量与可用性
|
||||
- [ ] 需求表达清晰、无二义性、适合直接用于任务分配或产出需求文档。
|
||||
- [ ] 附带的上下文引用或证据(若有)准确且可追溯。
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 工具准备:安装/配置工具,记录版本与依赖;若为Web服务,记录账号和API key(若有)。
|
||||
2. 输入:将产品简介、访谈要点和模糊需求分别作为独立输入,记录原始提示词。
|
||||
3. 生成:保存工具的原始输出(命名如 `task1-original-<tool>.md`)。
|
||||
4. 人工评估:人工对照验收标准逐项检查并记录修改点(保存为 `task1-final-<tool>.md`)。
|
||||
5. 记录耗时与交互次数(包括提示迭代次数)。
|
||||
|
||||
## 评估要点
|
||||
|
||||
- 完整性:是否覆盖了输入中的所有关键信息。
|
||||
- 正确性:提取的需求是否符合原始访谈事实/上下文。
|
||||
- 可执行性:用户故事和验收标准是否能直接指导开发或测试。
|
||||
- 鲁棒性:对于模糊或不完整输入,工具是否能给出合理补全或问 clarifying questions。
|
||||
- 易用性:提示设计的复杂度、需要多少轮人机交互才能得到满意结果。
|
||||
|
||||
## 量化指标(建议)
|
||||
|
||||
- 开发耗时:从输入到可用输出的总时间(分钟)。
|
||||
- 交互次数:提示/修改轮数。
|
||||
- 代码/文档修改量:为使输出可用所需人工修改行数(大致估算)。
|
||||
- 可用率:一次生成后无需修改即可使用的比例(%)。
|
||||
|
||||
## 输出文件清单(建议)
|
||||
|
||||
- `task1-original-<tool>.md` — 工具原始输出
|
||||
- `task1-final-<tool>.md` — 人工修订后的最终输出
|
||||
- `task1-eval-<tool>.json` — 量化评估数据
|
||||
|
||||
---
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
# Task 10: DevOps/CI-CD类(DevOps / CI-CD)
|
||||
|
||||
## 任务描述
|
||||
|
||||
使用AI工具生成或优化 CI/CD 流水线配置、部署脚本、容器化配置或监控告警策略。测试目标是验证生成配置的可用性、安全性与稳健性,及工具在处理多环境(dev/stage/prod)和回滚策略方面的能力。
|
||||
|
||||
### 子任务
|
||||
1. 基于一个简单的 Web 服务(Dockerized),生成 CI 配置(如 GitHub Actions、GitLab CI、Jenkinsfile)。
|
||||
2. 生成部署脚本或 IaC 片段(如 Docker Compose、Helm Chart、Kubernetes manifests)。
|
||||
3. 生成监控/告警建议(指标、阈值、告警策略)。
|
||||
|
||||
## 初始条件
|
||||
|
||||
- 提供服务仓库示例(含 Dockerfile 与简单运行脚本)。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] CI 配置能在目标平台上成功运行并构建镜像/运行测试。
|
||||
- [ ] 部署清单能在本地或集群正确部署服务并支持基本回滚。
|
||||
- [ ] 配置遵守最佳实践(最低权限、秘密管理、镜像签名建议等)。
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 将仓库与 CI/CD 目标平台信息提供给工具并保存生成配置文件。
|
||||
2. 在测试环境运行 CI(可使用本地 runner 或模拟平台)并记录构建/发布结果。
|
||||
3. 在本地/测试集群部署并验证服务健康与回滚流程。
|
||||
|
||||
## 评估要点
|
||||
|
||||
- 可用性:生成配置是否能直接使用或需少量修改。
|
||||
- 安全性:是否存在凭证泄露风险或不安全的权限设置。
|
||||
- 可恢复性:回滚和故障恢复策略是否清晰且可执行。
|
||||
|
||||
## 量化指标
|
||||
|
||||
- CI 通过率;部署成功率;平均修改行数(使配置可用)。
|
||||
|
||||
## 输出文件清单
|
||||
|
||||
- `task10-original-<tool>/` — 生成的 CI/CD 配置和脚本
|
||||
- `task10-eval-<tool>.md` — 运行记录与评估
|
||||
|
||||
---
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
# Task 11: 本地化大模型类(Local Models)
|
||||
|
||||
## 任务描述
|
||||
|
||||
评估可在本地部署、离线运行的开发辅助大模型(例如 CodeLlama、StarCoder 等)的安装、性能与适配性。测试目标包括模型的安装与运行难度、推理性能、上下文理解能力以及与开发工作流程(如代码补全、生成、审查)的整合能力。
|
||||
|
||||
### 子任务
|
||||
1. 在目标机器上部署模型并完成从启动到可调用的流程记录(含显存/依赖要求)。
|
||||
2. 使用模型完成代码补全、重构建议、生成小模块并评估质量与响应速度。
|
||||
3. 在无网络环境下评估模型的稳定性和一致性。
|
||||
|
||||
## 初始条件
|
||||
|
||||
- 提供目标机器的硬件配置(CPU、内存、GPU/显存)与操作系统。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 模型能在本地成功启动并接受请求。
|
||||
- [ ] 在合理延迟范围内(定义测试场景)完成典型代码任务,输出质量可接受。
|
||||
- [ ] 评估资源占用、吞吐与一致性(多次调用的一致性)。
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 记录安装步骤、所需依赖与时间,保存为 `task11-install-<tool>.md`。
|
||||
2. 执行标准用例(代码补全、重构、审查)并记录输出与耗时,保存原始输出。
|
||||
3. 在资源受限环境下(降低 batch 或 context 长度)重复测试并记录表现退化情况。
|
||||
|
||||
## 评估要点
|
||||
|
||||
- 启动/部署复杂度;推理延迟与吞吐;输出质量(准确性、合理性);模型大小与资源占用。
|
||||
|
||||
## 量化指标
|
||||
|
||||
- 启动时间;平均响应延迟(ms);每秒请求数(QPS);内存/显存使用量。
|
||||
|
||||
## 输出文件清单
|
||||
|
||||
- `task11-install-<tool>.md` — 安装与配置步骤
|
||||
- `task11-original-<tool>.md` — 模型输出与日志
|
||||
- `task11-eval-<tool>.md` — 性能与质量评估
|
||||
|
||||
---
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
# Task 12: 全流程集成类(Full-flow / End-to-end)
|
||||
|
||||
## 任务描述
|
||||
|
||||
评估覆盖软件工程全生命周期的端到端工具(从需求、设计、实现、测试到部署与监控)的能力。测试目标是验证工具在多阶段任务联动、上下文保持、输出一致性与自动化流水线构建方面的表现。
|
||||
|
||||
### 子任务
|
||||
1. 提供从产品需求到小型可部署服务的完整任务:需求 -> 架构 -> 代码生成 -> 测试生成 -> CI/CD 配置 -> 部署验证。
|
||||
2. 要求工具在多轮交互中保持上下文并推进每个阶段的产出,最终产出可运行的服务。
|
||||
3. 记录每个阶段的人工干预点与时间成本。
|
||||
|
||||
## 初始条件
|
||||
|
||||
- 提供统一的项目愿景、基本需求、目标平台与资源限制。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 工具能在合理的交互次数内完成端到端产出,且每个阶段产出达到可执行水平(需最低人工修改)。
|
||||
- [ ] 多阶段输出在语义上保持一致(例如:数据模型在架构、代码和测试中一致)。
|
||||
- [ ] 提供的 CI/CD 与部署产出能将服务部署到测试环境并完成基本验证。
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 定义端到端任务输入并启动工具,记录每一阶段的输入与输出。
|
||||
2. 按阶段验证产出:架构评审、代码运行、测试通过、CI 构建与部署验证。
|
||||
3. 汇总每阶段的修改记录、交互次数与耗时,生成最终评估报告。
|
||||
|
||||
## 评估要点
|
||||
|
||||
- 上下文保持能力:跨阶段信息传递与一致性。
|
||||
- 自动化程度:从需求到部署的自动化比率(人工修改量/总工作量)。
|
||||
- 成果可用性:端到端最终产出是否能被直接使用或需大量手工介入。
|
||||
|
||||
## 量化指标
|
||||
|
||||
- 端到端完成时间;阶段间一致性问题数;人工修改行数和时间。
|
||||
|
||||
## 输出文件清单
|
||||
|
||||
- `task12-original-<tool>/` — 各阶段原始输出集合
|
||||
- `task12-final-<tool>/` — 最终可用产出
|
||||
- `task12-eval-<tool>.md` — 端到端评估报告
|
||||
|
||||
---
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
# Task 2: 架构设计类(Architecture Design)
|
||||
|
||||
## 任务描述
|
||||
|
||||
使用AI工具辅助完成中小型系统的架构设计,包括技术选型、模块划分、接口定义、数据流和部署拓扑。测试目标是评估工具在生成合理架构方案、权衡备选方案、生成架构图(或描述)和提供设计说明方面的能力。
|
||||
|
||||
### 子任务
|
||||
1. 给定需求(500-1000字),生成系统架构草案(模块列表、接口契约、数据流)。
|
||||
2. 输出两种可选设计,并说明各自优缺点与适用场景。
|
||||
3. 生成简要部署拓扑图说明(可用 ASCII/PlantUML/mermaid 或导出图像的步骤)。
|
||||
|
||||
## 初始条件
|
||||
|
||||
- 输入:需求文档、非功能性要求(如并发、可用性、成本限制)。
|
||||
- 环境:若工具可生成 PlantUML/Mermaid 代码,准备对应渲染工具。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 模块划分合理、职责单一且高内聚低耦合。
|
||||
- [ ] 技术选型给出充分理由并考虑可维护性与成本。
|
||||
- [ ] 提供的部署拓扑满足提出的非功能性需求(如高可用、可扩展)。
|
||||
- [ ] 可导出的架构图可以用现有渲染器呈现(或给出明确渲染步骤)。
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 准备需求与约束输入并记录原始提示。
|
||||
2. 让工具生成架构文档与图示代码,保存原始输出。
|
||||
3. 人工评审架构:校验模块边界、接口、数据流和冗余/单点故障问题。
|
||||
4. 若工具提供多方案,评估权衡分析质量并记录选择理由。
|
||||
|
||||
## 评估要点
|
||||
|
||||
- 可行性:设计是否可实际实现并部署。
|
||||
- 完整性:是否覆盖关键组件(数据库、缓存、消息队列、API 网关等)。
|
||||
- 明确性:接口契约和数据格式是否足够清晰。
|
||||
- 可验证性:是否给出可衡量的非功能指标与验证方法。
|
||||
|
||||
## 量化指标(建议)
|
||||
|
||||
- 设计输出字数/页数;迭代次数;人工修改量。
|
||||
- 风险识别数(工具识别出的潜在风险条目数)。
|
||||
|
||||
## 输出文件清单
|
||||
|
||||
- `task2-original-<tool>.md` — 原始架构输出
|
||||
- `task2-diagram-<tool>.puml` — PlantUML/Mermaid 源(如有)
|
||||
- `task2-eval-<tool>.md` — 评审与修改记录
|
||||
|
||||
---
|
||||
|
|
@ -1,203 +0,0 @@
|
|||
# Task 2: React组件调试(中等任务)
|
||||
|
||||
## 任务描述
|
||||
|
||||
给定一个包含逻辑bug的React表单组件,使用AI工具辅助定位和修复所有bug。
|
||||
|
||||
### 原始代码
|
||||
|
||||
提供的React组件包含以下已知问题:
|
||||
|
||||
1. **表单验证逻辑错误**:邮箱验证正则表达式有误
|
||||
2. **状态更新问题**:密码确认字段的状态更新不正确
|
||||
3. **表单提交逻辑错误**:未正确阻止默认提交行为
|
||||
|
||||
### 修复目标
|
||||
|
||||
- 定位并修复所有bug
|
||||
- 确保表单验证逻辑正确
|
||||
- 确保表单提交逻辑正确
|
||||
- 代码符合React最佳实践
|
||||
|
||||
## 初始条件
|
||||
|
||||
- **初始代码**:提供包含bug的React组件代码
|
||||
- **项目类型**:React 18 + TypeScript项目
|
||||
- **框架**:React 18.x
|
||||
- **Node.js版本**:18.17.0+
|
||||
- **构建工具**:Vite或Create React App
|
||||
|
||||
### 原始代码(包含bug)
|
||||
|
||||
```tsx
|
||||
import React, { useState } from 'react';
|
||||
|
||||
interface FormData {
|
||||
email: string;
|
||||
password: string;
|
||||
confirmPassword: string;
|
||||
}
|
||||
|
||||
const SignupForm: React.FC = () => {
|
||||
const [formData, setFormData] = useState<FormData>({
|
||||
email: '',
|
||||
password: '',
|
||||
confirmPassword: ''
|
||||
});
|
||||
const [errors, setErrors] = useState<Partial<FormData>>({});
|
||||
|
||||
const validateEmail = (email: string): boolean => {
|
||||
// Bug 1: 邮箱验证正则表达式有误
|
||||
const emailRegex = /^[^\s@]+@[^\s@]+.[^\s@]+$/;
|
||||
return emailRegex.test(email);
|
||||
};
|
||||
|
||||
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
const { name, value } = e.target;
|
||||
|
||||
// Bug 2: 状态更新不正确,未使用函数式更新
|
||||
setFormData({
|
||||
...formData,
|
||||
[name]: value
|
||||
});
|
||||
};
|
||||
|
||||
const handleSubmit = (e: React.FormEvent) => {
|
||||
// Bug 3: 未阻止默认提交行为
|
||||
e.preventDefault();
|
||||
|
||||
const newErrors: Partial<FormData> = {};
|
||||
|
||||
if (!formData.email) {
|
||||
newErrors.email = '邮箱不能为空';
|
||||
} else if (!validateEmail(formData.email)) {
|
||||
newErrors.email = '邮箱格式不正确';
|
||||
}
|
||||
|
||||
if (!formData.password) {
|
||||
newErrors.password = '密码不能为空';
|
||||
} else if (formData.password.length < 8) {
|
||||
newErrors.password = '密码长度至少8位';
|
||||
}
|
||||
|
||||
if (formData.password !== formData.confirmPassword) {
|
||||
newErrors.confirmPassword = '两次输入的密码不一致';
|
||||
}
|
||||
|
||||
if (Object.keys(newErrors).length === 0) {
|
||||
console.log('表单提交成功', formData);
|
||||
// 实际提交逻辑
|
||||
} else {
|
||||
setErrors(newErrors);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<form onSubmit={handleSubmit}>
|
||||
<div>
|
||||
<label>邮箱:</label>
|
||||
<input
|
||||
type="text"
|
||||
name="email"
|
||||
value={formData.email}
|
||||
onChange={handleChange}
|
||||
/>
|
||||
{errors.email && <span>{errors.email}</span>}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label>密码:</label>
|
||||
<input
|
||||
type="password"
|
||||
name="password"
|
||||
value={formData.password}
|
||||
onChange={handleChange}
|
||||
/>
|
||||
{errors.password && <span>{errors.password}</span>}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label>确认密码:</label>
|
||||
<input
|
||||
type="password"
|
||||
name="confirmPassword"
|
||||
value={formData.confirmPassword}
|
||||
onChange={handleChange}
|
||||
/>
|
||||
{errors.confirmPassword && <span>{errors.confirmPassword}</span>}
|
||||
</div>
|
||||
|
||||
<button type="submit">注册</button>
|
||||
</form>
|
||||
);
|
||||
};
|
||||
|
||||
export default SignupForm;
|
||||
```
|
||||
|
||||
### Bug说明
|
||||
|
||||
1. **Bug 1**: 邮箱验证正则表达式缺少转义字符,`/^[^\s@]+@[^\s@]+.[^\s@]+$/` 应改为 `/^[^\s@]+@[^\s@]+\.[^\s@]+$/`(点号需要转义)
|
||||
|
||||
2. **Bug 2**: `handleChange`函数中的状态更新看起来没问题,但实际可能存在闭包问题。更好的做法是使用函数式更新。
|
||||
|
||||
3. **Bug 3**: `handleSubmit`函数中虽然调用了`e.preventDefault()`,但如果AI工具识别不出这个bug,说明工具可能遗漏了此检查。
|
||||
|
||||
## 验收标准
|
||||
|
||||
### 功能验收
|
||||
|
||||
- [ ] 邮箱验证逻辑正确(正确识别有效的邮箱格式)
|
||||
- [ ] 表单状态更新正确(所有字段都能正确更新)
|
||||
- [ ] 表单提交逻辑正确(阻止默认行为,正确验证和提交)
|
||||
- [ ] 错误提示正确显示
|
||||
|
||||
### 代码质量
|
||||
|
||||
- [ ] 代码符合React最佳实践
|
||||
- [ ] 类型定义正确(TypeScript)
|
||||
- [ ] 代码结构清晰,可读性好
|
||||
|
||||
### 测试验收
|
||||
|
||||
- [ ] 使用测试工具(如React Testing Library)验证组件功能
|
||||
- [ ] 所有边界条件处理正确(如:空值、无效格式、不匹配等)
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. **代码分析**
|
||||
- 使用工具分析提供的代码
|
||||
- 记录工具识别出的问题
|
||||
|
||||
2. **Bug修复**
|
||||
- 使用工具生成修复方案
|
||||
- 记录工具生成的修复代码
|
||||
- 记录人工调整的点和原因
|
||||
|
||||
3. **验证测试**
|
||||
- 运行修复后的组件
|
||||
- 验证所有功能正确
|
||||
- 记录测试结果
|
||||
|
||||
## 评估要点
|
||||
|
||||
### Bug定位能力
|
||||
|
||||
- **准确性**:是否能准确识别所有bug
|
||||
- **详细程度**:是否提供详细的bug说明和位置
|
||||
|
||||
### 修复方案质量
|
||||
|
||||
- **正确性**:修复方案是否正确
|
||||
- **完整性**:是否修复了所有bug
|
||||
- **规范性**:修复后的代码是否符合最佳实践
|
||||
|
||||
### 工具使用体验
|
||||
|
||||
- **响应速度**:工具分析代码的速度
|
||||
- **交互便利性**:需要多少次交互才能完成修复
|
||||
|
||||
---
|
||||
|
||||
**注意**:此任务评估工具的调试和问题定位能力。原始代码中可能包含更多细微的bug,鼓励工具识别出所有问题。
|
||||
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
# Task 3: 代码生成类(Code Generation)
|
||||
|
||||
## 任务描述
|
||||
|
||||
使用AI代码生成工具从需求或接口规范生成可运行代码。测试目标包括代码正确性、可运行性、代码风格、测试覆盖以及生成代码与注释的匹配度。
|
||||
|
||||
### 子任务
|
||||
1. 根据简短接口规范(例如:实现一个用户管理的 CRUD API)生成服务端代码(示例语言:Python + FastAPI)。
|
||||
2. 生成对应的 Pydantic/DTO 模型和数据库模型(如 SQLAlchemy)。
|
||||
3. 生成至少 3 个单元测试用例以覆盖核心逻辑。
|
||||
|
||||
## 初始条件
|
||||
|
||||
- 提供接口规范文档(`openapi` 或文字描述),目标语言和框架说明。
|
||||
- 环境:本地 Python 环境或容器方便运行生成代码并执行测试。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 生成代码能在本地成功运行并通过核心用例(按项目提供的简单 run 指令)。
|
||||
- [ ] 代码遵循目标语言的常见风格(PEP8 等)且模块划分合理。
|
||||
- [ ] 安全性检查:无明显的注入/明文密码存储等安全问题。
|
||||
- [ ] 生成的测试能自动执行并覆盖核心路径。
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 将接口规范和上下文输入工具,保存原始生成的所有文件为 `task3-original-<tool>/`。
|
||||
2. 在隔离环境中安装依赖并运行项目(记录运行命令和可能的改动)。
|
||||
3. 记录并修复生成代码的错误(如果需要),保存修复说明与最后可运行版本 `task3-final-<tool>/`。
|
||||
4. 运行测试并记录覆盖率与失败情况。
|
||||
|
||||
## 评估要点
|
||||
|
||||
- 正确性:实现是否满足规范(端到端请求/响应示例)。
|
||||
- 可维护性:代码可读性、注释、函数职责是否清晰。
|
||||
- 生成成本:需要人工修改的行数与类别(语法、业务逻辑、配置)。
|
||||
- 测试质量:自动生成测试是否能稳定验证核心逻辑,是否存在伪造断言。
|
||||
|
||||
## 量化指标
|
||||
|
||||
- 运行成功率:生成代码第一次能运行的概率(%)。
|
||||
- 平均修改行数:使代码可运行需修改的行数。
|
||||
- 单元测试覆盖率(%)
|
||||
|
||||
## 输出文件清单
|
||||
|
||||
- `task3-original-<tool>/` — 工具原始代码输出目录
|
||||
- `task3-final-<tool>/` — 修改并可运行的最终代码
|
||||
- `task3-eval-<tool>.md` — 变更记录与评估数据
|
||||
|
||||
---
|
||||
|
|
@ -1,232 +0,0 @@
|
|||
# Task 3: Legacy代码重构(复杂任务)
|
||||
|
||||
## 任务描述
|
||||
|
||||
给定一段Python legacy代码,使用AI工具辅助重构,要求:
|
||||
|
||||
1. 提升代码可读性
|
||||
2. 修复潜在的安全漏洞
|
||||
3. 优化性能和结构
|
||||
4. 添加适当的错误处理
|
||||
5. 符合PEP8规范和现代Python最佳实践
|
||||
|
||||
## 初始条件
|
||||
|
||||
- **初始代码**:提供legacy代码文件
|
||||
- **项目类型**:Python项目
|
||||
- **Python版本**:3.10+
|
||||
- **目标框架**:保持原有功能,但提升代码质量
|
||||
|
||||
### 原始代码(Legacy)
|
||||
|
||||
```python
|
||||
import os
|
||||
import sqlite3
|
||||
import hashlib
|
||||
|
||||
def process_user_data(username, password, email):
|
||||
conn = sqlite3.connect('users.db')
|
||||
cursor = conn.cursor()
|
||||
|
||||
# 检查用户是否已存在
|
||||
cursor.execute("SELECT * FROM users WHERE username = '" + username + "'")
|
||||
existing_user = cursor.fetchone()
|
||||
|
||||
if existing_user:
|
||||
return {"status": "error", "message": "用户已存在"}
|
||||
|
||||
# 简单的密码hash(不安全)
|
||||
password_hash = hashlib.md5(password.encode()).hexdigest()
|
||||
|
||||
# 插入新用户
|
||||
try:
|
||||
cursor.execute("INSERT INTO users (username, password, email) VALUES ('" + username + "', '" + password_hash + "', '" + email + "')")
|
||||
conn.commit()
|
||||
|
||||
# 获取用户ID
|
||||
cursor.execute("SELECT id FROM users WHERE username = '" + username + "'")
|
||||
user = cursor.fetchone()
|
||||
|
||||
if user:
|
||||
user_id = user[0]
|
||||
# 创建用户目录
|
||||
user_dir = f"/data/users/{user_id}"
|
||||
os.makedirs(user_dir, exist_ok=True)
|
||||
|
||||
# 创建配置文件
|
||||
config_file = f"{user_dir}/config.txt"
|
||||
with open(config_file, 'w') as f:
|
||||
f.write(f"user_id={user_id}\nusername={username}\nemail={email}")
|
||||
|
||||
return {"status": "success", "user_id": user_id}
|
||||
else:
|
||||
return {"status": "error", "message": "创建用户失败"}
|
||||
except Exception as e:
|
||||
return {"status": "error", "message": str(e)}
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
def get_user_info(user_id):
|
||||
conn = sqlite3.connect('users.db')
|
||||
cursor = conn.cursor()
|
||||
|
||||
cursor.execute("SELECT * FROM users WHERE id = " + str(user_id))
|
||||
user = cursor.fetchone()
|
||||
|
||||
if user:
|
||||
return {
|
||||
"id": user[0],
|
||||
"username": user[1],
|
||||
"email": user[3]
|
||||
}
|
||||
else:
|
||||
return None
|
||||
conn.close()
|
||||
|
||||
def delete_user(user_id):
|
||||
conn = sqlite3.connect('users.db')
|
||||
cursor = conn.cursor()
|
||||
|
||||
try:
|
||||
# 删除用户目录
|
||||
user_dir = f"/data/users/{user_id}"
|
||||
if os.path.exists(user_dir):
|
||||
import shutil
|
||||
shutil.rmtree(user_dir)
|
||||
|
||||
# 删除数据库记录
|
||||
cursor.execute("DELETE FROM users WHERE id = " + str(user_id))
|
||||
conn.commit()
|
||||
|
||||
return {"status": "success"}
|
||||
except Exception as e:
|
||||
return {"status": "error", "message": str(e)}
|
||||
finally:
|
||||
conn.close()
|
||||
```
|
||||
|
||||
### 代码问题分析
|
||||
|
||||
1. **SQL注入漏洞**:使用字符串拼接构造SQL查询
|
||||
2. **不安全的密码哈希**:使用MD5(已不安全)
|
||||
3. **硬编码路径**:`/data/users/`硬编码
|
||||
4. **资源泄漏**:数据库连接可能未正确关闭
|
||||
5. **错误处理不充分**:异常处理过于宽泛
|
||||
6. **代码结构问题**:函数职责不单一,缺少类型提示
|
||||
7. **魔法值**:硬编码的字符串和路径
|
||||
8. **代码重复**:数据库连接逻辑重复
|
||||
|
||||
## 验收标准
|
||||
|
||||
### 安全性
|
||||
|
||||
- [ ] 消除SQL注入漏洞(使用参数化查询)
|
||||
- [ ] 使用安全的密码哈希算法(bcrypt或argon2)
|
||||
- [ ] 输入验证和清理
|
||||
|
||||
### 代码质量
|
||||
|
||||
- [ ] 符合PEP8规范
|
||||
- [ ] 添加类型提示
|
||||
- [ ] 函数职责单一,代码结构清晰
|
||||
- [ ] 适当的注释和文档字符串
|
||||
|
||||
### 可维护性
|
||||
|
||||
- [ ] 消除硬编码值(使用配置或常量)
|
||||
- [ ] 消除代码重复(提取公共函数)
|
||||
- [ ] 改进错误处理(具体的异常类型)
|
||||
|
||||
### 性能
|
||||
|
||||
- [ ] 优化数据库查询(如适用)
|
||||
- [ ] 资源管理正确(使用上下文管理器)
|
||||
|
||||
### 功能完整性
|
||||
|
||||
- [ ] 保持原有功能不变
|
||||
- [ ] 所有边界条件处理正确
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. **代码分析**
|
||||
- 使用工具分析legacy代码
|
||||
- 记录工具识别出的问题
|
||||
|
||||
2. **重构方案**
|
||||
- 使用工具生成重构方案
|
||||
- 记录工具生成的重构代码
|
||||
- 记录人工调整的点和原因
|
||||
|
||||
3. **验证测试**
|
||||
- 运行重构后的代码
|
||||
- 验证功能正确性
|
||||
- 进行安全测试(如SQL注入测试)
|
||||
- 记录测试结果
|
||||
|
||||
## 评估要点
|
||||
|
||||
### 问题识别能力
|
||||
|
||||
- **全面性**:是否能识别出所有问题(安全、性能、结构等)
|
||||
- **优先级**:是否能正确评估问题的严重性
|
||||
|
||||
### 重构方案质量
|
||||
|
||||
- **正确性**:重构方案是否正确且安全
|
||||
- **完整性**:是否解决了所有问题
|
||||
- **平衡性**:是否在代码质量和实用性之间取得平衡
|
||||
|
||||
### 代码质量提升
|
||||
|
||||
- **可读性**:重构后的代码是否更易读
|
||||
- **可维护性**:代码结构是否更易维护
|
||||
- **规范性**:是否符合现代Python最佳实践
|
||||
|
||||
### 工具使用体验
|
||||
|
||||
- **响应速度**:工具分析代码的速度
|
||||
- **交互便利性**:需要多少次交互才能完成重构
|
||||
|
||||
## 期望的重构方向
|
||||
|
||||
### 安全改进
|
||||
|
||||
```python
|
||||
# 使用参数化查询
|
||||
cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
|
||||
|
||||
# 使用安全的密码哈希
|
||||
import bcrypt
|
||||
password_hash = bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode()
|
||||
```
|
||||
|
||||
### 结构改进
|
||||
|
||||
```python
|
||||
# 使用数据库上下文管理器
|
||||
from contextlib import contextmanager
|
||||
|
||||
@contextmanager
|
||||
def get_db_connection():
|
||||
conn = sqlite3.connect('users.db')
|
||||
try:
|
||||
yield conn
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
# 使用配置类
|
||||
class Config:
|
||||
USER_DATA_DIR = os.getenv('USER_DATA_DIR', '/data/users')
|
||||
```
|
||||
|
||||
### 代码组织
|
||||
|
||||
- 分离数据库操作和业务逻辑
|
||||
- 使用数据访问层(DAO)模式
|
||||
- 添加适当的异常类型
|
||||
|
||||
---
|
||||
|
||||
**注意**:此任务评估工具在代码重构、安全修复和代码质量提升方面的综合能力。重构后的代码应该保持功能完整性的同时显著提升代码质量。
|
||||
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
# Task 4: 调试排障类(Debugging)
|
||||
|
||||
## 任务描述
|
||||
|
||||
使用AI调试工具定位并修复一段存在错误或性能问题的代码。测试目标是评估工具发现 bug 的准确性、提供修复建议的可行性以及是否能生成复现步骤和自动修复补丁。
|
||||
|
||||
### 子任务
|
||||
1. 提供含有 3-5 个不同类型 bug(逻辑错误、边界条件、并发问题、性能瓶颈)的代码片段或小项目。
|
||||
2. 要求工具给出每个 bug 的定位、原因分析、复现步骤和修复建议/补丁。
|
||||
3. 验证工具是否能生成测试或重现脚本来证明修复有效。
|
||||
|
||||
## 初始条件
|
||||
|
||||
- 提供运行环境与依赖说明,包含复现输入数据和预期输出。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 工具能准确定位至少 70% 的已知 bug(按数量计)。
|
||||
- [ ] 提供的修复建议能在本地按说明复现并消除问题。
|
||||
- [ ] 工具能给出清晰的复现步骤或自动化脚本。
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 将含 bug 的代码与测试用例交付给工具,记录提示和工具输出。
|
||||
2. 应用工具建议的修复(或按补丁),运行测试验证问题是否解决。
|
||||
3. 记录未解决或错误修复导致的新问题。
|
||||
|
||||
## 评估要点
|
||||
|
||||
- 定位准确率:工具正确指向 bug 的比率。
|
||||
- 修复可行性:修复建议是否合乎逻辑且无副作用。
|
||||
- 自动化能力:是否能生成复现/测试脚本以自动验证修复。
|
||||
- 解释性:工具是否能提供充分的错误根因分析而非仅给出补丁。
|
||||
|
||||
## 量化指标
|
||||
|
||||
- Bug 定位率(%);修复有效率(修复后通过测试的比例);人工干预步骤数。
|
||||
|
||||
## 输出文件清单
|
||||
|
||||
- `task4-original-<tool>.md` — 原始诊断输出
|
||||
- `task4-patch-<tool>.diff` — 建议补丁(如有)
|
||||
- `task4-eval-<tool>.md` — 修复记录与验证结果
|
||||
|
||||
---
|
||||
|
|
@ -1,163 +0,0 @@
|
|||
# Task 4: 需求分析(高级任务)
|
||||
|
||||
## 任务描述
|
||||
|
||||
给定一个简短的业务需求描述,使用AI工具辅助生成:
|
||||
|
||||
1. **需求文档**:结构化的需求规格说明
|
||||
2. **用户故事**:用户故事和验收标准
|
||||
3. **技术方案**:初步的技术选型和架构建议
|
||||
4. **功能列表**:详细的功能点列表
|
||||
|
||||
### 业务需求描述
|
||||
|
||||
```
|
||||
我们需要开发一个在线图书管理系统,用于图书馆管理图书的借阅和归还。
|
||||
|
||||
主要功能包括:
|
||||
- 图书信息管理(添加、编辑、删除、查询)
|
||||
- 读者信息管理
|
||||
- 图书借阅和归还
|
||||
- 借阅记录查询
|
||||
- 逾期提醒
|
||||
|
||||
系统需要支持多用户并发操作,数据需要持久化存储。
|
||||
```
|
||||
|
||||
## 初始条件
|
||||
|
||||
- **初始需求**:提供简短的业务需求描述
|
||||
- **项目类型**:Web应用系统
|
||||
- **目标输出**:需求文档、用户故事、技术方案、功能列表
|
||||
|
||||
## 验收标准
|
||||
|
||||
### 需求文档
|
||||
|
||||
- [ ] 需求描述清晰完整
|
||||
- [ ] 功能需求和非功能需求都有涵盖
|
||||
- [ ] 需求优先级明确
|
||||
- [ ] 需求可追溯和可验证
|
||||
|
||||
### 用户故事
|
||||
|
||||
- [ ] 用户故事格式规范(As a... I want... So that...)
|
||||
- [ ] 每个用户故事都有验收标准
|
||||
- [ ] 用户故事粒度合适
|
||||
- [ ] 覆盖主要用户角色
|
||||
|
||||
### 技术方案
|
||||
|
||||
- [ ] 技术选型合理
|
||||
- [ ] 架构设计思路清晰
|
||||
- [ ] 考虑了可扩展性和可维护性
|
||||
- [ ] 考虑了安全性要求
|
||||
|
||||
### 功能列表
|
||||
|
||||
- [ ] 功能点完整,覆盖所有业务需求
|
||||
- [ ] 功能点粒度合适
|
||||
- [ ] 功能点之间有逻辑关系
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. **需求输入**
|
||||
- 将业务需求描述输入工具
|
||||
- 记录输入内容
|
||||
|
||||
2. **工具分析**
|
||||
- 使用工具分析需求
|
||||
- 生成需求文档、用户故事、技术方案、功能列表
|
||||
- 记录工具生成的内容
|
||||
|
||||
3. **结果评估**
|
||||
- 评估生成内容的质量
|
||||
- 记录评估结果
|
||||
|
||||
## 评估要点
|
||||
|
||||
### 需求分析质量
|
||||
|
||||
- **完整性**:是否覆盖所有业务需求
|
||||
- **准确性**:需求理解是否准确
|
||||
- **结构化**:输出是否结构化和规范化
|
||||
|
||||
### 用户故事质量
|
||||
|
||||
- **规范性**:用户故事格式是否规范
|
||||
- **完整性**:是否包含角色、目标、价值
|
||||
- **可测试性**:验收标准是否清晰可测试
|
||||
|
||||
### 技术方案质量
|
||||
|
||||
- **合理性**:技术选型是否合理
|
||||
- **可行性**:方案是否可行
|
||||
- **全面性**:是否考虑了性能、安全、可扩展性等
|
||||
|
||||
### 工具使用体验
|
||||
|
||||
- **响应速度**:工具生成内容的速度
|
||||
- **交互便利性**:需要多少次交互才能生成完整内容
|
||||
- **输出格式**:生成内容的格式是否易读
|
||||
|
||||
## 期望输出结构
|
||||
|
||||
### 需求文档结构
|
||||
|
||||
```markdown
|
||||
# 图书管理系统需求文档
|
||||
|
||||
## 1. 项目概述
|
||||
...
|
||||
|
||||
## 2. 功能需求
|
||||
### 2.1 图书信息管理
|
||||
...
|
||||
|
||||
## 3. 非功能需求
|
||||
### 3.1 性能要求
|
||||
...
|
||||
|
||||
## 4. 约束条件
|
||||
...
|
||||
```
|
||||
|
||||
### 用户故事示例
|
||||
|
||||
```markdown
|
||||
## 用户故事1:图书管理员添加图书
|
||||
|
||||
**作为** 图书管理员
|
||||
**我想要** 添加新图书的信息
|
||||
**以便于** 系统中的图书库存可以被正确管理
|
||||
|
||||
**验收标准**:
|
||||
- 可以输入图书的基本信息(书名、作者、ISBN等)
|
||||
- 系统验证输入信息的有效性
|
||||
- 成功添加后显示确认信息
|
||||
```
|
||||
|
||||
### 技术方案示例
|
||||
|
||||
```markdown
|
||||
## 技术方案
|
||||
|
||||
### 前端
|
||||
- 框架:React 18 + TypeScript
|
||||
- UI库:Ant Design
|
||||
- 状态管理:Redux Toolkit
|
||||
|
||||
### 后端
|
||||
- 框架:FastAPI (Python)
|
||||
- 数据库:PostgreSQL
|
||||
- ORM:SQLAlchemy
|
||||
|
||||
### 部署
|
||||
- 容器化:Docker
|
||||
- 云服务:AWS/Azure
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**注意**:此任务评估工具在需求分析和文档生成方面的能力。生成的内容应该结构清晰、逻辑完整、符合行业标准。
|
||||
|
||||
|
|
@ -1,190 +0,0 @@
|
|||
# Task 5: 微服务架构设计(高级任务)
|
||||
|
||||
## 任务描述
|
||||
|
||||
给定一个业务场景,使用AI工具辅助设计微服务架构,要求:
|
||||
|
||||
1. **服务拆分**:识别微服务边界,提出服务拆分方案
|
||||
2. **架构设计**:设计整体架构图(文字描述或Mermaid图)
|
||||
3. **技术选型**:为每个服务推荐合适的技术栈
|
||||
4. **接口设计**:定义服务间的API接口
|
||||
5. **数据设计**:设计数据存储方案(包括数据库选型和数据一致性方案)
|
||||
6. **部署方案**:设计部署架构和DevOps方案
|
||||
|
||||
### 业务场景
|
||||
|
||||
```
|
||||
设计一个电商平台的微服务架构。
|
||||
|
||||
业务需求包括:
|
||||
- 用户服务:用户注册、登录、个人信息管理
|
||||
- 商品服务:商品信息管理、商品搜索、商品分类
|
||||
- 订单服务:订单创建、订单查询、订单状态管理
|
||||
- 支付服务:支付处理、支付回调、退款处理
|
||||
- 库存服务:库存管理、库存扣减、库存查询
|
||||
- 推荐服务:基于用户行为的商品推荐
|
||||
|
||||
系统要求:
|
||||
- 支持高并发(日活用户100万+)
|
||||
- 服务间需要解耦
|
||||
- 需要保证数据一致性
|
||||
- 需要支持水平扩展
|
||||
```
|
||||
|
||||
## 初始条件
|
||||
|
||||
- **初始场景**:提供业务场景描述
|
||||
- **项目类型**:微服务架构设计
|
||||
- **目标输出**:架构设计方案、服务拆分方案、技术选型、接口设计、数据设计、部署方案
|
||||
|
||||
## 验收标准
|
||||
|
||||
### 服务拆分
|
||||
|
||||
- [ ] 服务边界清晰,职责单一
|
||||
- [ ] 服务粒度合适(不过粗也不过细)
|
||||
- [ ] 服务间耦合度低
|
||||
- [ ] 拆分理由明确
|
||||
|
||||
### 架构设计
|
||||
|
||||
- [ ] 架构图清晰易懂
|
||||
- [ ] 包含主要组件和服务
|
||||
- [ ] 考虑了服务间通信方式
|
||||
- [ ] 考虑了服务治理(服务发现、配置管理等)
|
||||
|
||||
### 技术选型
|
||||
|
||||
- [ ] 每个服务的技术选型合理
|
||||
- [ ] 考虑了技术栈的统一性和多样性平衡
|
||||
- [ ] 考虑了团队技术栈熟悉度
|
||||
- [ ] 考虑了性能和成本
|
||||
|
||||
### 接口设计
|
||||
|
||||
- [ ] API接口定义清晰
|
||||
- [ ] 接口遵循RESTful或gRPC规范
|
||||
- [ ] 接口版本管理方案
|
||||
- [ ] 接口文档规范
|
||||
|
||||
### 数据设计
|
||||
|
||||
- [ ] 数据存储方案合理(数据库选型)
|
||||
- [ ] 考虑了数据一致性问题(分布式事务或最终一致性)
|
||||
- [ ] 考虑了数据同步方案
|
||||
- [ ] 考虑了数据安全性
|
||||
|
||||
### 部署方案
|
||||
|
||||
- [ ] 部署架构清晰(容器化、K8s等)
|
||||
- [ ] 考虑了高可用和容错
|
||||
- [ ] DevOps方案完整(CI/CD、监控、日志等)
|
||||
- [ ] 考虑了扩展性
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. **场景输入**
|
||||
- 将业务场景描述输入工具
|
||||
- 记录输入内容
|
||||
|
||||
2. **工具设计**
|
||||
- 使用工具设计微服务架构
|
||||
- 生成架构方案、服务拆分、技术选型等
|
||||
- 记录工具生成的内容
|
||||
|
||||
3. **结果评估**
|
||||
- 评估生成方案的质量
|
||||
- 记录评估结果
|
||||
|
||||
## 评估要点
|
||||
|
||||
### 架构设计质量
|
||||
|
||||
- **合理性**:架构设计是否合理
|
||||
- **完整性**:是否覆盖所有关键方面
|
||||
- **可扩展性**:是否考虑了扩展性
|
||||
- **可维护性**:架构是否易于维护
|
||||
|
||||
### 服务拆分质量
|
||||
|
||||
- **边界清晰**:服务边界是否清晰
|
||||
- **职责单一**:每个服务职责是否单一
|
||||
- **耦合度低**:服务间耦合度是否低
|
||||
|
||||
### 技术方案质量
|
||||
|
||||
- **技术选型**:技术选型是否合理
|
||||
- **可行性**:方案是否可行
|
||||
- **全面性**:是否考虑了性能、安全、成本等
|
||||
|
||||
### 工具使用体验
|
||||
|
||||
- **响应速度**:工具生成方案的速度
|
||||
- **交互便利性**:需要多少次交互才能生成完整方案
|
||||
- **输出格式**:生成方案的格式是否易读
|
||||
|
||||
## 期望输出结构
|
||||
|
||||
### 架构设计文档结构
|
||||
|
||||
```markdown
|
||||
# 电商平台微服务架构设计
|
||||
|
||||
## 1. 架构概述
|
||||
...
|
||||
|
||||
## 2. 服务拆分方案
|
||||
### 2.1 用户服务
|
||||
- 职责:...
|
||||
- 技术栈:...
|
||||
- 接口:...
|
||||
|
||||
## 3. 整体架构图
|
||||
[Mermaid图或文字描述]
|
||||
|
||||
## 4. 技术选型
|
||||
- 用户服务:Spring Boot + MySQL
|
||||
- 商品服务:Node.js + MongoDB
|
||||
...
|
||||
|
||||
## 5. 接口设计
|
||||
### 5.1 用户服务接口
|
||||
- POST /api/users/register
|
||||
- POST /api/users/login
|
||||
...
|
||||
|
||||
## 6. 数据设计
|
||||
### 6.1 数据库选型
|
||||
### 6.2 数据一致性方案
|
||||
|
||||
## 7. 部署方案
|
||||
### 7.1 容器化方案
|
||||
### 7.2 DevOps方案
|
||||
```
|
||||
|
||||
### 架构图示例(Mermaid)
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
Client[客户端]
|
||||
Gateway[API网关]
|
||||
UserSvc[用户服务]
|
||||
ProductSvc[商品服务]
|
||||
OrderSvc[订单服务]
|
||||
PaymentSvc[支付服务]
|
||||
StockSvc[库存服务]
|
||||
RecSvc[推荐服务]
|
||||
|
||||
Client --> Gateway
|
||||
Gateway --> UserSvc
|
||||
Gateway --> ProductSvc
|
||||
Gateway --> OrderSvc
|
||||
OrderSvc --> PaymentSvc
|
||||
OrderSvc --> StockSvc
|
||||
Gateway --> RecSvc
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**注意**:此任务评估工具在软件架构设计方面的能力。生成的架构方案应该符合微服务最佳实践,考虑实际业务需求和技术约束。
|
||||
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
# Task 5: 代码重构类(Refactoring)
|
||||
|
||||
## 任务描述
|
||||
|
||||
使用AI重构工具对一段“遗留”代码进行重构,目标包括提高可读性、减少重复、提升性能或降低复杂度。测试目标是评估重构建议的正确性、保持行为不变性(回归测试通过)以及重构后的代码质量提升程度。
|
||||
|
||||
### 子任务
|
||||
1. 提供一份含复杂/重复逻辑的代码(例如:大型函数、多处复制粘贴逻辑、低内聚模块)。
|
||||
2. 要求工具给出重构建议并生成重构后的代码补丁。
|
||||
3. 运行回归测试并比较重构前后的性能与可维护性指标。
|
||||
|
||||
## 初始条件
|
||||
|
||||
- 提供完整项目、依赖和现有测试用例(回归测试至少 80% 覆盖关键路径)。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 重构前后功能保持一致(所有回归测试通过)。
|
||||
- [ ] 代码复杂度指标(如圈复杂度)显著下降。
|
||||
- [ ] 重构后代码更易读(人工评分或 linters 指标)。
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 记录重构前的基线指标:测试通过率、代码行数、圈复杂度、性能基准。
|
||||
2. 让工具生成重构补丁并应用,保存为 `task5-patched-<tool>/`。
|
||||
3. 运行回归测试、静态分析和性能基准,比较差异并记录。
|
||||
|
||||
## 评估要点
|
||||
|
||||
- 回归稳定性:是否有功能回归或新增 bug。
|
||||
- 重构收益:复杂度、重复代码量、模块耦合度的改进。
|
||||
- 可审查性:补丁是否清晰、易于审查和合并。
|
||||
|
||||
## 量化指标
|
||||
|
||||
- 圈复杂度变化(前 / 后);重复代码行数减少;性能变化(如请求延迟)。
|
||||
|
||||
## 输出文件清单
|
||||
|
||||
- `task5-original-<tool>.md` — 原始建议与说明
|
||||
- `task5-patch-<tool>.diff` — 补丁文件
|
||||
- `task5-eval-<tool>.md` — 基线与比较报告
|
||||
|
||||
---
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
# Task 6: 测试生成类(Test Generation)
|
||||
|
||||
## 任务描述
|
||||
|
||||
使用AI测试生成工具基于代码或接口规范自动生成单元测试、集成测试或端到端测试。测试目标是评估生成测试的正确性、覆盖率、健壮性以及断言的有效性。
|
||||
|
||||
### 子任务
|
||||
1. 为一小段业务逻辑生成至少 5 个单元测试(覆盖正常和边界条件)。
|
||||
2. 为一个 RESTful API 生成集成测试脚本(使用 HTTP 客户端或 Postman / HTTPie)。
|
||||
3. 评估并补充工具未覆盖的边界用例。
|
||||
|
||||
## 初始条件
|
||||
|
||||
- 提供待测代码、接口文档和运行环境。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 生成的测试在目标环境能够自动执行且通过(或能正确发现已知缺陷)。
|
||||
- [ ] 断言合理且能验证业务逻辑核心路径。
|
||||
- [ ] 测试覆盖率达到预设目标(例如:核心模块 70%+)。
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 将代码或接口文档输入工具并保存生成的测试代码为 `task6-original-<tool>/tests/`。
|
||||
2. 在隔离环境运行测试并记录测试结果和失败案例。
|
||||
3. 对失败或不足的测试进行人工修补并记录修改点。
|
||||
|
||||
## 评估要点
|
||||
|
||||
- 覆盖率和断言质量:是否真正验证了逻辑而非仅执行代码路径。
|
||||
- 鲁棒性:在不同输入场景下测试是否保持稳定。
|
||||
- 可维护性:生成测试是否清晰、易于扩展与阅读。
|
||||
|
||||
## 量化指标
|
||||
|
||||
- 生成测试的通过率(%);生成后覆盖率(%);需要修改的测试数。
|
||||
|
||||
## 输出文件清单
|
||||
|
||||
- `task6-original-<tool>/tests/` — 原始生成的测试文件
|
||||
- `task6-final-<tool>/tests/` — 修订后的测试
|
||||
- `task6-eval-<tool>.md` — 评估报告与覆盖率数据
|
||||
|
||||
---
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
# Task 7: 文档生成类(Documentation)
|
||||
|
||||
## 任务描述
|
||||
|
||||
使用AI文档生成工具为给定代码库或 API 生成文档,包括内联注释、README、API 使用示例和迁移指南。测试目标是评估文档的准确性、覆盖范围、可读性以及与源码的一致性。
|
||||
|
||||
### 子任务
|
||||
1. 为一个小型项目生成 `README.md`(包含安装、运行示例、API 使用示例)。
|
||||
2. 为若干核心函数生成准确的 docstring 或注释。
|
||||
3. 从代码自动生成 API 文档(如 OpenAPI / Swagger 或静态 HTML 文档)。
|
||||
|
||||
## 初始条件
|
||||
|
||||
- 提供代码仓库或代码片段及运行示例。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] README 覆盖安装、运行、测试与示例用法。
|
||||
- [ ] 生成的注释与源码逻辑一致且不引入误导性描述。
|
||||
- [ ] API 文档可用且能通过文档示例成功调用接口。
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 将代码库指向工具并保存生成的文档(`task7-original-<tool>/`)。
|
||||
2. 按文档步骤实际运行并验证示例的可行性。
|
||||
3. 人工校对文档与源码一致性并记录差异。
|
||||
|
||||
## 评估要点
|
||||
|
||||
- 准确性:文档与代码行为一致。
|
||||
- 完整性:覆盖常见使用场景与边界情况说明。
|
||||
- 可读性:语言清晰、适合目标读者(开发者/运维/产品)。
|
||||
|
||||
## 量化指标
|
||||
|
||||
- 文档覆盖率:关键模块被文档化的比例(%);示例可复现率(%)。
|
||||
|
||||
## 输出文件清单
|
||||
|
||||
- `task7-original-<tool>/` — 原始生成文档
|
||||
- `task7-final-<tool>/` — 修订后的文档
|
||||
- `task7-eval-<tool>.md` — 验证结果与差异记录
|
||||
|
||||
---
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
# Task 8: 代码审查类(Code Review)
|
||||
|
||||
## 任务描述
|
||||
|
||||
使用AI代码审查工具对提交的 Pull Request 或代码补丁进行自动审查,包含风格、潜在 Bug、安全风险、性能问题与测试覆盖建议。测试目标是评估工具发现问题的准确性、报告的可操作性和误报率。
|
||||
|
||||
### 子任务
|
||||
1. 提供 3-5 个不同类型的 PR/补丁(包含风格问题、潜在安全漏洞、逻辑错误、性能退化等)。
|
||||
2. 要求工具生成审查报告、给出修复建议并标注严重性等级。
|
||||
3. 比较工具报告与人工审查结果,对误报与漏报进行统计。
|
||||
|
||||
## 初始条件
|
||||
|
||||
- 提供 PR diff、受影响文件和上下文说明;提供人工审查基线(审查者注释)。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 工具能识别主要问题(至少 80% 的高/中严重性问题)。
|
||||
- [ ] 报告的可操作性强:给出明确修复建议或代码示例。
|
||||
- [ ] 误报率保持在可接受范围(根据测试集衡量)。
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 将每个 PR/补丁提交给工具并保存输出报告。
|
||||
2. 对照人工审查进行比对,记录漏报、误报与一致性情况。
|
||||
3. 应用工具建议的修复(如果合适),验证是否解决问题。
|
||||
|
||||
## 评估要点
|
||||
|
||||
- 发现率(召回率)与精确率:针对不同严重性等级分别统计。
|
||||
- 报告质量:是否给出复现路径与修改示例。
|
||||
- 效率:审查所需时间与人工审查相比的节省比例。
|
||||
|
||||
## 量化指标
|
||||
|
||||
- 发现率(%);误报率(%);平均每个 PR 的建议数;节省的审查时间(分钟)。
|
||||
|
||||
## 输出文件清单
|
||||
|
||||
- `task8-original-<tool>.md` — 工具审查报告
|
||||
- `task8-eval-<tool>.md` — 与人工审查对比的统计报告
|
||||
|
||||
---
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
# Task 9: 项目管理类(Project Management)
|
||||
|
||||
## 任务描述
|
||||
|
||||
使用AI项目管理工具辅助进行项目计划制定、任务分解、风险识别与进度预测。测试目标是评估工具在自动生成甘特图、任务依赖、估时合理性和风险识别方面的能力。
|
||||
|
||||
### 子任务
|
||||
1. 给定一项功能开发任务(包括范围与交付物),生成详细的工作分解结构(WBS)和任务清单。
|
||||
2. 生成甘特图或里程碑计划,指出关键路径和资源分配建议。
|
||||
3. 识别主要风险并给出缓解措施及概率/影响评估。
|
||||
|
||||
## 初始条件
|
||||
|
||||
- 输入:功能说明、可用资源(人数、角色)、期限约束。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 任务拆分全面且任务粒度可管理(每项任务标注估时)。
|
||||
- [ ] 甘特图或计划清楚指出关键路径与依赖关系。
|
||||
- [ ] 风险识别合理并给出可执行的缓解措施。
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 将项目基本信息与约束输入工具并保存输出(任务表、甘特图、风险列表)。
|
||||
2. 人工审查任务估时与依赖关系的合理性并记录修改点。
|
||||
3. 在模拟进度中评估预测准确性(可使用历史数据或专家估计对比)。
|
||||
|
||||
## 评估要点
|
||||
|
||||
- 估时准确性:预测与实际/专家估时的偏差。
|
||||
- 任务覆盖度:是否遗漏关键活动(开发、测试、发布、回归)。
|
||||
- 风险识别质量:是否能识别真实存在且重要的风险。
|
||||
|
||||
## 量化指标
|
||||
|
||||
- 计划偏差(预计工时 vs 专家估时);关键路径长度;风险覆盖率。
|
||||
|
||||
## 输出文件清单
|
||||
|
||||
- `task9-original-<tool>.md` — 原始工作分解与计划
|
||||
- `task9-gantt-<tool>.(png|pdf|mpp)` — 甘特图或导出文件
|
||||
- `task9-eval-<tool>.md` — 评估与修改记录
|
||||
|
||||
---
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
# 工具分类目录
|
||||
|
||||
本目录包含所有AI4SE工具的详细测试报告,按功能场景分类。
|
||||
|
||||
## 📂 分类说明
|
||||
|
||||
### 1. [需求分析类](./requirements-analysis/)
|
||||
|
||||
AI辅助需求提取、需求分析、用户故事生成等工具。
|
||||
|
||||
### 2. [架构设计类](./architecture-design/)
|
||||
|
||||
AI辅助系统架构设计、技术选型、设计模式应用等工具。
|
||||
|
||||
### 3. [代码生成类](./code-generation/)
|
||||
|
||||
AI生成代码片段、完整文件、API接口等工具。
|
||||
|
||||
**示例工具**:GitHub Copilot、CodeLlama、CodeGeeX、Cursor
|
||||
|
||||
### 4. [调试排障类](./debugging/)
|
||||
|
||||
AI辅助定位bug、提供修复方案、性能分析等工具。
|
||||
|
||||
**示例工具**:Sentry AI、DebugGPT、CodeLlama Debug
|
||||
|
||||
### 5. [代码重构类](./refactoring/)
|
||||
|
||||
AI辅助优化代码结构、提升性能/可读性、消除技术债务等工具。
|
||||
|
||||
**示例工具**:RefactorGPT、SonarQube AI、Cursor Refactor
|
||||
|
||||
### 6. [测试生成类](./test-generation/)
|
||||
|
||||
AI自动生成单元测试、接口测试、集成测试用例等工具。
|
||||
|
||||
**示例工具**:TestGPT、Copilot X Test Generation、LangChain Test Builder
|
||||
|
||||
### 7. [文档生成类](./documentation/)
|
||||
|
||||
AI根据代码生成注释、API文档、技术方案等工具。
|
||||
|
||||
**示例工具**:AutoDoc、CodeWhisperer Docs、DocGPT
|
||||
|
||||
### 8. [代码审查类](./code-review/)
|
||||
|
||||
AI辅助代码审查、安全漏洞检测、代码规范检查等工具。
|
||||
|
||||
### 9. [项目管理类](./project-management/)
|
||||
|
||||
AI辅助项目计划、任务分解、进度跟踪、风险识别等工具。
|
||||
|
||||
### 10. [DevOps/CI-CD类](./devops-ci-cd/)
|
||||
|
||||
AI辅助持续集成、部署自动化、监控告警等工具。
|
||||
|
||||
### 11. [本地化大模型类](./local-models/)
|
||||
|
||||
可本地部署的开发辅助大模型。
|
||||
|
||||
**示例工具**:CodeLlama、StarCoder、Qwen-Coder
|
||||
|
||||
### 12. [全流程集成类](./full-flow/)
|
||||
|
||||
覆盖软件工程全生命周期的端到端工具。
|
||||
|
||||
**示例工具**:Cursor、CodeLens、Tabnine Enterprise
|
||||
|
||||
## 📋 工具详情模板
|
||||
|
||||
所有工具的测试报告应遵循统一模板,详见 [工具详情模板](./tool-template/)。
|
||||
|
||||
## 🔗 相关链接
|
||||
|
||||
- [工具对比表](../comparisons/tool-comparison-table.md)
|
||||
- [场景选型指南](../comparisons/scenario-based-guide.md)
|
||||
- [测试标准](../test-standards/test-flow.md)
|
||||
- [贡献指南](../CONTRIBUTING.md)
|
||||
|
||||
---
|
||||
|
||||
**提示**:工具测试报告正在持续更新中。如需提交新工具,请参考[贡献指南](../CONTRIBUTING.md)。
|
||||
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
- 思路是:通过对话型LLM生成Mermaid代码,通过Mermaid渲染器获得图表
|
||||
- pros&cons:
|
||||
- pros:无技术门槛
|
||||
- cons:生成代码质量有限;Mermaid原生不支持复杂UML图,可绘制的架构设计图有限
|
||||
- 测试结果:
|
||||
|
Before Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 708 KiB |
|
Before Width: | Height: | Size: 161 KiB |
|
Before Width: | Height: | Size: 305 KiB |
|
|
@ -1,35 +0,0 @@
|
|||
- 最佳操作实践:
|
||||
1. 了解Mermaid绘图语法,支持绘制的图([Mermaid docs](https://mermaid.js.org/intro/syntax-reference.html))
|
||||
2. 根据需求选定需要的图表,构造One-shot提示词。如:
|
||||
```
|
||||
user journey mermaid代码示例:
|
||||
```
|
||||
journey
|
||||
title My working day
|
||||
section Go to work
|
||||
Make tea: 5: Me
|
||||
Go upstairs: 3: Me
|
||||
Do work: 1: Me, Cat
|
||||
section Go home
|
||||
Go downstairs: 5: Me
|
||||
Sit down: 5: Me
|
||||
```
|
||||
|
||||
用户旅程描述:
|
||||
A user journey for a PawPath user, a puppy training platform:
|
||||
- The user gets a new puppy.
|
||||
- The user learns about PawPath training.
|
||||
- The user decides whether to join the program or exit.
|
||||
- The user selects the puppy’s age group. If the puppy is under 4 weeks old, the user is informed that the puppy is too young for training and is advised to return later. If the puppy is between 4–12 months, the user continues with PawPath. If the puppy is over 1 year old, the user is referred to a partner platform.
|
||||
- The user creates a puppy profile.
|
||||
- The user chooses a training plan from the following options: Starter, Plus, Premium, or Custom.
|
||||
- The user selects either a self-guided or trainer-led training path.
|
||||
- The user begins basic training.
|
||||
- The user checks the puppy’s progress and either adjusts the training or advances to the next lesson.
|
||||
- The user completes the training or continues lessons as needed.
|
||||
- The user decides whether to continue with advanced training or exit.
|
||||
- The user ends with a well-trained puppy.`
|
||||
```
|
||||
- 结果:
|
||||
- 
|
||||
- 
|
||||
|
Before Width: | Height: | Size: 361 KiB |
|
Before Width: | Height: | Size: 718 KiB |
|
|
@ -1,16 +0,0 @@
|
|||
- Eraser + DiagramGPT ([官网](https://www.eraser.io/))
|
||||
- 实现功能:直接用自然语言描述项目或者程序的规划,就可以自动生成匹配的架构图、流程图等等图表
|
||||
- 相关文档:
|
||||
- [DiagramGPT--自然语言或代码直接生成系统架构图流程图](https://zhuanlan.zhihu.com/p/1920825271147278358)
|
||||
- [How an AI sidecar product drove 30% of sign-ups: Eraser’s founder on building and growing DiagramGPT](https://openviewpartners.com/blog/how-an-ai-sidecar-product-drove-30-percent-of-sign-ups-eraser/)
|
||||
- 使用方式:
|
||||
1. 打开DiagramGPT网站:[DiagramGPT – AI diagram generator](https://www.eraser.io/diagramgpt)
|
||||
2. 可以选择diagram的类型,也可以选择default,让diagramGPT决定生成什么类型的diagram、
|
||||
3. 直接输入描述,然后点击Generate diagram
|
||||
4. 复制生成的png或跳转到eraser平台进行编辑
|
||||
- 效果示例:
|
||||
- 
|
||||
- 
|
||||
- pros&cons:
|
||||
- pros:网站输入,生成的图质量看起来不错
|
||||
- cons:国内网络不能使用,无法生成;看官方示例,似乎输入的prompt需要对图有很强、很细致的描述,这可能需要解耦到先用其他工具进行完善
|
||||
|
Before Width: | Height: | Size: 587 KiB |
|
Before Width: | Height: | Size: 312 KiB |
|
Before Width: | Height: | Size: 717 KiB |
|
|
@ -1,13 +0,0 @@
|
|||
- 官网:[官网](https://www.make-charts.com/zh-Hans)
|
||||
- 使用方式:
|
||||
1. 进入官网
|
||||
1. 选定需要的图类型
|
||||
2. 自然语言描述图
|
||||
- 可绘制的图(部分如下):
|
||||
- ER图:
|
||||
- 类图:
|
||||
- 用户旅程图:
|
||||
- pros&cons:
|
||||
- pros:可绘制图类型丰富;有prompt模板
|
||||
- cons:付费才能使用(付费价格如图)
|
||||
- 
|
||||
|
Before Width: | Height: | Size: 154 KiB |
|
|
@ -1,5 +0,0 @@
|
|||
- 总评:AI专门用于架构设计的工具少,更多的是用AI辅助作架构图(将自然语言描述转换为UML图),本仓库调研了后者
|
||||
- 已测试:畅图、ChatLLM-Mermaid
|
||||
- 未测试(由于网络、付费原因等):Eraser、MakeCharts
|
||||
- 其他相关资料:
|
||||
- [UML类图太难画?试试这5款AI工具,一键搞定!](https://blog.csdn.net/weixin_58359897/article/details/147927511)
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
- 使用方式:网页,https://app.fluig.cn
|
||||
- 了解畅图
|
||||
畅图是一款创新的在线白板工具,专为个人快速图形绘制、团队协作和创意分享而设计。它提供了一个无限大的虚拟空间,让用户可以自由地书写、绘图、添加注释和上传文件,同时支持多人实时协作。
|
||||
|
||||
畅图的主要应用场景:
|
||||
|
||||
激发创意与灵感:
|
||||
|
||||
使用画笔、便签、图片和超链接,将每个灵感汇聚在画布上。
|
||||
专业绘图:
|
||||
|
||||
支持绘制各类专业图形,如:流程图、UML、类图、时序图、甘特图、图表、思维导图、架构图等
|
||||
头脑风暴与想法探索:
|
||||
|
||||
提供多样的场景解决方案和模板案例,快速激发创意。
|
||||
随时组织头脑风暴,进行异步讨论和实时创作。
|
||||
整理与记录想法:
|
||||
|
||||
将文档和作品整理成卡片,通过看板管理,轻松实现从灵感到创作的全流程管理。
|
||||
设计反馈会议:
|
||||
|
||||
在设计前期,与团队进行视觉表达和风格探索。
|
||||
利用在线协作,图文结合,清晰传达个人想法,快速达成共识。
|
||||
计划、会议和互动演示:
|
||||
|
||||
在白板上,与团队成员随时沟通计划和会议安排。
|
||||
开启互动演示模式,跟随主讲人视角,使用多种互动工具实时表达意见和想法。
|
||||
畅图为用户提供了一系列强大的绘图能力,以支持不同领域的专业需求。以下是畅图提供的主要能力:
|
||||
|
||||
绘制流程图:
|
||||
|
||||
畅图提供了丰富的流程图符号和模板,用户可以轻松创建标准的工作流程、业务流程或系统流程图。
|
||||
支持自动对齐和分布功能,确保流程图的整洁和专业性。
|
||||
用户可以通过拖放方式快速添加和连接流程图元素,提高绘图效率。
|
||||
提供流程图的实时预览和导出功能,支持多种文件格式,如PDF、PNG等,方便分享和打印。
|
||||
绘制组织架构图:
|
||||
|
||||
畅图允许用户设计和展示组织的层级结构和部门关系。
|
||||
支持从Excel或CSV文件导入组织数据,快速生成架构图,节省手动输入的时间。
|
||||
绘制UML等架构图:
|
||||
|
||||
畅图支持统一建模语言(UML)的各种图表类型,包括用例图、类图、序列图、状态图等。
|
||||
提供UML标准符号库,用户可以直接拖放使用,确保图表的专业性和准确性。
|
||||
支持复杂的UML关系,如继承、关联、聚合等,帮助用户精确表达系统设计。
|
||||
- 付费计划:[官网价格](https://www.fluig.cn/buy/fg?fg)
|
||||
- 免费用户:使用的图有限;付费图形3次
|
||||
- 付费会员:69半年,89一年,399终身
|
||||
- 测试结果见:[架构图生成测试](test-results/task-gen-architecuture-chart.md)
|
||||
- pros-cons:
|
||||
- pros:使用直接、简单;LLM会分析完善自然语言输入的请求,再作图;免费用户也可使用测试;生成速度够快;国内可用;提供SDK和MCP Server,可集成到自定义工作流
|
||||
- cons:
|
||||
|
Before Width: | Height: | Size: 440 KiB |
|
Before Width: | Height: | Size: 460 KiB |
|
|
@ -1,6 +0,0 @@
|
|||
- 生成流程图
|
||||
- prompt:创建一个展示用户登录流程的流程图,包含邮箱验证和密码重置功能
|
||||
- 效果:
|
||||
- 生成类图
|
||||
- prompt:请生成一张基准类图
|
||||
- 效果:
|
||||
|
|
@ -1,130 +0,0 @@
|
|||
# CodeLlama - 工具概览
|
||||
|
||||
> **工具类型**:代码生成
|
||||
> **工具分类**:code-generation、local-models
|
||||
|
||||
## 📋 基本信息
|
||||
|
||||
### 工具简介
|
||||
|
||||
CodeLlama是Meta(Facebook)开发的开源代码生成大模型,基于Llama 2训练,专门针对代码生成和补全任务进行了优化。CodeLlama提供了多个版本(7B、13B、34B),支持代码补全、代码生成、代码解释等多种任务。
|
||||
|
||||
### 官方网站
|
||||
|
||||
- **GitHub**:https://github.com/facebookresearch/codellama
|
||||
- **Hugging Face**:https://huggingface.co/codellama
|
||||
- **论文**:https://ai.meta.com/research/publications/codellama/
|
||||
|
||||
### 定价信息
|
||||
|
||||
- **免费版**:✅ 完全免费开源
|
||||
- **付费版**:无
|
||||
- **开源**:是(许可证:LLAMA 2 Community License)
|
||||
|
||||
### 大模型底座
|
||||
|
||||
- **底层模型**:Llama 2
|
||||
- **模型版本**:
|
||||
- CodeLlama-7B(基础版)
|
||||
- CodeLlama-13B(增强版)
|
||||
- CodeLlama-34B(专业版)
|
||||
- CodeLlama-7B-Python(Python专用)
|
||||
- CodeLlama-13B-Python(Python专用)
|
||||
- CodeLlama-7B-Instruct(指令调优版)
|
||||
- CodeLlama-13B-Instruct(指令调优版)
|
||||
- CodeLlama-34B-Instruct(指令调优版)
|
||||
|
||||
## 🎯 核心功能
|
||||
|
||||
### 主要功能
|
||||
|
||||
1. **代码补全**:智能代码补全,支持多行补全
|
||||
2. **代码生成**:根据自然语言描述生成完整代码
|
||||
3. **代码解释**:解释代码功能和逻辑
|
||||
4. **代码转换**:在不同编程语言间转换代码
|
||||
5. **代码调试**:识别和修复代码中的bug
|
||||
6. **文档生成**:根据代码生成文档和注释
|
||||
|
||||
### 适用场景
|
||||
|
||||
- 本地部署的代码生成工具
|
||||
- 离线开发环境
|
||||
- 代码补全和生成
|
||||
- 学习编程和代码理解
|
||||
- 企业内网部署
|
||||
|
||||
### 不适用场景
|
||||
|
||||
- 需要实时在线更新的场景(模型需要手动更新)
|
||||
- 资源受限的环境(需要较大显存/内存)
|
||||
- 对响应速度要求极高的场景(本地推理可能较慢)
|
||||
|
||||
## 🛠️ 技术栈支持
|
||||
|
||||
### 支持的编程语言
|
||||
|
||||
- **Python**:✅ 优秀支持(有专门版本)
|
||||
- **JavaScript/TypeScript**:✅ 支持
|
||||
- **Java**:✅ 支持
|
||||
- **Go**:✅ 支持
|
||||
- **Rust**:✅ 支持
|
||||
- **其他**:C++、C#、PHP、Ruby、Bash、SQL等20+语言
|
||||
|
||||
### 支持的框架
|
||||
|
||||
- **Web框架**:FastAPI、Flask、Django、React、Vue等(通过学习代码模式)
|
||||
- **数据库**:SQLAlchemy、Prisma等
|
||||
- **其他**:通过代码上下文学习框架使用
|
||||
|
||||
### IDE集成
|
||||
|
||||
- **VS Code**:通过插件(如Continue、Codeium)集成
|
||||
- **IntelliJ IDEA**:通过插件集成
|
||||
- **命令行工具**:原生支持命令行调用
|
||||
- **API接口**:支持通过API调用
|
||||
|
||||
## 🚀 部署方式
|
||||
|
||||
### 云端服务
|
||||
|
||||
- **SaaS**:可通过第三方服务商(如Replicate、Hugging Face Inference API)使用
|
||||
- **API**:支持通过API调用(需自行部署)
|
||||
|
||||
### 本地部署
|
||||
|
||||
- **本地安装**:✅ 支持(方式:本地模型部署)
|
||||
- **本地模型**:✅ 支持(需要GPU加速,推荐)
|
||||
|
||||
### 混合部署
|
||||
|
||||
- **本地+云端**:✅ 支持(本地部署+云端备用)
|
||||
|
||||
## 📊 版本信息
|
||||
|
||||
### 当前版本
|
||||
|
||||
- **版本号**:CodeLlama 2.0(2024-01)
|
||||
- **发布日期**:2024-01
|
||||
- **最后更新**:2024-01
|
||||
|
||||
### 版本历史
|
||||
|
||||
- **CodeLlama 1.0**(2023-08):首次发布,7B/13B/34B版本
|
||||
- **CodeLlama 2.0**(2024-01):改进代码质量,优化推理速度
|
||||
|
||||
## 🔧 硬件要求
|
||||
|
||||
### 最低要求
|
||||
|
||||
- **CPU**:现代多核CPU(推荐8核+)
|
||||
- **内存**:16GB RAM(7B版本),32GB RAM(13B版本),64GB RAM(34B版本)
|
||||
- **显存**:8GB VRAM(7B版本,量化),16GB VRAM(13B版本),32GB VRAM(34B版本)
|
||||
- **存储**:20GB+可用空间
|
||||
|
||||
### 推荐配置
|
||||
|
||||
- **GPU**:NVIDIA GPU with CUDA(推荐RTX 3090/4090或更高)
|
||||
- **显存**:16GB+ VRAM(7B/13B版本),32GB+ VRAM(34B版本)
|
||||
- **内存**:32GB+ RAM
|
||||
- **存储**:SSD,50GB+可用空间
|
||||
|
||||
|
|
@ -1,328 +0,0 @@
|
|||
# CodeLlama - 安装配置指南
|
||||
|
||||
## 📋 前置要求
|
||||
|
||||
### 系统要求
|
||||
|
||||
- **操作系统**:Linux(推荐Ubuntu 20.04+)、macOS、Windows(通过WSL或Docker)
|
||||
- **Python版本**:Python 3.8+
|
||||
- **CUDA版本**:CUDA 11.8+(如使用GPU)
|
||||
|
||||
### 硬件要求
|
||||
|
||||
- **最低配置**:16GB RAM,8GB VRAM(7B量化版本)
|
||||
- **推荐配置**:32GB RAM,16GB+ VRAM(7B/13B版本)
|
||||
- **专业配置**:64GB RAM,32GB+ VRAM(34B版本)
|
||||
|
||||
## 🔧 安装步骤
|
||||
|
||||
### 方式1:使用Hugging Face Transformers(推荐)
|
||||
|
||||
#### 1. 安装依赖
|
||||
|
||||
```bash
|
||||
# 创建虚拟环境
|
||||
python -m venv codellama_env
|
||||
source codellama_env/bin/activate # Linux/macOS
|
||||
# 或
|
||||
codellama_env\Scripts\activate # Windows
|
||||
|
||||
# 安装依赖
|
||||
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
|
||||
pip install transformers accelerate bitsandbytes
|
||||
pip install sentencepiece protobuf
|
||||
```
|
||||
|
||||
#### 2. 下载模型
|
||||
|
||||
**方法A:使用transformers自动下载**
|
||||
|
||||
```python
|
||||
from transformers import AutoTokenizer, AutoModelForCausalLM
|
||||
|
||||
model_name = "codellama/CodeLlama-7b-Instruct-hf"
|
||||
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
||||
model = AutoModelForCausalLM.from_pretrained(
|
||||
model_name,
|
||||
torch_dtype=torch.float16,
|
||||
device_map="auto"
|
||||
)
|
||||
```
|
||||
|
||||
**方法B:使用git-lfs手动下载**
|
||||
|
||||
```bash
|
||||
# 安装git-lfs
|
||||
sudo apt install git-lfs # Linux
|
||||
brew install git-lfs # macOS
|
||||
|
||||
# 下载模型
|
||||
git lfs install
|
||||
git clone https://huggingface.co/codellama/CodeLlama-7b-Instruct-hf
|
||||
```
|
||||
|
||||
#### 3. 配置量化(节省显存)
|
||||
|
||||
```python
|
||||
from transformers import BitsAndBytesConfig
|
||||
|
||||
quantization_config = BitsAndBytesConfig(
|
||||
load_in_4bit=True,
|
||||
bnb_4bit_compute_dtype=torch.float16,
|
||||
bnb_4bit_use_double_quant=True,
|
||||
bnb_4bit_quant_type="nf4"
|
||||
)
|
||||
|
||||
model = AutoModelForCausalLM.from_pretrained(
|
||||
model_name,
|
||||
quantization_config=quantization_config,
|
||||
device_map="auto"
|
||||
)
|
||||
```
|
||||
|
||||
### 方式2:使用llama.cpp(CPU/轻量级GPU)
|
||||
|
||||
#### 1. 安装llama.cpp
|
||||
|
||||
```bash
|
||||
git clone https://github.com/ggerganov/llama.cpp.git
|
||||
cd llama.cpp
|
||||
make # Linux/macOS
|
||||
# 或使用CMake构建(Windows)
|
||||
```
|
||||
|
||||
#### 2. 下载量化模型
|
||||
|
||||
```bash
|
||||
# 下载GGUF格式的量化模型(推荐Q4_K_M或Q5_K_M)
|
||||
# 从Hugging Face下载或使用转换脚本
|
||||
python convert_codellama_weights_to_gguf.py \
|
||||
--outfile codellama-7b-instruct.gguf \
|
||||
--outtype q4_k_m \
|
||||
/path/to/codellama-7b-instruct-hf
|
||||
```
|
||||
|
||||
#### 3. 运行模型
|
||||
|
||||
```bash
|
||||
./llama-cli -m codellama-7b-instruct.gguf \
|
||||
-p "def fibonacci(n):" \
|
||||
--temp 0.2 \
|
||||
--top-p 0.95 \
|
||||
--repeat-penalty 1.1
|
||||
```
|
||||
|
||||
### 方式3:使用vLLM(生产环境推荐)
|
||||
|
||||
#### 1. 安装vLLM
|
||||
|
||||
```bash
|
||||
pip install vllm
|
||||
```
|
||||
|
||||
#### 2. 启动服务
|
||||
|
||||
```bash
|
||||
python -m vllm.entrypoints.openai.api_server \
|
||||
--model codellama/CodeLlama-7b-Instruct-hf \
|
||||
--tensor-parallel-size 1 \
|
||||
--gpu-memory-utilization 0.9
|
||||
```
|
||||
|
||||
#### 3. 使用API调用
|
||||
|
||||
```python
|
||||
from openai import OpenAI
|
||||
|
||||
client = OpenAI(
|
||||
base_url="http://localhost:8000/v1",
|
||||
api_key="dummy"
|
||||
)
|
||||
|
||||
response = client.completions.create(
|
||||
model="codellama/CodeLlama-7b-Instruct-hf",
|
||||
prompt="def fibonacci(n):",
|
||||
max_tokens=100
|
||||
)
|
||||
```
|
||||
|
||||
### 方式4:使用Docker(推荐)
|
||||
|
||||
#### 1. 拉取镜像
|
||||
|
||||
```bash
|
||||
docker pull ghcr.io/huggingface/text-generation-inference:latest
|
||||
```
|
||||
|
||||
#### 2. 运行容器
|
||||
|
||||
```bash
|
||||
docker run --gpus all \
|
||||
-p 8080:80 \
|
||||
-v $(pwd)/models:/data \
|
||||
ghcr.io/huggingface/text-generation-inference:latest \
|
||||
--model-id codellama/CodeLlama-7b-Instruct-hf \
|
||||
--num-shard 1 \
|
||||
--max-input-length 2048 \
|
||||
--max-total-tokens 4096
|
||||
```
|
||||
|
||||
## ⚙️ 配置说明
|
||||
|
||||
### 模型选择
|
||||
|
||||
根据硬件配置选择合适的模型:
|
||||
|
||||
| 模型 | 参数量 | 最小显存 | 推荐显存 | 适用场景 |
|
||||
|-----|-------|---------|---------|---------|
|
||||
| CodeLlama-7B | 7B | 8GB | 16GB | 个人开发,代码补全 |
|
||||
| CodeLlama-13B | 13B | 16GB | 24GB | 团队开发,复杂代码生成 |
|
||||
| CodeLlama-34B | 34B | 32GB | 48GB | 企业级,高质量代码生成 |
|
||||
|
||||
### 量化配置
|
||||
|
||||
**4-bit量化**(推荐):
|
||||
- 显存占用减少约75%
|
||||
- 性能损失约5-10%
|
||||
- 适合资源受限环境
|
||||
|
||||
**8-bit量化**:
|
||||
- 显存占用减少约50%
|
||||
- 性能损失约2-5%
|
||||
- 平衡性能和资源
|
||||
|
||||
### 推理参数配置
|
||||
|
||||
```python
|
||||
generation_config = {
|
||||
"temperature": 0.2, # 降低随机性,提高代码准确性
|
||||
"top_p": 0.95, # 核采样
|
||||
"top_k": 50, # Top-K采样
|
||||
"max_new_tokens": 512, # 最大生成token数
|
||||
"repetition_penalty": 1.1, # 重复惩罚
|
||||
"stop_sequences": ["\n\n\n", "```"] # 停止序列
|
||||
}
|
||||
```
|
||||
|
||||
## ✅ 验证安装
|
||||
|
||||
### 测试代码生成
|
||||
|
||||
创建`test_codellama.py`:
|
||||
|
||||
```python
|
||||
from transformers import AutoTokenizer, AutoModelForCausalLM
|
||||
import torch
|
||||
|
||||
model_name = "codellama/CodeLlama-7b-Instruct-hf"
|
||||
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
||||
model = AutoModelForCausalLM.from_pretrained(
|
||||
model_name,
|
||||
torch_dtype=torch.float16,
|
||||
device_map="auto"
|
||||
)
|
||||
|
||||
prompt = """<|begin_of_text|><|start_header_id|>user<|end_header_id|>
|
||||
|
||||
Write a Python function to calculate fibonacci numbers.<|eot_id|><|start_header_id|>assistant<|end_header_id|>
|
||||
|
||||
"""
|
||||
|
||||
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
|
||||
output = model.generate(
|
||||
inputs["input_ids"],
|
||||
max_new_tokens=200,
|
||||
temperature=0.2,
|
||||
top_p=0.95,
|
||||
)
|
||||
|
||||
print(tokenizer.decode(output[0], skip_special_tokens=True))
|
||||
```
|
||||
|
||||
运行测试:
|
||||
|
||||
```bash
|
||||
python test_codellama.py
|
||||
```
|
||||
|
||||
### 测试代码补全
|
||||
|
||||
```python
|
||||
prompt = """def fibonacci(n):
|
||||
"""
|
||||
Calculate the nth Fibonacci number.
|
||||
"""
|
||||
"""
|
||||
|
||||
# 生成补全
|
||||
output = model.generate(
|
||||
inputs["input_ids"],
|
||||
max_new_tokens=100,
|
||||
temperature=0.2,
|
||||
)
|
||||
|
||||
print(tokenizer.decode(output[0], skip_special_tokens=True))
|
||||
```
|
||||
|
||||
## 🔍 常见问题
|
||||
|
||||
### 问题1:显存不足(CUDA out of memory)
|
||||
|
||||
**原因**:模型太大,显存不够
|
||||
|
||||
**解决方案**:
|
||||
1. 使用量化版本(4-bit或8-bit)
|
||||
2. 使用更小的模型(7B而非13B/34B)
|
||||
3. 减少batch size
|
||||
4. 使用CPU推理(速度较慢)
|
||||
|
||||
### 问题2:下载速度慢
|
||||
|
||||
**原因**:模型文件较大(7B约14GB),网络速度慢
|
||||
|
||||
**解决方案**:
|
||||
1. 使用镜像站点(如Hugging Face镜像)
|
||||
2. 使用断点续传工具
|
||||
3. 使用模型量化版本(文件更小)
|
||||
|
||||
### 问题3:推理速度慢
|
||||
|
||||
**原因**:CPU推理、未使用GPU加速、模型太大
|
||||
|
||||
**解决方案**:
|
||||
1. 使用GPU加速(CUDA)
|
||||
2. 使用量化模型
|
||||
3. 使用更小的模型
|
||||
4. 使用vLLM等优化的推理框架
|
||||
|
||||
### 问题4:生成的代码质量不高
|
||||
|
||||
**原因**:提示词不清晰、参数设置不当
|
||||
|
||||
**解决方案**:
|
||||
1. 提供更详细和清晰的提示词
|
||||
2. 降低temperature(0.1-0.3)
|
||||
3. 使用Instruct版本而非基础版本
|
||||
4. 提供代码上下文和示例
|
||||
|
||||
## 📸 安装截图
|
||||
|
||||
### 模型下载
|
||||
|
||||
[插入模型下载截图]
|
||||
|
||||
### 运行示例
|
||||
|
||||
[插入代码生成示例截图]
|
||||
|
||||
## 🔗 相关链接
|
||||
|
||||
- [GitHub仓库](https://github.com/facebookresearch/codellama)
|
||||
- [Hugging Face模型](https://huggingface.co/codellama)
|
||||
- [官方文档](https://ai.meta.com/research/publications/codellama/)
|
||||
- [llama.cpp](https://github.com/ggerganov/llama.cpp)
|
||||
|
||||
---
|
||||
|
||||
**提示**:CodeLlama是开源模型,可以根据需求进行定制和优化。安装过程中遇到问题,请查看[常见问题](#常见问题)或访问GitHub Issues。
|
||||
|
||||
|
|
@ -1,146 +0,0 @@
|
|||
# CodeLlama - Task 1: API开发测试结果
|
||||
|
||||
> **测试工具**:CodeLlama-7B-Instruct
|
||||
> **测试任务**:Task 1 - RESTful API开发
|
||||
> **测试日期**:待测试
|
||||
> **测试环境**:待测试
|
||||
> **工具版本**:CodeLlama-7B-Instruct-hf
|
||||
|
||||
## 📋 任务描述
|
||||
|
||||
使用Python + FastAPI开发一个用户管理系统的RESTful API,包含用户注册、登录、查询接口。
|
||||
|
||||
详细需求见:[Task 1 API开发](../../../test-standards/test-tasks/task1-api.md)
|
||||
|
||||
## ⚠️ 测试状态
|
||||
|
||||
**当前状态**:待测试
|
||||
|
||||
**说明**:此测试结果文件已创建,但尚未进行实际测试。CodeLlama作为本地部署的大模型,需要:
|
||||
- 本地GPU环境(推荐16GB+ VRAM)
|
||||
- 模型下载和部署(约13GB模型文件)
|
||||
- 配置推理服务
|
||||
|
||||
**测试计划**:
|
||||
1. 部署CodeLlama-7B-Instruct模型
|
||||
2. 配置API服务或IDE插件
|
||||
3. 使用Task 1标准测试用例进行测试
|
||||
4. 记录测试结果和评估指标
|
||||
|
||||
## 🛠️ 工具准备
|
||||
|
||||
### 预期安装步骤
|
||||
|
||||
1. **环境准备**
|
||||
- 操作系统:Linux/macOS/Windows(推荐Linux)
|
||||
- Python 3.10+
|
||||
- CUDA 11.8+(GPU加速)
|
||||
- 16GB+ VRAM(7B模型)
|
||||
|
||||
2. **安装依赖**
|
||||
```bash
|
||||
pip install torch transformers accelerate
|
||||
```
|
||||
|
||||
3. **下载模型**
|
||||
```python
|
||||
from transformers import AutoTokenizer, AutoModelForCausalLM
|
||||
model_name = "codellama/CodeLlama-7b-Instruct-hf"
|
||||
```
|
||||
|
||||
4. **配置IDE插件**
|
||||
- VS Code: Continue插件
|
||||
- 或配置API服务
|
||||
|
||||
### 预期版本信息
|
||||
|
||||
- **模型版本**:CodeLlama-7B-Instruct-hf
|
||||
- **Transformers版本**:4.35.0+
|
||||
- **PyTorch版本**:2.0.0+
|
||||
|
||||
## 📝 预期测试流程
|
||||
|
||||
### 1. 工具调用方式
|
||||
|
||||
**预期方式**:
|
||||
- 通过IDE插件(如Continue)调用
|
||||
- 或通过API服务调用
|
||||
- 或通过命令行工具调用
|
||||
|
||||
### 2. 输入内容
|
||||
|
||||
**预期输入**:
|
||||
```
|
||||
使用FastAPI创建一个用户管理系统的RESTful API,包含以下功能:
|
||||
1. 用户注册接口 (POST /api/users/register)
|
||||
2. 用户登录接口 (POST /api/users/login)
|
||||
3. 用户查询接口 (GET /api/users/{user_id})
|
||||
|
||||
技术要求:
|
||||
- 使用FastAPI框架
|
||||
- 实现数据校验(Pydantic模型)
|
||||
- 实现错误处理
|
||||
- 使用SQLite数据库
|
||||
- 实现密码加密(bcrypt)
|
||||
- 实现JWT认证
|
||||
- 代码符合PEP8规范
|
||||
```
|
||||
|
||||
### 3. 预期评估要点
|
||||
|
||||
- **代码完整性**:是否生成所有必需的接口
|
||||
- **代码正确性**:生成的代码是否能直接运行
|
||||
- **响应速度**:本地推理速度(预期较慢)
|
||||
- **代码质量**:是否符合PEP8和FastAPI最佳实践
|
||||
- **安全性**:是否正确实现密码加密和JWT认证
|
||||
|
||||
## 📊 预期评估指标
|
||||
|
||||
### 效率指标
|
||||
|
||||
| 指标 | 预期值 | 说明 |
|
||||
|-----|--------|------|
|
||||
| 开发耗时 | 待测试 | 本地推理可能较慢 |
|
||||
| 交互次数 | 待测试 | 可能需要多次交互 |
|
||||
| 响应速度 | 待测试 | 预期:5-30秒/次(取决于硬件) |
|
||||
| 自动化程度 | 待测试 | 预期:70-85% |
|
||||
|
||||
### 质量指标
|
||||
|
||||
| 指标 | 预期值 | 说明 |
|
||||
|-----|--------|------|
|
||||
| 代码正确率 | 待测试 | 预期:70-85% |
|
||||
| 测试通过率 | 待测试 | 预期:80-90% |
|
||||
| 可读性评分 | 待测试 | 预期:15-18/20 |
|
||||
| 安全性评分 | 待测试 | 预期:4-5/5 |
|
||||
| 规范性评分 | 待测试 | 预期:3-4/5 |
|
||||
|
||||
## 🔄 与其他工具对比(预期)
|
||||
|
||||
### vs Cursor
|
||||
|
||||
| 维度 | CodeLlama | Cursor |
|
||||
|-----|-----------|--------|
|
||||
| 代码质量 | 待测试 | ⭐⭐⭐⭐ |
|
||||
| 响应速度 | 待测试(较慢) | ⭐⭐⭐⭐⭐ |
|
||||
| 价格 | ⭐⭐⭐⭐⭐(免费) | ⭐⭐⭐($20/月) |
|
||||
| 本地部署 | ✅ 支持 | ❌ 不支持 |
|
||||
| 离线使用 | ✅ 支持 | ❌ 不支持 |
|
||||
|
||||
### vs GitHub Copilot
|
||||
|
||||
| 维度 | CodeLlama | GitHub Copilot |
|
||||
|-----|-----------|----------------|
|
||||
| 代码质量 | 待测试 | ⭐⭐⭐⭐⭐ |
|
||||
| 响应速度 | 待测试(较慢) | ⭐⭐⭐⭐ |
|
||||
| 价格 | ⭐⭐⭐⭐⭐(免费) | ⭐⭐⭐($10/月) |
|
||||
| 本地部署 | ✅ 支持 | ❌ 不支持 |
|
||||
|
||||
## 📝 测试记录
|
||||
|
||||
**待补充**:实际测试结果将在此处记录
|
||||
|
||||
---
|
||||
|
||||
**提示**:此测试结果文件为模板,需要实际部署和测试CodeLlama后才能填写完整内容。测试时请参考[测试标准](../../../test-standards/test-flow.md)和[效率指标](../../../test-standards/metrics/efficiency-metrics.md)。
|
||||
|
||||
|
|
@ -1,104 +0,0 @@
|
|||
# Cursor - 工具概览
|
||||
|
||||
> **工具类型**:代码生成
|
||||
> **工具分类**:code-generation
|
||||
|
||||
## 📋 基本信息
|
||||
|
||||
### 工具简介
|
||||
|
||||
Cursor是一款基于AI的代码编辑器,结合了强大的AI辅助编程能力,支持代码生成、补全、重构、调试等多种开发辅助功能。Cursor基于GPT模型,提供了类似VS Code的编辑器体验,但集成了更强大的AI能力。
|
||||
|
||||
### 官方网站
|
||||
|
||||
- **官网**:https://cursor.sh
|
||||
- **文档**:https://cursor.sh/docs
|
||||
- **GitHub**:https://github.com/getcursor/cursor
|
||||
|
||||
### 定价信息
|
||||
|
||||
- **免费版**:每月200次AI请求,受限功能
|
||||
- **Pro版**:$20/月, unlimited AI请求,优先访问
|
||||
- **开源**:部分开源(编辑器部分)
|
||||
|
||||
### 大模型底座
|
||||
|
||||
- **底层模型**:GPT-4、Claude 3.5 Sonnet、自定义模型
|
||||
- **模型版本**:支持多模型切换
|
||||
|
||||
## 🎯 核心功能
|
||||
|
||||
### 主要功能
|
||||
|
||||
1. **代码补全**:智能代码补全,支持多行补全
|
||||
2. **代码生成**:根据自然语言描述生成完整代码文件
|
||||
3. **代码重构**:AI辅助代码重构和优化
|
||||
4. **代码审查**:自动代码审查和安全检查
|
||||
5. **调试辅助**:AI辅助定位bug和提供修复建议
|
||||
6. **Chat功能**:与AI对话进行代码开发和问题解答
|
||||
|
||||
### 适用场景
|
||||
|
||||
- 快速原型开发
|
||||
- 代码生成和补全
|
||||
- 代码重构和优化
|
||||
- 学习新框架和语言
|
||||
- 日常编码辅助
|
||||
|
||||
### 不适用场景
|
||||
|
||||
- 需要完全本地部署的场景(部分功能需要联网)
|
||||
- 对代码质量要求极高的生产环境(需要人工审查)
|
||||
- 特殊领域和专业工具的开发
|
||||
|
||||
## 🛠️ 技术栈支持
|
||||
|
||||
### 支持的编程语言
|
||||
|
||||
- **Python**:✅ 支持(版本要求:3.8+)
|
||||
- **JavaScript/TypeScript**:✅ 支持
|
||||
- **Java**:✅ 支持
|
||||
- **Go**:✅ 支持
|
||||
- **Rust**:✅ 支持
|
||||
- **其他**:C++、C#、PHP、Ruby、Swift等50+语言
|
||||
|
||||
### 支持的框架
|
||||
|
||||
- **Web框架**:FastAPI、Flask、Django、React、Vue、Angular、Next.js等
|
||||
- **数据库**:SQLAlchemy、TypeORM、Prisma等
|
||||
- **其他**:主流框架和库
|
||||
|
||||
### IDE集成
|
||||
|
||||
- **Cursor编辑器**:原生支持(基于VS Code)
|
||||
- **VS Code插件**:可通过插件在VS Code中使用部分功能
|
||||
|
||||
## 🚀 部署方式
|
||||
|
||||
### 云端服务
|
||||
|
||||
- **SaaS**:✅ 支持(提供云端服务)
|
||||
- **API**:✅ 支持(通过编辑器调用)
|
||||
|
||||
### 本地部署
|
||||
|
||||
- **本地安装**:✅ 支持(方式:桌面应用)
|
||||
- **本地模型**:部分支持(部分功能支持本地模型)
|
||||
|
||||
### 混合部署
|
||||
|
||||
- **本地+云端**:✅ 支持(本地编辑器+云端AI模型)
|
||||
|
||||
## 📊 版本信息
|
||||
|
||||
### 当前版本
|
||||
|
||||
- **版本号**:v0.40.0+(持续更新)
|
||||
- **发布日期**:2023-03
|
||||
- **最后更新**:持续更新
|
||||
|
||||
### 版本历史
|
||||
|
||||
- **v0.40.0**(2024-12):增强代码生成能力,支持多模型切换
|
||||
- **持续更新**:定期发布新功能和改进
|
||||
|
||||
|
|
@ -1,238 +0,0 @@
|
|||
# Cursor - 安装配置指南
|
||||
|
||||
## 📋 前置要求
|
||||
|
||||
### 系统要求
|
||||
|
||||
- **操作系统**:macOS 10.15+、Windows 10+、Linux (Ubuntu 18.04+)
|
||||
- **硬件要求**:4GB RAM(推荐8GB+),500MB磁盘空间
|
||||
- **网络要求**:需要稳定的互联网连接(AI功能)
|
||||
|
||||
### IDE要求
|
||||
|
||||
- Cursor是独立编辑器,不需要额外IDE
|
||||
- 基于VS Code架构,使用习惯类似VS Code
|
||||
|
||||
## 🔧 安装步骤
|
||||
|
||||
### 方式1:官网下载安装
|
||||
|
||||
#### 1. 下载安装包
|
||||
|
||||
1. 访问[Cursor官网](https://cursor.sh)
|
||||
2. 点击"Download"按钮
|
||||
3. 选择对应操作系统的安装包
|
||||
4. 下载安装包到本地
|
||||
|
||||
#### 2. 安装应用
|
||||
|
||||
**macOS**:
|
||||
1. 打开下载的`.dmg`文件
|
||||
2. 将Cursor拖拽到Applications文件夹
|
||||
3. 在Applications中找到Cursor并打开
|
||||
4. 如果提示安全警告,进入"系统偏好设置"→"安全性与隐私"→允许打开
|
||||
|
||||
**Windows**:
|
||||
1. 运行下载的`.exe`安装程序
|
||||
2. 按照安装向导完成安装
|
||||
3. 启动Cursor应用
|
||||
|
||||
**Linux**:
|
||||
1. 下载`.deb`或`.AppImage`文件
|
||||
2. 安装deb包:`sudo dpkg -i cursor_*.deb`
|
||||
3. 或直接运行AppImage:`chmod +x cursor-*.AppImage && ./cursor-*.AppImage`
|
||||
|
||||
### 方式2:包管理器安装(Linux)
|
||||
|
||||
```bash
|
||||
# 使用Snap安装(推荐)
|
||||
sudo snap install cursor --classic
|
||||
|
||||
# 或使用AUR安装(Arch Linux)
|
||||
yay -S cursor
|
||||
```
|
||||
|
||||
## ⚙️ 配置说明
|
||||
|
||||
### 首次启动配置
|
||||
|
||||
1. **创建账户**
|
||||
- 首次启动会提示创建账户或登录
|
||||
- 可以选择使用GitHub账号登录
|
||||
- 或使用邮箱注册新账号
|
||||
|
||||
2. **选择AI模型**
|
||||
- 进入Settings(`Cmd/Ctrl + ,`)
|
||||
- 找到"AI"或"Model"设置
|
||||
- 选择使用的AI模型(GPT-4、Claude等)
|
||||
- 配置API密钥(如使用自定义API)
|
||||
|
||||
3. **配置使用计划**
|
||||
- 免费版:每月200次请求
|
||||
- Pro版:$20/月,unlimited请求
|
||||
- 根据需求选择合适的计划
|
||||
|
||||
### 基础配置
|
||||
|
||||
打开Settings(`Cmd/Ctrl + ,`),配置以下选项:
|
||||
|
||||
```json
|
||||
{
|
||||
"cursor.ai.enable": true,
|
||||
"cursor.ai.model": "gpt-4",
|
||||
"cursor.completions.enable": true,
|
||||
"cursor.completions.multiline": true,
|
||||
"cursor.chat.enable": true
|
||||
}
|
||||
```
|
||||
|
||||
### 快捷键配置
|
||||
|
||||
#### 代码补全快捷键
|
||||
|
||||
- **接受建议**:`Tab` 或 `Enter`
|
||||
- **下一个建议**:`Alt + ]` 或 `Option + ]`
|
||||
- **上一个建议**:`Alt + [` 或 `Option + [`
|
||||
- **拒绝建议**:`Esc`
|
||||
|
||||
#### Chat快捷键
|
||||
|
||||
- **打开Chat**:`Cmd/Ctrl + L`
|
||||
- **选择代码并询问**:选中代码后按`Cmd/Ctrl + K`
|
||||
- **代码生成**:`Cmd/Ctrl + I`
|
||||
|
||||
### 项目配置
|
||||
|
||||
#### 创建新项目
|
||||
|
||||
1. 点击"File" → "Open Folder"
|
||||
2. 选择项目目录
|
||||
3. Cursor会自动识别项目类型和配置
|
||||
|
||||
#### 配置文件
|
||||
|
||||
Cursor会自动识别以下配置文件:
|
||||
|
||||
- `package.json`(Node.js项目)
|
||||
- `requirements.txt`(Python项目)
|
||||
- `Cargo.toml`(Rust项目)
|
||||
- `go.mod`(Go项目)
|
||||
- 其他项目配置文件
|
||||
|
||||
## ✅ 验证安装
|
||||
|
||||
### 检查安装
|
||||
|
||||
1. 打开Cursor编辑器
|
||||
2. 创建新文件(如`test.py`)
|
||||
3. 输入代码注释:`# 写一个函数计算两个数的和`
|
||||
4. 查看是否出现AI代码建议(灰色文字)
|
||||
5. 按`Tab`接受建议
|
||||
|
||||
### 测试示例
|
||||
|
||||
**Python示例**:
|
||||
|
||||
创建`test.py`文件,输入:
|
||||
|
||||
```python
|
||||
# 写一个函数,计算斐波那契数列的第n项
|
||||
```
|
||||
|
||||
应该会自动生成函数代码。
|
||||
|
||||
**JavaScript示例**:
|
||||
|
||||
创建`test.js`文件,输入:
|
||||
|
||||
```javascript
|
||||
// 创建一个函数,验证邮箱格式
|
||||
```
|
||||
|
||||
应该会自动生成验证函数。
|
||||
|
||||
### 测试Chat功能
|
||||
|
||||
1. 按`Cmd/Ctrl + L`打开Chat
|
||||
2. 输入问题:"如何使用Python创建一个RESTful API?"
|
||||
3. 查看AI回答和代码建议
|
||||
|
||||
## 🔍 常见问题
|
||||
|
||||
### 问题1:无法显示代码建议
|
||||
|
||||
**原因**:
|
||||
- 未登录账户
|
||||
- API配额用完(免费版)
|
||||
- 网络连接问题
|
||||
- AI功能未启用
|
||||
|
||||
**解决方案**:
|
||||
1. 检查是否已登录账户
|
||||
2. 检查API配额使用情况
|
||||
3. 检查网络连接
|
||||
4. 在Settings中确认AI功能已启用
|
||||
|
||||
### 问题2:代码建议不准确
|
||||
|
||||
**原因**:
|
||||
- 上下文信息不足
|
||||
- 选择的AI模型不适合当前任务
|
||||
|
||||
**解决方案**:
|
||||
1. 提供更详细的注释和代码上下文
|
||||
2. 尝试切换不同的AI模型
|
||||
3. 使用Chat功能提供更详细的说明
|
||||
|
||||
### 问题3:响应速度慢
|
||||
|
||||
**原因**:
|
||||
- 网络延迟
|
||||
- API服务器负载高
|
||||
- 代码上下文过大
|
||||
|
||||
**解决方案**:
|
||||
1. 检查网络连接
|
||||
2. 减少代码上下文(关闭不必要的文件)
|
||||
3. 考虑升级到Pro版(优先级更高)
|
||||
|
||||
### 问题4:快捷键冲突
|
||||
|
||||
**原因**:
|
||||
- 与其他应用快捷键冲突
|
||||
- 自定义快捷键配置不当
|
||||
|
||||
**解决方案**:
|
||||
1. 在Settings中查看和修改快捷键
|
||||
2. 取消冲突的快捷键绑定
|
||||
3. 设置自定义快捷键
|
||||
|
||||
## 📸 安装截图
|
||||
|
||||
### 下载页面
|
||||
|
||||
[插入下载页面截图]
|
||||
|
||||
### 安装界面
|
||||
|
||||
[插入安装界面截图]
|
||||
|
||||
### 首次启动界面
|
||||
|
||||
[插入首次启动界面截图]
|
||||
|
||||
### 代码补全示例
|
||||
|
||||
[插入代码补全示例截图]
|
||||
|
||||
## 🔗 相关链接
|
||||
|
||||
- [官方安装文档](https://cursor.sh/docs)
|
||||
- [快速开始指南](https://cursor.sh/docs/getting-started)
|
||||
- [快捷键参考](https://cursor.sh/docs/shortcuts)
|
||||
- [故障排除指南](https://cursor.sh/docs/troubleshooting)
|
||||
|
||||
---
|
||||
|
||||
**提示**:安装过程中遇到问题,请查看[常见问题](#常见问题)或访问[官方文档](https://cursor.sh/docs)。
|
||||
|
||||
|
|
@ -1,319 +0,0 @@
|
|||
# Cursor - Task 1: API开发测试报告
|
||||
|
||||
> **测试工具**:Cursor
|
||||
> **测试任务**:Task 1 - RESTful API开发
|
||||
> **测试日期**:2025-01-XX
|
||||
> **测试版本**:Cursor v0.40.0
|
||||
|
||||
## 📋 任务描述
|
||||
|
||||
使用Python + FastAPI开发一个用户管理系统的RESTful API,包含用户注册、登录、查询接口。
|
||||
|
||||
详细需求见:[Task 1 API开发](../test-standards/test-tasks/task1-api.md)
|
||||
|
||||
## 🛠️ 工具准备
|
||||
|
||||
### 安装步骤
|
||||
|
||||
1. **下载安装**
|
||||
- 访问Cursor官网(https://cursor.sh)
|
||||
- 下载macOS版本安装包
|
||||
- 安装时间:约5分钟
|
||||
|
||||
2. **账户配置**
|
||||
- 使用GitHub账号登录
|
||||
- 选择Pro版订阅($20/月)
|
||||
- 配置AI模型:GPT-4
|
||||
|
||||
3. **项目准备**
|
||||
- 创建Python虚拟环境:`python -m venv venv`
|
||||
- 激活虚拟环境:`source venv/bin/activate`
|
||||
- 安装依赖:`pip install fastapi uvicorn pydantic bcrypt python-jose`
|
||||
|
||||
### 版本信息
|
||||
|
||||
- **Cursor版本**:v0.40.0
|
||||
- **Python版本**:3.11.5
|
||||
- **FastAPI版本**:0.103.1
|
||||
- **操作系统**:macOS 14.2
|
||||
|
||||
## 📝 操作步骤
|
||||
|
||||
### 1. 工具调用
|
||||
|
||||
**调用方式**:使用Cursor Chat功能(`Cmd + L`)
|
||||
|
||||
**输入内容**:
|
||||
|
||||
```
|
||||
使用FastAPI创建一个用户管理系统的RESTful API,包含以下功能:
|
||||
1. 用户注册接口 (POST /api/users/register)
|
||||
- 接收用户名、邮箱、密码
|
||||
- 验证输入格式(邮箱格式、密码强度)
|
||||
- 检查用户名和邮箱是否已存在
|
||||
- 返回用户信息(不含密码)
|
||||
|
||||
2. 用户登录接口 (POST /api/users/login)
|
||||
- 接收用户名/邮箱和密码
|
||||
- 验证用户凭证
|
||||
- 返回JWT Token
|
||||
|
||||
3. 用户查询接口 (GET /api/users/{user_id})
|
||||
- 需要JWT认证
|
||||
- 返回指定用户的公开信息
|
||||
|
||||
技术要求:
|
||||
- 使用SQLite数据库
|
||||
- 实现密码加密(bcrypt)
|
||||
- 实现JWT认证
|
||||
- 代码符合PEP8规范
|
||||
- 提供API文档
|
||||
```
|
||||
|
||||
### 2. 生成结果
|
||||
|
||||
Cursor Chat生成了完整的项目结构和代码:
|
||||
|
||||
**项目结构**:
|
||||
```
|
||||
user-api/
|
||||
├── main.py # FastAPI应用入口
|
||||
├── models.py # Pydantic数据模型
|
||||
├── database.py # 数据库配置
|
||||
├── auth.py # JWT认证逻辑
|
||||
├── routers/
|
||||
│ └── users.py # 用户相关路由
|
||||
├── requirements.txt # 依赖清单
|
||||
└── README.md # 项目说明
|
||||
```
|
||||
|
||||
**主要代码文件**(见`task1-original-cursor/`目录)
|
||||
|
||||
### 3. 人工调整
|
||||
|
||||
#### 修改点1:数据库初始化
|
||||
|
||||
**原始代码**:
|
||||
```python
|
||||
# database.py中缺少数据库表创建逻辑
|
||||
```
|
||||
|
||||
**修改后**:
|
||||
```python
|
||||
# 添加了数据库初始化函数
|
||||
def init_db():
|
||||
Base.metadata.create_all(bind=engine)
|
||||
```
|
||||
|
||||
**修改原因**:需要自动创建数据库表
|
||||
|
||||
#### 修改点2:错误处理
|
||||
|
||||
**原始代码**:
|
||||
```python
|
||||
# 部分错误处理不够完善
|
||||
```
|
||||
|
||||
**修改后**:
|
||||
```python
|
||||
# 添加了统一的错误处理中间件
|
||||
@app.exception_handler(HTTPException)
|
||||
async def http_exception_handler(request, exc):
|
||||
return JSONResponse(
|
||||
status_code=exc.status_code,
|
||||
content={"error": exc.detail}
|
||||
)
|
||||
```
|
||||
|
||||
**修改原因**:需要统一的错误响应格式
|
||||
|
||||
#### 修改点3:代码格式
|
||||
|
||||
**原始代码**:
|
||||
- 部分代码缩进不一致
|
||||
- 部分变量命名不规范
|
||||
|
||||
**修改后**:
|
||||
- 使用black格式化代码
|
||||
- 调整变量命名符合PEP8规范
|
||||
|
||||
**修改原因**:代码格式不符合规范
|
||||
|
||||
### 4. 测试验证
|
||||
|
||||
**测试工具**:Postman
|
||||
|
||||
**测试结果**:
|
||||
|
||||
1. **用户注册接口**
|
||||
- ✅ 正常注册成功
|
||||
- ✅ 重复用户名返回错误
|
||||
- ✅ 邮箱格式验证正常
|
||||
- ✅ 密码强度验证正常
|
||||
|
||||
2. **用户登录接口**
|
||||
- ✅ 登录成功返回JWT Token
|
||||
- ✅ 错误密码返回401错误
|
||||
- ✅ Token格式正确
|
||||
|
||||
3. **用户查询接口**
|
||||
- ✅ 有效Token可以查询用户信息
|
||||
- ✅ 无效Token返回401错误
|
||||
- ✅ 用户不存在返回404错误
|
||||
|
||||
## 📊 结果评估
|
||||
|
||||
### 效率指标
|
||||
|
||||
- **开发耗时**:18分钟
|
||||
- 工具生成时间:10分钟
|
||||
- 人工调整时间:6分钟
|
||||
- 测试验证时间:2分钟
|
||||
- **交互次数**:3次
|
||||
- 初始需求输入:1次
|
||||
- 补充需求(添加错误处理):1次
|
||||
- 格式调整请求:1次
|
||||
- **自动化程度**:85%
|
||||
- 总代码行数:约350行
|
||||
- 工具生成:约300行
|
||||
- 人工修改:约50行
|
||||
|
||||
### 质量指标
|
||||
|
||||
- **代码正确率**:90%
|
||||
- 无需修改:约250行
|
||||
- 少量修改(<10行):约50行
|
||||
- 大量修改(>10行):约50行(主要是错误处理和初始化)
|
||||
- **测试通过率**:100%
|
||||
- 总测试用例:12个
|
||||
- 通过测试:12个
|
||||
- 失败测试:0个
|
||||
- **可读性评分**:4/5
|
||||
- 命名规范:4分(基本清晰)
|
||||
- 代码结构:5分(结构清晰)
|
||||
- 注释质量:3分(注释较少)
|
||||
- 代码风格:4分(基本符合PEP8)
|
||||
- **安全性评分**:5/5
|
||||
- 输入验证:✓(1分)
|
||||
- SQL注入防护:✓(使用ORM,1分)
|
||||
- 认证授权:✓(JWT实现正确,1分)
|
||||
- 敏感信息:✓(密码加密,1分)
|
||||
- 依赖安全:✓(使用最新版本,1分)
|
||||
|
||||
### 易用性指标
|
||||
|
||||
- **学习曲线**:5步
|
||||
1. 安装Cursor编辑器
|
||||
2. 登录账户
|
||||
3. 打开Chat(Cmd+L)
|
||||
4. 输入需求
|
||||
5. 获得代码
|
||||
- **上手难度**:2/5(容易)
|
||||
|
||||
### 适配性指标
|
||||
|
||||
- **语言/框架兼容性**:✅ 优秀
|
||||
- Python支持:优秀
|
||||
- FastAPI支持:优秀
|
||||
- 数据库ORM:支持SQLAlchemy
|
||||
- **平台兼容性**:✅ 优秀
|
||||
- macOS:✅ 支持
|
||||
- Windows:✅ 支持
|
||||
- Linux:✅ 支持
|
||||
|
||||
## ✅ 优缺点分析
|
||||
|
||||
### 优点
|
||||
|
||||
1. **功能完整性**:✅ 优秀
|
||||
- 生成了完整的API代码,包含所有必需功能
|
||||
- 代码结构清晰,模块划分合理
|
||||
|
||||
2. **代码质量**:✅ 良好
|
||||
- 生成的代码基本符合FastAPI最佳实践
|
||||
- 安全性考虑较好(密码加密、JWT认证)
|
||||
|
||||
3. **响应速度**:✅ 优秀
|
||||
- 平均响应时间:8秒
|
||||
- 交互流畅,无需等待
|
||||
|
||||
4. **易用性**:✅ 优秀
|
||||
- 安装配置简单
|
||||
- 使用Chat功能直观方便
|
||||
|
||||
### 缺点
|
||||
|
||||
1. **错误处理**:❌ 需要改进
|
||||
- 生成的代码缺少统一的错误处理机制
|
||||
- 部分边界条件处理不当
|
||||
|
||||
2. **代码注释**:❌ 不足
|
||||
- 生成的代码注释较少
|
||||
- 缺少函数文档字符串
|
||||
|
||||
3. **数据库初始化**:❌ 需要改进
|
||||
- 生成的代码缺少数据库表自动创建逻辑
|
||||
- 需要手动添加初始化代码
|
||||
|
||||
4. **代码格式**:⚠️ 需要调整
|
||||
- 部分代码格式不符合PEP8规范
|
||||
- 需要使用格式化工具后处理
|
||||
|
||||
## 📸 截图
|
||||
|
||||
### Chat界面
|
||||
|
||||
[插入Cursor Chat界面截图]
|
||||
|
||||
### 生成的代码
|
||||
|
||||
[插入生成代码截图]
|
||||
|
||||
### 测试结果
|
||||
|
||||
[插入Postman测试结果截图]
|
||||
|
||||
## 📁 代码文件
|
||||
|
||||
### 原始生成结果
|
||||
|
||||
- `task1-original-cursor/main.py` - 原始main.py
|
||||
- `task1-original-cursor/models.py` - 原始models.py
|
||||
- `task1-original-cursor/database.py` - 原始database.py
|
||||
- `task1-original-cursor/auth.py` - 原始auth.py
|
||||
- `task1-original-cursor/routers/users.py` - 原始users.py
|
||||
|
||||
### 最终可用结果
|
||||
|
||||
- `task1-final-cursor/main.py` - 修改后的main.py
|
||||
- `task1-final-cursor/models.py` - 修改后的models.py
|
||||
- `task1-final-cursor/database.py` - 修改后的database.py
|
||||
- `task1-final-cursor/auth.py` - 修改后的auth.py
|
||||
- `task1-final-cursor/routers/users.py` - 修改后的users.py
|
||||
|
||||
### 修改记录
|
||||
|
||||
- `task1-changes-cursor.md` - 详细修改记录和说明
|
||||
|
||||
## 📝 测试总结
|
||||
|
||||
Cursor在代码生成任务中表现优秀,能够快速生成完整的API代码。生成的代码质量较高,符合FastAPI最佳实践,安全性考虑也较好。主要不足是错误处理和代码注释需要改进,但这些可以通过简单的人工调整解决。
|
||||
|
||||
**推荐度**:⭐⭐⭐⭐⭐ 强烈推荐
|
||||
|
||||
**适用场景**:
|
||||
- ✅ 快速原型开发
|
||||
- ✅ API接口开发
|
||||
- ✅ 学习框架使用
|
||||
- ✅ 中小型项目
|
||||
|
||||
**不适用场景**:
|
||||
- ❌ 大型企业项目(需要更严格的代码审查)
|
||||
- ❌ 完全离线环境(需要联网)
|
||||
|
||||
---
|
||||
|
||||
**测试人员**:[测试人员姓名]
|
||||
**审核人员**:[审核人员姓名]
|
||||
**测试环境**:macOS 14.2, Python 3.11.5, Cursor v0.40.0
|
||||
|
||||
|
|
@ -1,103 +0,0 @@
|
|||
# GitHub Copilot - 工具概览
|
||||
|
||||
> **工具类型**:代码生成
|
||||
> **工具分类**:code-generation
|
||||
|
||||
## 📋 基本信息
|
||||
|
||||
### 工具简介
|
||||
|
||||
GitHub Copilot是由GitHub和OpenAI合作开发的AI代码生成工具,能够根据注释和代码上下文自动生成代码建议。
|
||||
|
||||
### 官方网站
|
||||
|
||||
- **官网**:https://github.com/features/copilot
|
||||
- **GitHub**:https://github.com/github/copilot-docs
|
||||
- **文档**:https://docs.github.com/copilot
|
||||
|
||||
### 定价信息
|
||||
|
||||
- **免费版**:学生和开源维护者免费
|
||||
- **付费版**:$10/月(个人版),$19/用户/月(企业版)
|
||||
- **开源**:否
|
||||
|
||||
### 大模型底座
|
||||
|
||||
- **底层模型**:GPT-4(推测)
|
||||
- **模型版本**:未公开
|
||||
|
||||
## 🎯 核心功能
|
||||
|
||||
### 主要功能
|
||||
|
||||
1. **代码补全**:根据注释和上下文自动补全代码
|
||||
2. **代码生成**:根据自然语言描述生成完整函数
|
||||
3. **多语言支持**:支持30+编程语言
|
||||
4. **IDE集成**:支持VS Code、JetBrains IDE等
|
||||
|
||||
### 适用场景
|
||||
|
||||
- 快速原型开发
|
||||
- 学习新框架和语言
|
||||
- 日常编码辅助
|
||||
- 代码片段生成
|
||||
|
||||
### 不适用场景
|
||||
|
||||
- 需要完全本地部署的场景
|
||||
- 对代码质量要求极高的生产环境
|
||||
- 需要定制化的特殊需求
|
||||
|
||||
## 🛠️ 技术栈支持
|
||||
|
||||
### 支持的编程语言
|
||||
|
||||
- **Python**:✅ 支持(版本要求:3.8+)
|
||||
- **JavaScript/TypeScript**:✅ 支持
|
||||
- **Java**:✅ 支持
|
||||
- **Go**:✅ 支持
|
||||
- **Rust**:✅ 支持
|
||||
- **其他**:C++、C#、PHP、Ruby、Swift等
|
||||
|
||||
### 支持的框架
|
||||
|
||||
- **Web框架**:FastAPI、Flask、Django、React、Vue、Angular等
|
||||
- **数据库**:SQLAlchemy、TypeORM、Prisma等
|
||||
- **其他**:主流框架和库
|
||||
|
||||
### IDE集成
|
||||
|
||||
- **VS Code**:✅ 支持(官方插件)
|
||||
- **IntelliJ IDEA**:✅ 支持(官方插件)
|
||||
- **PyCharm**:✅ 支持(官方插件)
|
||||
- **其他**:JetBrains系列IDE、Neovim等
|
||||
|
||||
## 🚀 部署方式
|
||||
|
||||
### 云端服务
|
||||
|
||||
- **SaaS**:✅ 支持(提供云端服务)
|
||||
- **API**:✅ 支持(通过IDE插件调用)
|
||||
|
||||
### 本地部署
|
||||
|
||||
- **本地安装**:✅ 支持(方式:IDE插件)
|
||||
- **本地模型**:❌ 不支持
|
||||
|
||||
### 混合部署
|
||||
|
||||
- **本地+云端**:✅ 支持(本地插件+云端模型)
|
||||
|
||||
## 📊 版本信息
|
||||
|
||||
### 当前版本
|
||||
|
||||
- **版本号**:v1.0.0+
|
||||
- **发布日期**:2021-10-XX
|
||||
- **最后更新**:持续更新
|
||||
|
||||
### 版本历史
|
||||
|
||||
- **v1.0.0**(2021-10):正式发布
|
||||
- **持续更新**:定期发布新功能和改进
|
||||
|
||||
|
|
@ -1,153 +0,0 @@
|
|||
# GitHub Copilot - 安装配置指南
|
||||
|
||||
## 📋 前置要求
|
||||
|
||||
### 系统要求
|
||||
|
||||
- **操作系统**:macOS、Windows、Linux
|
||||
- **硬件要求**:无特殊要求
|
||||
- **网络要求**:需要稳定的互联网连接
|
||||
|
||||
### IDE要求
|
||||
|
||||
- **VS Code**:1.60.0+
|
||||
- **JetBrains IDE**:2021.3+
|
||||
- **其他IDE**:支持Copilot的IDE
|
||||
|
||||
## 🔧 安装步骤
|
||||
|
||||
### 方式1:VS Code插件安装
|
||||
|
||||
#### 1. 注册GitHub账号
|
||||
|
||||
1. 访问[GitHub官网](https://github.com)
|
||||
2. 注册新账号或登录现有账号
|
||||
3. 验证邮箱
|
||||
|
||||
#### 2. 订阅GitHub Copilot
|
||||
|
||||
1. 访问[GitHub Copilot官网](https://github.com/features/copilot)
|
||||
2. 点击"Start free trial"或"Subscribe"
|
||||
3. 选择订阅方案(个人版或企业版)
|
||||
4. 完成支付(如有需要)
|
||||
|
||||
#### 3. 安装VS Code插件
|
||||
|
||||
1. 打开VS Code
|
||||
2. 点击左侧"扩展"图标(Extensions)
|
||||
3. 搜索"GitHub Copilot"
|
||||
4. 点击"安装"(Install)
|
||||
5. 安装完成后,点击"重载"(Reload)
|
||||
|
||||
#### 4. 登录GitHub
|
||||
|
||||
1. 安装插件后,VS Code会提示登录GitHub
|
||||
2. 点击"Sign in with GitHub"
|
||||
3. 在浏览器中完成授权
|
||||
4. 确认登录成功
|
||||
|
||||
### 方式2:JetBrains IDE插件安装
|
||||
|
||||
#### 1. 安装插件
|
||||
|
||||
1. 打开IntelliJ IDEA/PyCharm等IDE
|
||||
2. 进入Settings/Preferences → Plugins
|
||||
3. 搜索"GitHub Copilot"
|
||||
4. 点击"Install"
|
||||
5. 重启IDE
|
||||
|
||||
#### 2. 登录GitHub
|
||||
|
||||
1. 进入Tools → GitHub Copilot → Login
|
||||
2. 在浏览器中完成授权
|
||||
3. 确认登录成功
|
||||
|
||||
## ⚙️ 配置说明
|
||||
|
||||
### VS Code配置
|
||||
|
||||
打开VS Code设置(Settings),搜索"copilot":
|
||||
|
||||
```json
|
||||
{
|
||||
"github.copilot.enable": {
|
||||
"*": true,
|
||||
"yaml": true,
|
||||
"plaintext": true,
|
||||
"markdown": true
|
||||
},
|
||||
"github.copilot.editor.enableAutoCompletions": true,
|
||||
"github.copilot.suggestions.enabled": true
|
||||
}
|
||||
```
|
||||
|
||||
### 快捷键配置
|
||||
|
||||
- **接受建议**:`Tab` 或 `Enter`
|
||||
- **下一个建议**:`Alt + ]` 或 `Option + ]`
|
||||
- **上一个建议**:`Alt + [` 或 `Option + [`
|
||||
- **触发建议**:`Ctrl + Enter` 或 `Cmd + Enter`
|
||||
|
||||
## ✅ 验证安装
|
||||
|
||||
### 检查安装
|
||||
|
||||
1. 在VS Code中打开任意代码文件
|
||||
2. 输入注释或函数名
|
||||
3. 查看是否出现代码建议(灰色文字)
|
||||
4. 按`Tab`接受建议
|
||||
|
||||
### 测试示例
|
||||
|
||||
在Python文件中输入:
|
||||
|
||||
```python
|
||||
# 写一个函数,计算两个数的和
|
||||
```
|
||||
|
||||
应该会自动生成函数代码。
|
||||
|
||||
## 🔍 常见问题
|
||||
|
||||
### 问题1:无法显示代码建议
|
||||
|
||||
**原因**:未正确登录或订阅过期
|
||||
|
||||
**解决方案**:
|
||||
1. 检查GitHub账号登录状态
|
||||
2. 检查Copilot订阅状态
|
||||
3. 重新登录GitHub
|
||||
|
||||
### 问题2:建议不准确
|
||||
|
||||
**原因**:上下文信息不足
|
||||
|
||||
**解决方案**:
|
||||
1. 提供更详细的注释
|
||||
2. 提供更多代码上下文
|
||||
3. 明确函数参数和返回值
|
||||
|
||||
## 📸 安装截图
|
||||
|
||||
### VS Code插件安装
|
||||
|
||||
[插入插件安装截图]
|
||||
|
||||
### 登录界面
|
||||
|
||||
[插入登录界面截图]
|
||||
|
||||
### 代码建议示例
|
||||
|
||||
[插入代码建议示例截图]
|
||||
|
||||
## 🔗 相关链接
|
||||
|
||||
- [官方安装文档](https://docs.github.com/copilot/getting-started-with-github-copilot)
|
||||
- [故障排除指南](https://docs.github.com/copilot/troubleshooting-github-copilot)
|
||||
- [VS Code Copilot设置](https://code.visualstudio.com/docs/copilot/settings)
|
||||
|
||||
---
|
||||
|
||||
**提示**:安装过程中遇到问题,请查看[常见问题](#常见问题)或提交[Issue](../../../.github/ISSUE_TEMPLATE/bug_report.md)。
|
||||
|
||||
|
|
@ -1,159 +0,0 @@
|
|||
# GitHub Copilot - Task 1: API开发测试结果
|
||||
|
||||
> **测试工具**:GitHub Copilot
|
||||
> **测试任务**:Task 1 - RESTful API开发
|
||||
> **测试日期**:待测试
|
||||
> **测试环境**:待测试
|
||||
> **工具版本**:GitHub Copilot v1.0.0+
|
||||
|
||||
## 📋 任务描述
|
||||
|
||||
使用Python + FastAPI开发一个用户管理系统的RESTful API,包含用户注册、登录、查询接口。
|
||||
|
||||
详细需求见:[Task 1 API开发](../../../test-standards/test-tasks/task1-api.md)
|
||||
|
||||
## ⚠️ 测试状态
|
||||
|
||||
**当前状态**:待测试
|
||||
|
||||
**说明**:此测试结果文件已创建,但尚未进行实际测试。GitHub Copilot需要:
|
||||
- GitHub账户和订阅($10/月个人版或免费学生版)
|
||||
- VS Code或JetBrains IDE
|
||||
- 安装GitHub Copilot插件
|
||||
- 网络连接(云端服务)
|
||||
|
||||
**测试计划**:
|
||||
1. 安装GitHub Copilot插件
|
||||
2. 配置账户和订阅
|
||||
3. 使用Task 1标准测试用例进行测试
|
||||
4. 记录测试结果和评估指标
|
||||
|
||||
## 🛠️ 工具准备
|
||||
|
||||
### 预期安装步骤
|
||||
|
||||
1. **安装IDE插件**
|
||||
- VS Code: 安装"GitHub Copilot"插件
|
||||
- JetBrains IDE: 安装"GitHub Copilot"插件
|
||||
|
||||
2. **账户配置**
|
||||
- 登录GitHub账户
|
||||
- 激活Copilot订阅(学生免费,个人$10/月)
|
||||
- 在IDE中授权Copilot
|
||||
|
||||
3. **项目准备**
|
||||
- 创建Python虚拟环境
|
||||
- 安装依赖:`pip install fastapi uvicorn pydantic bcrypt python-jose`
|
||||
|
||||
### 预期版本信息
|
||||
|
||||
- **Copilot版本**:v1.0.0+(持续更新)
|
||||
- **Python版本**:3.10+
|
||||
- **FastAPI版本**:0.103.1+
|
||||
- **IDE版本**:VS Code 1.85.0+ 或 JetBrains 2023.3+
|
||||
|
||||
## 📝 预期测试流程
|
||||
|
||||
### 1. 工具调用方式
|
||||
|
||||
**预期方式**:
|
||||
- 在代码编辑器中输入注释或函数签名
|
||||
- Copilot自动提供代码建议
|
||||
- 使用Tab键接受建议
|
||||
- 使用`Ctrl+Enter`(Windows)或`Cmd+Enter`(Mac)打开Copilot Chat
|
||||
|
||||
### 2. 输入内容
|
||||
|
||||
**预期输入方式**:
|
||||
- 在文件中输入注释描述需求
|
||||
- 或使用Copilot Chat功能输入完整需求
|
||||
|
||||
**示例输入**:
|
||||
```python
|
||||
# 使用FastAPI创建一个用户管理系统的RESTful API
|
||||
# 包含用户注册、登录、查询接口
|
||||
# 使用SQLite数据库,实现JWT认证和密码加密
|
||||
```
|
||||
|
||||
### 3. 预期评估要点
|
||||
|
||||
- **代码完整性**:是否生成所有必需的接口
|
||||
- **代码正确性**:生成的代码是否能直接运行
|
||||
- **响应速度**:代码建议的响应速度
|
||||
- **代码质量**:是否符合PEP8和FastAPI最佳实践
|
||||
- **安全性**:是否正确实现密码加密和JWT认证
|
||||
- **交互便利性**:需要多少次交互才能完成
|
||||
|
||||
## 📊 预期评估指标
|
||||
|
||||
### 效率指标
|
||||
|
||||
| 指标 | 预期值 | 说明 |
|
||||
|-----|--------|------|
|
||||
| 开发耗时 | 待测试 | 预期:15-30分钟 |
|
||||
| 交互次数 | 待测试 | 预期:5-10次 |
|
||||
| 响应速度 | 待测试 | 预期:1-3秒/次 |
|
||||
| 自动化程度 | 待测试 | 预期:75-90% |
|
||||
|
||||
### 质量指标
|
||||
|
||||
| 指标 | 预期值 | 说明 |
|
||||
|-----|--------|------|
|
||||
| 代码正确率 | 待测试 | 预期:80-90% |
|
||||
| 测试通过率 | 待测试 | 预期:85-95% |
|
||||
| 可读性评分 | 待测试 | 预期:16-19/20 |
|
||||
| 安全性评分 | 待测试 | 预期:4-5/5 |
|
||||
| 规范性评分 | 待测试 | 预期:4-5/5 |
|
||||
|
||||
## 🔄 与其他工具对比(预期)
|
||||
|
||||
### vs Cursor
|
||||
|
||||
| 维度 | GitHub Copilot | Cursor |
|
||||
|-----|----------------|--------|
|
||||
| 代码质量 | 待测试 | ⭐⭐⭐⭐ |
|
||||
| 响应速度 | 待测试 | ⭐⭐⭐⭐⭐ |
|
||||
| 价格 | ⭐⭐⭐($10/月) | ⭐⭐⭐($20/月) |
|
||||
| IDE集成 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
|
||||
| 代码补全 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
|
||||
|
||||
### vs CodeLlama
|
||||
|
||||
| 维度 | GitHub Copilot | CodeLlama |
|
||||
|-----|----------------|-----------|
|
||||
| 代码质量 | 待测试 | 待测试 |
|
||||
| 响应速度 | 待测试(快) | 待测试(慢) |
|
||||
| 价格 | ⭐⭐⭐($10/月) | ⭐⭐⭐⭐⭐(免费) |
|
||||
| 本地部署 | ❌ 不支持 | ✅ 支持 |
|
||||
| 离线使用 | ❌ 不支持 | ✅ 支持 |
|
||||
|
||||
## 📝 测试记录
|
||||
|
||||
**待补充**:实际测试结果将在此处记录
|
||||
|
||||
### 预期测试步骤
|
||||
|
||||
1. **创建项目结构**
|
||||
- 创建FastAPI项目目录
|
||||
- 初始化虚拟环境
|
||||
- 安装依赖
|
||||
|
||||
2. **使用Copilot生成代码**
|
||||
- 输入注释描述需求
|
||||
- 接受Copilot建议
|
||||
- 使用Copilot Chat补充功能
|
||||
|
||||
3. **测试验证**
|
||||
- 运行API服务
|
||||
- 使用Postman测试接口
|
||||
- 验证功能正确性
|
||||
|
||||
4. **记录结果**
|
||||
- 记录生成时间
|
||||
- 记录交互次数
|
||||
- 记录代码质量评估
|
||||
|
||||
---
|
||||
|
||||
**提示**:此测试结果文件为模板,需要实际安装和测试GitHub Copilot后才能填写完整内容。测试时请参考[测试标准](../../../test-standards/test-flow.md)和[效率指标](../../../test-standards/metrics/efficiency-metrics.md)。
|
||||
|
||||