@tianyio/quality-helper
Version:
A comprehensive quality helper tool for project scaffolding and management
139 lines (101 loc) • 3.05 kB
Markdown
# 代码质量与测试指南
## 目录
1. [代码质量工具](#代码质量工具)
2. [代码复杂度检测](#代码复杂度检测)
3. [Git Hooks](#git-hooks)
4. [使用指南](#使用指南)
## 代码质量工具
### ESLint
- **配置文件**: eslint.config.js
- **功能**: JavaScript/TypeScript 代码质量检查
- **集成插件**:
- `@typescript-eslint`: TypeScript 支持
- `eslint-plugin-vue`: Vue 文件检查
- `eslint-plugin-promise`: Promise 最佳实践
- `eslint-config-prettier`: 禁用与 Prettier 冲突的规则
- `eslint-plugin-prettier`: 将 Prettier 作为 ESLint 规则运行
### Prettier
- **配置文件**: prettier.config.js
- **功能**: 代码格式化工具
- **集成**: 与 ESLint 协同工作,避免冲突
### EditorConfig
- **配置文件**: `.editorconfig`
- **功能**: 跨编辑器代码风格统一
## 代码复杂度检测
### 检测规则
- **最大嵌套深度**: 4 层
- **函数最大行数**: 50 行
- **函数最大参数**: 4 个
- **函数最大语句数**: 10 条
- **文件最大行数**: 300 行
### 配置位置
代码复杂度检测规则已集成在主 ESLint 配置文件中:
```javascript
{
rules: {
// 代码复杂度规则
'max-depth': ['warn', 4], // 最大嵌套深度
'max-lines': ['warn', 300], // 文件最大行数
'max-lines-per-function': ['warn', 50], // 函数最大行数
'max-nested-callbacks': ['warn', 3], // 最大嵌套回调
'max-params': ['warn', 4], // 函数最大参数
'max-statements': ['warn', 10], // 函数最大语句数
}
}
```
## Git Hooks
### Pre-commit Hook
- **工具**: lint-staged + husky
- **执行流程**:
1. Prettier 格式化代码
2. ESLint 修复代码问题
配置文件: `.husky/pre-commit`
```bash
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
lint-staged
```
### Commit-msg Hook
- **工具**: commitlint + husky
- **功能**: 提交信息格式验证
- **规则**:
- 类型必须在规定范围内
- 主题长度限制 (4-50 字符)
- 提交信息总长度限制 (100 字符)
配置文件: `.husky/commit-msg`
```bash
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
commitlint --edit "$1"
```
## 使用指南
### 代码质量检查
```bash
# 检查代码质量
pnpm lint
# 自动修复代码问题
pnpm lint:fix
# 代码格式化
pnpm format
```
### 代码复杂度检查
```bash
# 检查代码复杂度(已集成在 ESLint 中)
pnpm lint
```
### Git Hooks 使用
```bash
# 提交代码时自动执行代码质量检查
git add .
git commit -m "update: 添加新功能"
# 手动运行 pre-commit 检查
npx lint-staged
# 手动验证提交信息格式
npx commitlint --from HEAD~1 --to HEAD --verbose
```
## 最佳实践
1. **保持简洁**: 遵循代码复杂度规则
2. **持续集成**: 利用 Git Hooks 自动检查
3. **定期检查**: 定期运行完整质量检查
4. **格式统一**: 使用 Prettier 保持代码风格一致
5. **类型安全**: 充分利用 TypeScript 的类型检查功能