Compare commits

...

4 Commits
master ... zkx

76 changed files with 8601 additions and 0 deletions

View File

@ -0,0 +1,37 @@
---
name: Bug报告
about: 报告仓库中的问题或错误
title: '[BUG] '
labels: bug
assignees: ''
---
## 🐛 Bug描述
请简洁清晰地描述bug。
## 🔍 复现步骤
1. 进入 '...'
2. 点击 '...'
3. 滚动到 '...'
4. 看到错误
## ✅ 期望行为
请描述您期望的行为。
## 📸 截图
如有截图,请添加。
## 💻 环境信息
- **操作系统**[如 macOS 14.0]
- **浏览器**[如 Chrome 120]
- **仓库版本**[如 v0.1.0]
## 📝 其他信息
添加任何其他相关的上下文信息。

View File

@ -0,0 +1,28 @@
---
name: 文档改进
about: 建议改进仓库文档
title: '[文档] '
labels: documentation
assignees: ''
---
## 📝 文档问题
请描述文档问题或改进建议。
## 📍 相关文档
[相关文档路径]
## 💡 改进建议
请描述您的改进建议。
## 🔗 相关Issue
如有相关Issue请链接。
## 📝 其他信息
添加任何其他相关的信息。

View File

@ -0,0 +1,67 @@
---
name: 新工具建议
about: 建议添加新的AI4SE工具
title: '[新工具] '
labels: enhancement
assignees: ''
---
## 🛠️ 工具基本信息
### 工具名称
[工具名称]
### 工具类型
- [ ] 需求分析类
- [ ] 架构设计类
- [ ] 代码生成类
- [ ] 调试排障类
- [ ] 代码重构类
- [ ] 测试生成类
- [ ] 文档生成类
- [ ] 代码审查类
- [ ] 项目管理类
- [ ] DevOps/CI-CD类
- [ ] 本地化大模型类
- [ ] 全流程集成类
### 官方网站
[工具官网链接]
### 开源地址(如适用)
[GitHub仓库链接]
### 定价信息
- 免费 / 付费 / 开源
## 📋 工具功能
请简要描述工具的核心功能。
## ✅ 工具筛选标准
### 功能匹配
- [ ] 是AI驱动的软件工程工具
- [ ] 功能明确,有实际使用价值
### 可用性
- [ ] 开源工具 / 免费试用版 / API可调用
- [ ] 便于读者复现测试
### 活跃度
- [ ] 开源工具近6个月有更新GitHub星数≥1k
- [ ] 闭源工具:行业主流工具
### 多样性
- [ ] 覆盖不同技术栈Python/JS/Java等
- [ ] 不同部署方式(云端/本地)
- [ ] 不同大模型底座GPT-4/CodeLlama/Qwen等
## 🎯 推荐理由
请说明为什么推荐这个工具,以及它与其他工具的区别。
## 📝 其他信息
添加任何其他相关的信息。

View File

@ -0,0 +1,54 @@
# Pull Request
## 📋 变更说明
请简要描述本次PR的变更内容。
## 🎯 变更类型
- [ ] 新增工具测试报告
- [ ] 更新现有工具测试
- [ ] 补充测试任务
- [ ] 完善文档
- [ ] 修复bug
- [ ] 其他(请说明)
## 🛠️ 变更内容
### 新增工具(如适用)
- **工具名称**[工具名称]
- **工具类型**[工具类型]
- **测试任务**[完成的测试任务]
- **工具链接**[工具详情链接]
### 更新内容(如适用)
- [ ] 更新工具测试结果
- [ ] 更新工具版本信息
- [ ] 补充测试场景
- [ ] 修复测试错误
- [ ] 完善文档
## ✅ 检查清单
- [ ] 遵循工具详情模板格式
- [ ] 完成至少1个测试任务的测试
- [ ] 提供详细的测试步骤和结果
- [ ] 包含必要的截图或代码示例
- [ ] 更新相关的对比表格(如适用)
- [ ] 检查文档格式和链接有效性
- [ ] 通过Markdown语法检查
## 📸 截图
如有截图,请添加。
## 🔗 相关Issue
如有相关Issue请链接。
## 📝 其他信息
添加任何其他相关的信息。

53
AI4SE-survey/.gitignore vendored Normal file
View File

@ -0,0 +1,53 @@
# 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

48
AI4SE-survey/CHANGELOG.md Normal file
View File

@ -0,0 +1,48 @@
# 更新日志
本文件记录仓库的所有重要更新。
格式基于 [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并更新了工具测试或添加了新工具请在本文件的"未发布"部分添加您的更新内容。

View File

@ -0,0 +1,189 @@
# 贡献指南
感谢您对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)
再次感谢您的贡献!🎉

22
AI4SE-survey/LICENSE Normal file
View File

@ -0,0 +1,22 @@
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.

194
AI4SE-survey/README.md Normal file
View File

@ -0,0 +1,194 @@
# AI4SE Survey - AI驱动的软件工程工具调研仓库
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](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赋能软件工程让工具选择更简单** 🚀

95
AI4SE-survey/SUMMARY.md Normal file
View File

@ -0,0 +1,95 @@
# 目录索引
本文档提供仓库的完整导航索引,帮助您快速找到所需内容。
## 📖 核心文档
- [README.md](./README.md) - 仓库总览和快速开始
- [CHANGELOG.md](./CHANGELOG.md) - 版本更新记录
- [CONTRIBUTING.md](./CONTRIBUTING.md) - 贡献指南
## 🛠️ 工具分类
### 1. [需求分析类](./tools/requirements-analysis/)
AI辅助需求提取、需求分析、用户故事生成等工具
### 2. [架构设计类](./tools/architecture-design/)
AI辅助系统架构设计、技术选型、设计模式应用等工具
### 3. [代码生成类](./tools/code-generation/)
AI生成代码片段、完整文件、API接口等工具
- 示例工具GitHub Copilot、CodeLlama、CodeGeeX、Cursor
### 4. [调试排障类](./tools/debugging/)
AI辅助定位bug、提供修复方案、性能分析等工具
- 示例工具Sentry AI、DebugGPT、CodeLlama Debug
### 5. [代码重构类](./tools/refactoring/)
AI辅助优化代码结构、提升性能/可读性、消除技术债务等工具
- 示例工具RefactorGPT、SonarQube AI、Cursor Refactor
### 6. [测试生成类](./tools/test-generation/)
AI自动生成单元测试、接口测试、集成测试用例等工具
- 示例工具TestGPT、Copilot X Test Generation、LangChain Test Builder
### 7. [文档生成类](./tools/documentation/)
AI根据代码生成注释、API文档、技术方案等工具
- 示例工具AutoDoc、CodeWhisperer Docs、DocGPT
### 8. [代码审查类](./tools/code-review/)
AI辅助代码审查、安全漏洞检测、代码规范检查等工具
### 9. [项目管理类](./tools/project-management/)
AI辅助项目计划、任务分解、进度跟踪、风险识别等工具
### 10. [DevOps/CI-CD类](./tools/devops-ci-cd/)
AI辅助持续集成、部署自动化、监控告警等工具
### 11. [本地化大模型类](./tools/local-models/)
可本地部署的开发辅助大模型
- 示例工具CodeLlama、StarCoder、Qwen-Coder
### 12. [全流程集成类](./tools/full-flow/)
覆盖软件工程全生命周期的端到端工具
- 示例工具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. [测试标准](./test-standards/test-flow.md) - 了解测试方法
3. [工具对比表](./comparisons/tool-comparison-table.md) - 快速对比工具
4. 选择感兴趣的[工具分类](./tools/) - 深入了解具体工具

328
AI4SE-survey/api/README.md Normal file
View File

@ -0,0 +1,328 @@
# 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)。

View File

@ -0,0 +1,6 @@
"""
AI4SE Survey API
"""
__version__ = "0.1.0"

62
AI4SE-survey/api/main.py Normal file
View File

@ -0,0 +1,62 @@
"""
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",
)
# 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)

View File

@ -0,0 +1,4 @@
"""
API路由
"""

View File

@ -0,0 +1,121 @@
"""
测试结果相关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} 已删除"}

View File

@ -0,0 +1,135 @@
"""
测试任务相关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]

View File

@ -0,0 +1,154 @@
"""
工具相关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),
}

View File

@ -0,0 +1,4 @@
"""
API数据模型
"""

View File

@ -0,0 +1,112 @@
"""
测试任务相关的数据模型
"""
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

View File

@ -0,0 +1,141 @@
"""
工具相关的数据模型
"""
from datetime import datetime
from typing import List, Optional, Dict, Any
from enum import Enum
from pydantic import BaseModel, Field, HttpUrl
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):
"""工具基础模型"""
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] = None
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

View File

@ -0,0 +1,4 @@
"""
服务层
"""

View File

@ -0,0 +1,96 @@
"""
测试服务
"""
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

View File

@ -0,0 +1,259 @@
"""
工具信息服务
"""
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.dict()) 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.dict())
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.dict())
for tool in tools.values()
if tool.type == tool_type
]
def clear_cache(self):
"""清除缓存"""
self._tools_cache = None

View File

@ -0,0 +1,242 @@
# 开源工具 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/) - 查看各工具的详细测试报告
---
**提示**:开源和闭源工具各有优缺点,建议根据实际需求、预算、技术能力和安全要求进行选择。

View File

@ -0,0 +1,467 @@
# 场景选型指南
本文档按使用场景推荐合适的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/) - 查看各工具的详细测试报告
---
**提示**:选型建议基于当前测试结果,建议根据实际需求结合工具详细报告进行决策。

View File

@ -0,0 +1,141 @@
# 工具对比表
本文档汇总所有AI4SE工具的核心指标对比帮助读者快速比较不同工具。
## 📊 对比说明
### 对比维度
- **效率指标**:开发耗时、交互次数、响应速度、自动化程度
- **质量指标**:代码正确率、测试通过率、可读性、安全性、规范性
- **易用性指标**学习曲线、上手难度、IDE集成、文档质量
- **适配性指标**:语言支持、框架支持、平台兼容性、本地部署
- **其他指标**:价格、开源状态、社区活跃度、更新频率
### 评分说明
- **评分范围**1-5分5分最高
- **综合评分**各项指标加权平均效率×0.3 + 质量×0.3 + 易用性×0.2 + 适配性×0.2
- **测试任务**基于Task 1API开发测试结果
### 数据来源
- **测试日期**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) - 了解测试方法和评估指标
---
**提示**:对比表数据基于当前测试结果,工具更新后可能需要重新测试。建议查看各工具的详细测试报告获取更多信息。

View File

View File

@ -0,0 +1,28 @@
# 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

View File

@ -0,0 +1,418 @@
# 常见问题
本文档汇总AI4SE工具使用中的常见问题和解决方案。
## 🔧 安装配置问题
### 问题1API密钥配置失败
**现象**
- 工具提示"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或参与讨论。

View File

@ -0,0 +1,273 @@
# 学习路径
本文档提供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 1API开发测试](../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 1API开发
- [ ] 熟悉工具的基本功能和快捷键
### 进阶阶段
- [ ] 掌握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/)。

View File

@ -0,0 +1,174 @@
# 相关资源
本文档汇总与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。

View File

@ -0,0 +1,306 @@
# 趋势分析
本文档分析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)
---
**提示**:趋势分析基于当前数据和预测,实际发展可能有所不同。建议定期查看本文档获取最新趋势分析。

15
AI4SE-survey/run.py Normal file
View File

@ -0,0 +1,15 @@
#!/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",
)

View File

@ -0,0 +1,291 @@
# 依赖清单
本文档定义测试环境的依赖版本要求。
## 🐍 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+
```
---
**注意**:所有测试应该在相同版本的依赖环境下进行,以确保测试结果的可比性。如有依赖更新,应及时更新本文档。

View File

@ -0,0 +1,173 @@
# 硬件要求
本文档定义测试环境的硬件配置要求。
## 💻 基础硬件要求
### CPU
- **最低要求**Intel Core i5 或 AMD Ryzen 54核心
- **推荐配置**Intel Core i7 或 AMD Ryzen 78核心
- **架构**x64 或 ARM64Apple 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 916核心+
- **内存**32GB+ RAM
- **性能**:推理速度较慢(不推荐用于实际测试)
## 📊 工具类型硬件需求
### 代码生成工具(云端)
- **CPU**:无特殊要求(基础配置即可)
- **内存**8GB RAM
- **网络**:稳定的互联网连接
### 代码生成工具(本地)
- **CPU**Intel Core i7 或 AMD Ryzen 78核心+
- **内存**16GB+ RAM
- **显存**:取决于模型大小(见上文)
- **存储**50GB+ 可用空间
### 代码分析工具
- **CPU**Intel Core i5 或 AMD Ryzen 54核心+
- **内存**8GB+ RAM
- **存储**20GB+ 可用空间
### 测试工具
- **CPU**Intel Core i5 或 AMD Ryzen 54核心+
- **内存**8GB+ RAM
- **存储**20GB+ 可用空间
## 🖥️ 测试环境配置
### 标准测试环境
用于大多数云端工具的测试:
- **CPU**Intel Core i7 或 AMD Ryzen 78核心
- **内存**16GB RAM
- **存储**100GB SSD
- **网络**:稳定的互联网连接
### 本地模型测试环境
用于本地部署工具的测试:
- **CPU**Intel Core i9 或 AMD Ryzen 916核心+
- **内存**32GB RAM
- **显存**24GB+ VRAMNVIDIA 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-ZNVIDIA GPU、nvidia-smi
- **存储**CrystalDiskMark、BlackMagic Disk Speed Test
---
**注意**:硬件配置会影响测试结果,特别是响应时间和并发能力。所有测试应在相同或相似的硬件配置下进行,以确保测试结果的可比性。

View File

@ -0,0 +1,97 @@
# IDE配置
本文档定义测试环境的IDE配置要求。
## 📋 IDE选择
### 主IDEVisual Studio Code
**版本要求**1.85.0+
### 其他IDE可选
- **IntelliJ IDEA**2023.3+适用于Java项目
- **PyCharm**2023.3+适用于Python项目
- **WebStorm**2023.3+(适用于前端项目)
## 🔧 VS Code配置
### 必需插件
#### Python开发
- **Python**ms-python.python2023.22.0+
- **Pylance**ms-python.vscode-pylance2023.12.0+
#### JavaScript/TypeScript开发
- **ESLint**dbaeumer.vscode-eslint2.4.0+
- **Prettier**esbenp.prettier-vscode10.1.0+
#### 通用插件
- **GitLens**eamodio.gitlens14.5.0+
- **Markdown All in One**yzhang.markdown-all-in-one3.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版本和插件版本下进行以保证测试结果的可比性。

View File

@ -0,0 +1,229 @@
# 效率指标定义
本文档定义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分
```
---
**注意**:效率指标应该结合具体的测试任务和工具类型来评估,不同任务类型和工具类型的评估标准可能有所不同。

View File

@ -0,0 +1,299 @@
# 质量指标定义
本文档定义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分
```
---
**注意**:质量指标应该结合具体的测试任务来评估,不同任务类型的评估标准可能有所不同。对于非代码生成类工具(如需求分析、架构设计),需要调整评估指标。

View File

@ -0,0 +1,251 @@
# 测试流程规范
本文档定义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
- LinuxUbuntu 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/)。

View File

@ -0,0 +1,22 @@
# 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` — 全流程示例(端到端任务说明)

View File

@ -0,0 +1,22 @@
# Task1 示例输入:需求分析(需求文档 / 访谈要点)
## 产品简介(示例)
产品名称SmartLibrary 智能图书检索系统
目标:为高校图书馆提供基于自然语言的图书检索与推荐服务,支持模糊查询、相似书目推荐与借阅统计分析。
功能要点:
- 用户能够用自然语言搜索图书(支持书名、作者、主题、摘要关键词)。
- 系统根据用户历史与相似用户行为推荐图书。
- 管理员可以导入书目并查看借阅统计报表。
## 用户访谈要点(示例)
1. 学生希望能按课程名快速找到推荐教材。
2. 教师需要把推荐书单导出为 PDF。
3. 图书馆管理员关心导入数据的格式兼容性与批量更新。
## 模糊需求示例
“提升搜索体验” — 期望工具给出可执行的需求拆解与 KPI如搜索结果平均点击率、首条结果满意度

View File

@ -0,0 +1,23 @@
# 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、以及基本监控/告警建议。

View File

@ -0,0 +1,18 @@
# Task11 示例输入:本地化大模型(部署与测试提示)
## 目标机器信息(示例)
- 操作系统Ubuntu 22.04
- GPUNVIDIA RTX 4090显存 24GB
- 可用内存64GB
## 部署要求
安装并启动 CodeLlama-7B本地提供一个 HTTP 接口用于代码补全与审查任务。
## 测试用例示例
1. 提示:"为以下函数生成 docstringdef add(a, b): return a + b"
2. 提示:"将以下同步函数改为异步实现,并说明潜在问题。"
记录启动日志、平均响应时延ms、内存/显存占用。

View File

@ -0,0 +1,18 @@
# Task12 示例输入:全流程集成(端到端任务说明)
## 项目愿景(示例)
开发一个简易“任务管理”微服务,从需求到部署的端到端示例:
- 需求:用户能创建/分配/完成任务,支持附件与评论;提供 REST API 与简单前端。
- 非功能:每日 1000 次请求;可在 Kubernetes 中部署。
## 期望阶段输出(作为检验点)
1. 需求到用户故事与验收标准任务1
2. 架构草案与部署拓扑任务2
3. 代码骨架与基本实现任务3
4. 自动生成测试并运行任务6
5. CI/CD 配置与测试环境部署任务10
记录每阶段的工具输出、人工修改点与交互次数。

View File

@ -0,0 +1,15 @@
# Task2 示例输入:架构设计(需求 + 非功能需求)
## 功能需求(示例)
实现一个在线笔记应用,支持:用户注册登录、笔记创建/编辑/删除、笔记按标签检索、笔记分享链接。
## 非功能需求(示例)
- 并发用户峰值 5000 人;平均响应时延 < 200ms
- 高可用99.9% 可用性,支持跨区域部署。
- 成本约束:每月云资源开销不超过 1000 美元(小团队)。
## 约束与偏好
- 优先使用开源组件,数据库偏好 PostgreSQL支持容器化部署Kubernetes

View File

@ -0,0 +1,17 @@
# Task3 示例输入:代码生成(接口规范示例)
## 简要接口规范(示例)
服务:用户管理 APIPython + 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。

View File

@ -0,0 +1,40 @@
# 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。
期望工具输出:定位竞态,给出锁/原子操作修复建议,并提供修复补丁与性能影响说明。

View File

@ -0,0 +1,25 @@
# 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
```
问题点示例:重复检查、缺乏类型校验、没有单元测试、函数过长。
期望工具输出:重构建议、分解后的函数、并附带单元测试与基准性能对比。

View File

@ -0,0 +1,22 @@
# 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` 生成多组互质与非互质案例。

View File

@ -0,0 +1,27 @@
# 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、生成安装/发布指引示例。

View File

@ -0,0 +1,22 @@
# 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 注入风险、给出修复建议和严重性分级。

View File

@ -0,0 +1,11 @@
# Task9 示例输入:项目管理(功能说明与资源约束)
## 功能说明(示例)
功能:实现“课程公告板”功能,教师可发布公告,学生可订阅、查看、按课程筛选和接收邮件通知。
可用资源2 名后端开发、1 名前端、1 名测试工程师期限4 周。
优先级1) 发布/查看 2) 邮件通知 3) 订阅/筛选
期望工具输出WBS任务清单与估时、甘特图建议、风险清单含概率与影响与缓解措施。

View File

@ -0,0 +1,130 @@
# 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
```
---
**注意**:这是一个基础任务,所有工具都必须完成此任务的测试。测试结果将作为对比评估的重要依据。

View File

@ -0,0 +1,59 @@
# 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` — 量化评估数据
---

View File

@ -0,0 +1,43 @@
# 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` — 运行记录与评估
---

View File

@ -0,0 +1,42 @@
# 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` — 性能与质量评估
---

View File

@ -0,0 +1,44 @@
# 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` — 端到端评估报告
---

View File

@ -0,0 +1,49 @@
# 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` — 评审与修改记录
---

View File

@ -0,0 +1,203 @@
# 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鼓励工具识别出所有问题。

View File

@ -0,0 +1,50 @@
# 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` — 变更记录与评估数据
---

View File

@ -0,0 +1,232 @@
# 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模式
- 添加适当的异常类型
---
**注意**:此任务评估工具在代码重构、安全修复和代码质量提升方面的综合能力。重构后的代码应该保持功能完整性的同时显著提升代码质量。

View File

@ -0,0 +1,45 @@
# 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` — 修复记录与验证结果
---

View File

@ -0,0 +1,163 @@
# 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
- ORMSQLAlchemy
### 部署
- 容器化Docker
- 云服务AWS/Azure
```
---
**注意**:此任务评估工具在需求分析和文档生成方面的能力。生成的内容应该结构清晰、逻辑完整、符合行业标准。

View File

@ -0,0 +1,190 @@
# 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
```
---
**注意**:此任务评估工具在软件架构设计方面的能力。生成的架构方案应该符合微服务最佳实践,考虑实际业务需求和技术约束。

View File

@ -0,0 +1,44 @@
# 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` — 基线与比较报告
---

View File

@ -0,0 +1,44 @@
# 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` — 评估报告与覆盖率数据
---

View File

@ -0,0 +1,44 @@
# 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` — 验证结果与差异记录
---

View File

@ -0,0 +1,43 @@
# 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` — 与人工审查对比的统计报告
---

View File

@ -0,0 +1,44 @@
# 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` — 评估与修改记录
---

View File

@ -0,0 +1,83 @@
# 工具分类目录
本目录包含所有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)。

View File

@ -0,0 +1,103 @@
# 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正式发布
- **持续更新**:定期发布新功能和改进

View File

@ -0,0 +1,153 @@
# GitHub Copilot - 安装配置指南
## 📋 前置要求
### 系统要求
- **操作系统**macOS、Windows、Linux
- **硬件要求**:无特殊要求
- **网络要求**:需要稳定的互联网连接
### IDE要求
- **VS Code**1.60.0+
- **JetBrains IDE**2021.3+
- **其他IDE**支持Copilot的IDE
## 🔧 安装步骤
### 方式1VS 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. 确认登录成功
### 方式2JetBrains 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)。

View File

@ -0,0 +1,123 @@
# [工具名称] - 工具概览
> **工具类型**[代码生成/调试/重构/测试生成/文档生成/代码审查/项目管理/DevOps/本地模型/全流程集成]
> **工具分类**[工具所属分类如code-generation、debugging等]
## 📋 基本信息
### 工具简介
[简要描述工具的核心功能和定位]
### 官方网站
- **官网**[工具官网链接]
- **GitHub**[GitHub仓库链接如适用]
- **文档**[官方文档链接]
### 定价信息
- **免费版**[免费版功能限制]
- **付费版**[付费版价格和功能]
- **开源**[是否开源,许可证类型]
### 大模型底座
- **底层模型**[使用的AI模型如GPT-4、CodeLlama、Qwen等]
- **模型版本**[具体模型版本]
## 🎯 核心功能
### 主要功能
1. **[功能1]**[功能描述]
2. **[功能2]**[功能描述]
3. **[功能3]**[功能描述]
### 适用场景
- [场景1][适用情况]
- [场景2][适用情况]
- [场景3][适用情况]
### 不适用场景
- [场景1][不适用情况]
- [场景2][不适用情况]
## 🛠️ 技术栈支持
### 支持的编程语言
- **Python**:✅ 支持版本要求3.8+
- **JavaScript/TypeScript**:✅ 支持
- **Java**:✅ 支持
- **Go**:✅ 支持
- **Rust**:❌ 不支持
- **其他**[其他语言支持情况]
### 支持的框架
- **Web框架**[FastAPI、Flask、Django、React、Vue等]
- **数据库**[PostgreSQL、MySQL、MongoDB等]
- **其他**[其他框架支持情况]
### IDE集成
- **VS Code**:✅ 支持插件xxx
- **IntelliJ IDEA**:✅ 支持插件xxx
- **PyCharm**:✅ 支持插件xxx
- **其他**[其他IDE支持情况]
## 🚀 部署方式
### 云端服务
- **SaaS**:✅ 支持(提供云端服务)
- **API**:✅ 支持提供API接口
### 本地部署
- **本地安装**:✅ 支持(方式:插件/独立应用)
- **本地模型**:❌ 不支持支持需要GPU
### 混合部署
- **本地+云端**:✅ 支持(描述混合模式)
## 📊 版本信息
### 当前版本
- **版本号**v1.0.0
- **发布日期**2025-01-XX
- **最后更新**2025-01-XX
### 版本历史
- **v1.0.0**2025-01-XX[主要更新内容]
- **v0.9.0**2024-12-XX[主要更新内容]
## 🔗 相关资源
### 学习资源
- [官方教程链接]
- [视频教程链接]
- [社区论坛链接]
### 社区
- **GitHub Discussions**[链接]
- **Discord**[链接]
- **论坛**[链接]
### 相关工具
- [相关工具1][简要描述]
- [相关工具2][简要描述]
---
**提示**:本文档应提供工具的基本信息,帮助读者快速了解工具。详细使用方法和测试结果见其他文档。

View File

@ -0,0 +1,232 @@
# [工具名称] - 优缺点总结
> **更新日期**2025-01-XX
> **基于版本**v1.0.0
> **测试任务**Task 1, Task 2, Task 3
本文档基于实际测试结果,客观总结工具的优缺点,帮助读者判断是否适合使用。
## ✅ 优点
### 1. 功能完整性
- **功能覆盖全面**:工具能够生成/辅助完成所需的功能
- **边界情况处理**:对常见边界情况有较好的处理
- **代码质量**:生成的代码结构清晰,可读性较好
**具体表现**
- Task 1测试中工具成功生成了完整的API代码包括数据校验、错误处理、JWT认证等功能
### 2. 使用便捷性
- **响应速度快**平均响应时间8秒交互流畅
- **学习曲线平缓**:上手简单,文档清晰
- **IDE集成良好**与VS Code等IDE集成良好使用方便
**具体表现**
- 安装配置简单5分钟内即可开始使用
- 通过快捷键即可快速调用工具
### 3. 代码质量
- **代码规范**生成的代码基本符合语言规范PEP8等
- **安全性考虑**对安全相关问题有较好的处理如密码加密、SQL注入防护
- **最佳实践**:遵循框架和语言的最佳实践
**具体表现**
- Task 1测试中工具正确实现了bcrypt密码加密和JWT认证
- 代码结构清晰,职责单一
### 4. 技术支持
- **文档完善**:官方文档详细,示例丰富
- **社区活跃**GitHub Issues响应及时社区讨论活跃
- **更新及时**工具更新频率高bug修复及时
**具体表现**
- 官方文档包含详细的API参考和使用示例
- GitHub Issues平均响应时间<24小时
## ❌ 缺点
### 1. 错误处理不充分
- **边界条件**:部分边界条件处理不当,需要人工调整
- **错误提示**:错误提示不够明确,调试困难
- **异常处理**:异常处理逻辑不够完善
**具体表现**
- Task 1测试中工具生成的代码在重复注册时未正确处理异常
- Task 2测试中部分bug未正确识别
**影响**
- 需要额外时间修复错误处理逻辑
- 调试难度增加
### 2. 代码格式问题
- **格式化**生成代码未完全符合代码规范如PEP8
- **缩进问题**:部分代码缩进不一致
- **命名规范**:部分变量命名不够规范
**具体表现**
- Task 1测试中生成的代码需要通过black格式化
- Task 3测试中重构后的代码仍需人工调整格式
**影响**
- 需要使用格式化工具后处理
- 代码审查时发现较多格式问题
### 3. 注释不足
- **关键逻辑**:关键逻辑缺少注释说明
- **函数文档**函数缺少文档字符串docstring
- **代码意图**:代码意图不够明确
**具体表现**
- Task 1测试中生成的代码仅30%包含注释
- 复杂逻辑缺少说明,理解困难
**影响**
- 代码可维护性降低
- 新团队成员理解代码需要更长时间
### 4. 本地部署限制
- **硬件要求**本地模型部署需要较高的硬件配置GPU、显存等
- **部署复杂**:本地部署步骤较多,配置复杂
- **性能问题**:本地模型推理速度较慢
**具体表现**
- 本地部署需要16GB+显存
- 部署过程需要1-2小时
- CPU推理速度较慢不推荐生产使用
**影响**
- 个人开发者使用门槛较高
- 需要额外的硬件投资
### 5. 依赖管理
- **依赖版本**:对依赖版本要求较严格,可能出现兼容性问题
- **依赖更新**:依赖更新后可能影响工具使用
- **依赖冲突**:与其他工具/项目的依赖可能冲突
**具体表现**
- 要求Python 3.10+不支持Python 3.9
- 某些依赖包版本与其他工具冲突
**影响**
- 需要维护多个虚拟环境
- 依赖升级需要额外测试
## 🎯 适用场景
### ✅ 适合使用
1. **快速原型开发**
- 需要快速搭建项目原型
- 对代码质量要求不是特别高
- 时间紧迫的项目
2. **学习框架/语言**
- 学习新的框架或编程语言
- 需要示例代码参考
- 了解最佳实践
3. **中小型项目**
- 项目规模较小
- 功能需求明确
- 有足够时间进行代码审查和调整
4. **个人开发者**
- 预算有限,需要提高开发效率
- 单人开发,代码审查不严格
- 快速迭代项目
### ❌ 不适合使用
1. **大型企业项目**
- 对代码质量要求极高
- 需要严格的代码审查
- 安全性要求高
2. **生产环境直接使用**
- 生成的代码需要大量调整
- 缺少充分的测试
- 性能要求高
3. **复杂业务逻辑**
- 业务逻辑复杂,工具难以理解
- 需要特定的业务规则处理
- 需要深度定制
4. **资源受限环境**
- 硬件资源有限(无法满足本地模型要求)
- 网络不稳定(云端工具受影响)
- 预算有限API调用费用高
## 🔄 与其他工具对比
### vs GitHub Copilot
| 维度 | [工具名称] | GitHub Copilot |
|-----|-----------|----------------|
| 代码质量 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 响应速度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 价格 | ⭐⭐⭐⭐⭐(免费) | ⭐⭐⭐($10/月) |
| 本地部署 | ✅ 支持 | ❌ 不支持 |
| IDE集成 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
### vs CodeLlama
| 维度 | [工具名称] | CodeLlama |
|-----|-----------|-----------|
| 代码质量 | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 响应速度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 价格 | ⭐⭐⭐⭐⭐(免费) | ⭐⭐⭐⭐⭐(开源) |
| 本地部署 | ✅ 支持 | ✅ 支持需GPU |
| 易用性 | ⭐⭐⭐⭐ | ⭐⭐⭐ |
## 💡 改进建议
### 对工具开发者的建议
1. **改进错误处理**:加强对边界条件和异常情况的处理
2. **自动格式化**:生成代码后自动格式化,符合代码规范
3. **增加注释**:为关键逻辑自动生成注释和文档字符串
4. **优化本地部署**:简化本地部署流程,降低硬件要求
5. **改进依赖管理**:支持更灵活的依赖版本要求
### 对使用者的建议
1. **代码审查**:使用工具生成的代码前,进行充分的代码审查
2. **测试覆盖**:为生成的代码编写充分的单元测试和集成测试
3. **格式检查**使用格式化工具如black、prettier格式化代码
4. **安全审计**:对生成的代码进行安全审计,特别是涉及敏感数据的部分
5. **持续学习**:关注工具更新,学习新功能和最佳实践
## 📊 总体评价
### 综合评分
| 维度 | 评分1-5分 | 说明 |
|-----|-------------|------|
| 功能完整性 | 4.5 | 功能覆盖全面,但部分细节需要改进 |
| 代码质量 | 4.0 | 代码结构清晰,但格式和注释需要改进 |
| 使用便捷性 | 4.5 | 上手简单,响应速度快 |
| 技术支持 | 4.5 | 文档完善,社区活跃 |
| 性价比 | 4.5 | 免费使用,性价比高 |
| **综合评分** | **4.4** | **推荐使用,适合快速原型开发和学习** |
### 推荐度
- **⭐️⭐️⭐️⭐️⭐️ 强烈推荐**:适合快速原型开发、学习框架、个人开发者
- **⭐️⭐️⭐️⭐️ 推荐**:适合中小型项目,但需要代码审查和测试
- **⭐️⭐️⭐️ 一般**:可以尝试,但需要充分测试和调整
- **⭐️⭐️ 不推荐**:不适合大型企业项目和生产环境直接使用
---
**注意**本文档基于工具当前版本v1.0.0)的测试结果,工具更新后优缺点可能发生变化。建议定期更新本文档。

View File

@ -0,0 +1,288 @@
# [工具名称] - 安装配置指南
## 📋 前置要求
### 系统要求
- **操作系统**macOS 14.0+ / Windows 11 / Ubuntu 22.04+
- **硬件要求**[CPU、内存、显存等要求]
- **网络要求**[是否需要互联网连接]
### 依赖安装
#### Python环境如适用
```bash
python --version # 需要 Python 3.10+
pip --version # 需要 pip 23.0+
```
#### Node.js环境如适用
```bash
node --version # 需要 Node.js 18.17.0+
npm --version # 需要 npm 9.6.7+
```
#### 其他依赖
- [依赖1][版本要求]
- [依赖2][版本要求]
## 🔧 安装步骤
### 方式1云端服务推荐
#### 1. 注册账号
1. 访问[工具官网](工具官网链接)
2. 点击"注册"或"Sign Up"
3. 填写注册信息(邮箱、密码等)
4. 验证邮箱
#### 2. 获取API密钥
1. 登录后进入"设置"或"Settings"
2. 找到"API密钥"或"API Keys"
3. 点击"生成新密钥"或"Create New Key"
4. 复制并保存API密钥 只显示一次)
#### 3. 配置环境变量
```bash
# macOS/Linux
export TOOL_API_KEY="your-api-key-here"
# Windows (PowerShell)
$env:TOOL_API_KEY="your-api-key-here"
```
或创建`.env`文件:
```env
TOOL_API_KEY=your-api-key-here
```
### 方式2IDE插件安装
#### VS Code插件
1. 打开VS Code
2. 点击左侧"扩展"图标Extensions
3. 搜索"[工具名称]"
4. 点击"安装"Install
5. 安装完成后,点击"重载"Reload
#### 配置插件
1. 打开VS Code设置Settings
2. 搜索"[工具名称]"
3. 配置API密钥或其他设置
```json
{
"tool.apiKey": "your-api-key-here",
"tool.enable": true,
"tool.model": "default"
}
```
### 方式3本地安装
#### 使用pip安装Python工具
```bash
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # macOS/Linux
# 或
venv\Scripts\activate # Windows
# 安装工具
pip install tool-name
# 验证安装
tool --version
```
#### 使用npm安装Node.js工具
```bash
# 全局安装
npm install -g tool-name
# 或本地安装
npm install tool-name
# 验证安装
tool --version
```
### 方式4本地模型部署
#### 1. 下载模型
```bash
# 使用git-lfs下载如适用
git lfs install
git clone https://huggingface.co/model-name/model-repo
# 或使用其他方式下载模型文件
```
#### 2. 安装依赖
```bash
# Python依赖
pip install -r requirements.txt
# 其他依赖
# [具体安装步骤]
```
#### 3. 配置模型
创建配置文件`config.yaml`
```yaml
model:
name: model-name
path: /path/to/model
device: cuda # 或 cpu
gpu_memory: 16 # GB
server:
host: 0.0.0.0
port: 8000
```
#### 4. 启动服务
```bash
# 启动模型服务
python server.py --config config.yaml
# 或使用其他启动命令
```
## ⚙️ 配置说明
### API密钥配置
- **环境变量**`TOOL_API_KEY`
- **配置文件**`.env`文件或工具配置文件
- **IDE设置**在IDE插件设置中配置
### 其他配置选项
- **模型选择**[如何选择不同模型]
- **参数调优**[关键参数说明]
- **代理设置**[如需使用代理]
## ✅ 验证安装
### 检查安装
```bash
# 检查工具版本
tool --version
# 检查工具状态
tool status
# 测试工具功能
tool test
```
### 测试示例
#### Python工具
```python
import tool
# 初始化工具
client = tool.Client(api_key="your-api-key")
# 测试功能
result = client.generate("Hello, world!")
print(result)
```
#### Node.js工具
```javascript
const tool = require('tool');
// 初始化工具
const client = new tool.Client({
apiKey: 'your-api-key'
});
// 测试功能
client.generate('Hello, world!')
.then(result => console.log(result));
```
## 🔍 常见问题
### 问题1API密钥无效
**原因**API密钥配置错误或已过期
**解决方案**
1. 检查API密钥是否正确复制
2. 确认API密钥未过期
3. 重新生成API密钥
### 问题2网络连接失败
**原因**:网络问题或代理设置错误
**解决方案**
1. 检查网络连接
2. 配置代理设置(如适用)
3. 检查防火墙设置
### 问题3依赖安装失败
**原因**:依赖版本不兼容或缺少系统依赖
**解决方案**
1. 升级pip/npm到最新版本
2. 检查系统依赖是否安装
3. 使用虚拟环境隔离依赖
### 问题4本地模型加载失败
**原因**:显存不足或模型文件损坏
**解决方案**
1. 检查显存大小是否足够
2. 重新下载模型文件
3. 使用量化版本模型(如适用)
## 📸 安装截图
### 云端服务注册
[插入注册页面截图]
### IDE插件安装
[插入插件安装截图]
### 本地模型部署
[插入模型部署截图]
## 🔗 相关链接
- [官方安装文档链接]
- [故障排除指南链接]
- [社区支持链接]
---
**提示**:安装过程中遇到问题,请查看[常见问题](#常见问题)或提交[Issue](../../../.github/ISSUE_TEMPLATE/bug_report.md)。

View File

@ -0,0 +1,251 @@
# Task 1: RESTful API开发测试结果
> **测试工具**[工具名称]
> **测试日期**2025-01-XX
> **测试环境**[环境信息如Python 3.10, FastAPI 0.103.1, VS Code 1.85.0]
> **工具版本**v1.0.0
## 📋 任务描述
详见:[任务定义](../../../test-standards/test-tasks/task1-api.md)
## 🎯 测试目标
使用[工具名称]开发一个用户管理系统的RESTful API包含用户注册、登录、查询功能。
## 📝 操作步骤
### 1. 工具调用
[描述如何调用工具,如:
- 使用VS Code插件通过快捷键 `Ctrl+Shift+P` 打开命令面板
- 输入 "[工具名称]: Generate Code"
- 或直接在编辑器中输入提示词]
### 2. 输入内容
#### 第一次输入
```
[完整输入的内容,如提示词、需求描述等]
示例:
请使用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规范
```
#### 后续交互(如有)
[记录所有后续交互内容,如:
- 第二次输入补充JWT认证功能
- 第三次输入:修复代码格式问题
- ...]
### 3. 生成结果
#### 原始生成代码
[展示工具生成的原始代码,或链接到代码文件]
```python
# 原始生成的代码(未修改)
# 文件名main.py原始
from fastapi import FastAPI, HTTPException, Depends
from pydantic import BaseModel, EmailStr
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, Session
import bcrypt
from jose import JWTError, jwt
from datetime import datetime, timedelta
# ... 生成的代码 ...
```
[完整的原始代码文件放在 `task1-original.py`]
#### 人工调整
[记录所有人工修改点]
| 修改位置 | 修改内容 | 修改原因 |
|---------|---------|---------|
| `main.py:45` | 修复SQLAlchemy会话管理 | 原始代码未正确处理数据库会话 |
| `auth.py:12` | 添加JWT密钥配置 | 原始代码硬编码了密钥 |
| `models.py:8` | 修正Pydantic模型字段 | 原始代码字段类型错误 |
| ... | ... | ... |
#### 最终可用代码
[展示最终可用的代码,或链接到代码文件]
```python
# 最终可用的代码(已修改)
# 文件名main.py最终
# ... 修改后的代码 ...
```
[完整的最终代码文件放在 `task1-final.py`]
### 4. 测试验证
#### 功能测试
使用Postman或curl测试所有接口
```bash
# 1. 用户注册
curl -X POST "http://localhost:8000/api/users/register" \
-H "Content-Type: application/json" \
-d '{
"username": "testuser",
"email": "test@example.com",
"password": "password123"
}'
# 2. 用户登录
curl -X POST "http://localhost:8000/api/users/login" \
-H "Content-Type: application/json" \
-d '{
"username": "testuser",
"password": "password123"
}'
# 3. 用户查询需要Token
curl -X GET "http://localhost:8000/api/users/1" \
-H "Authorization: Bearer <token>"
```
#### 测试结果
| 接口 | 测试用例 | 结果 | 备注 |
|-----|---------|------|------|
| POST /api/users/register | 正常注册 | ✅ 通过 | - |
| POST /api/users/register | 重复注册 | ✅ 通过 | 正确返回错误信息 |
| POST /api/users/login | 正确密码 | ✅ 通过 | - |
| POST /api/users/login | 错误密码 | ✅ 通过 | 正确返回错误信息 |
| GET /api/users/{user_id} | 有效Token | ✅ 通过 | - |
| GET /api/users/{user_id} | 无效Token | ✅ 通过 | 正确返回401错误 |
## 📊 结果评估
### 效率指标
| 指标 | 数值 | 评分 |
|-----|------|------|
| 开发耗时 | 20分钟 | 4分 |
| - 工具生成时间 | 12分钟 | - |
| - 人工调整时间 | 6分钟 | - |
| - 测试验证时间 | 2分钟 | - |
| 交互次数 | 3次 | 4分 |
| 响应速度 | 平均8秒/次 | 4分 |
| 自动化程度 | 85% | 4分 |
详见:[效率指标定义](../../../test-standards/metrics/efficiency-metrics.md)
### 质量指标
| 指标 | 数值 | 评分 |
|-----|------|------|
| 代码正确率 | 85% | 4分 |
| - 无需修改 | 70% | - |
| - 少量修改(<10行 | 15% | - |
| - 大量修改10-50行 | 10% | - |
| - 无法使用 | 5% | - |
| 测试通过率 | 90% | 4分 |
| 可读性评分 | 16/20 | 4分 |
| - 命名规范 | 4/5 | - |
| - 代码结构 | 4/5 | - |
| - 注释质量 | 4/5 | - |
| - 代码风格 | 4/5 | - |
| 安全性评分 | 5/5 | 5分 |
| 规范性评分 | 4/5 | 4分 |
详见:[质量指标定义](../../../test-standards/metrics/quality-metrics.md)
### 综合评分
| 类别 | 评分 | 权重 | 加权分 |
|-----|------|------|--------|
| 效率指标 | 4.0 | 0.3 | 1.2 |
| 质量指标 | 4.2 | 0.7 | 2.94 |
| **综合评分** | **4.1** | - | **4.14** |
## ✅ 优缺点分析
### 优点
1. **生成速度快**平均响应时间8秒效率较高
2. **代码结构清晰**:生成的代码结构合理,易于理解
3. **功能完整**:基本实现了所有必需功能
4. **安全性考虑**正确实现了密码加密和JWT认证
### 缺点
1. **错误处理不充分**:部分边界条件处理不当
2. **代码格式问题**生成代码未完全符合PEP8规范
3. **注释不足**:关键逻辑缺少注释
4. **数据库会话管理**SQLAlchemy会话管理有误
### 适用场景
- ✅ **适合**快速原型开发、学习FastAPI框架
- ✅ **适合**中小型API项目开发
- ❌ **不适合**:生产环境直接使用(需要较多调整)
### 改进建议
1. **提升错误处理**:加强对边界条件的处理
2. **改进代码格式**自动格式化代码符合PEP8
3. **增加注释**:为关键逻辑添加注释
4. **优化数据库操作**:改进数据库会话管理
## 📸 截图
### 工具调用界面
[插入工具调用界面截图]
### 生成结果界面
[插入生成结果界面截图]
### 测试验证结果
[插入测试验证结果截图]
## 📁 代码文件
- [`task1-original.py`](./task1-original.py) - 原始生成代码
- [`task1-final.py`](./task1-final.py) - 最终可用代码
- [`requirements.txt`](./requirements.txt) - 依赖清单
- [`test_results.md`](./test_results.md) - 测试结果记录
---
**提示**:此测试结果基于工具当前版本,工具更新后可能需要重新测试。