Learn-skills.dev code-quality
Flutter 项目代码质量检测和修复,包括 Dart 代码分析、格式化、测试。当用户提到"代码检查"、"分析"、"格式化"、"代码风格"、"质量检测"、"测试"时使用此 skill。
install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/aidenreed937/comet/code-quality" ~/.claude/skills/neversight-learn-skills-dev-code-quality-7f517e && rm -rf "$T"
manifest:
data/skills-md/aidenreed937/comet/code-quality/SKILL.mdsource content
Flutter 代码质量检测
确保 Flutter/Dart 代码符合项目规范,自动检测和修复问题。
🤖 使用子代理执行(推荐)
代码质量检查可能产生大量输出,建议通过子代理执行
为什么使用子代理
代码质量检查的输出特点:
- ✅ 通过时:输出简洁(几行)
- ❌ 失败时:可能产生大量错误信息
- Dart 分析错误:5k-10k tokens
- 格式化问题:2k-5k tokens
- 测试失败信息:3k-5k tokens
- 总计可达 10k-20k tokens
使用建议
| 场景 | 建议 | 原因 |
|---|---|---|
| 完整质量检查 | 🤖 子代理 | 可能有大量错误需要修复 |
| 单项检查(如 analyze) | 🤖 子代理 | 错误输出可能很多 |
格式化代码 () | 📝 主窗口 | 输出简洁 |
| 快速检查(确定无错误) | 📝 主窗口 | 输出少 |
子代理执行示例
Task({ subagent_type: 'general-purpose', description: '运行 Flutter 代码质量检查', prompt: ` 运行完整代码质量检查: 1. 执行 flutter analyze, dart format, flutter test 2. 如有错误,分析并修复 3. 再次验证直到全部通过 4. 返回最终检查结果摘要 遵循 .claude/skills/code-quality/SKILL.md 中的规范。 `, })
检测工具
1. Dart Analyzer - 代码分析
配置:
analysis_options.yaml
主要规则:
- Dart/Flutter 语法规范
- 类型安全检查
- 未使用变量/导入检测
- 命名规范检查
- 空安全检查
命令:
flutter analyze # 分析整个项目 dart analyze lib/ # 分析指定目录
2. Dart Format - 代码格式化
格式规则:
- 2 空格缩进
- 行宽 80 字符(可配置)
- 自动整理导入语句
命令:
dart format . # 格式化所有文件 dart format lib/ test/ # 格式化指定目录 dart format --set-exit-if-changed . # 检查格式(CI用)
3. Flutter Test - 单元测试
测试类型:
- 单元测试 (Unit Tests)
- Widget 测试 (Widget Tests)
- 集成测试 (Integration Tests)
命令:
flutter test # 运行所有测试 flutter test test/unit/ # 运行指定目录测试 flutter test --coverage # 生成覆盖率报告 flutter test --reporter=expanded # 详细输出
4. Pub 依赖检查
命令:
flutter pub outdated # 检查过期依赖 flutter pub upgrade # 升级依赖 dart pub global run pana . # 包质量评分(发布包时)
完整质量检查
运行所有检测:
# 1. 代码分析 flutter analyze # 2. 格式检查 dart format --set-exit-if-changed . # 3. 运行测试 flutter test # 4. 检查依赖 flutter pub outdated
安全性检查清单
敏感信息检查
手动检查代码中是否包含:
- ❌ 硬编码的 API 密钥、Access Token
- ❌ 硬编码的密码、Secret Key
- ❌ 个人身份信息(PII)
- ❌ 内部 URL、IP 地址
- ✅ 使用环境变量或配置文件
常见安全漏洞
| 漏洞类型 | 检查方法 | 预防措施 |
|---|---|---|
| SQL 注入 | 检查 API 参数拼接 | 后端使用参数化查询 |
| 敏感操作 | 检查权限验证 | 删除/修改操作需要权限检查 |
| 数据泄露 | 搜索 / | 移除或脱敏敏感日志 |
| 本地存储 | 检查 SharedPreferences | 加密敏感数据 |
| 网络请求 | 检查 HTTP 使用 | 强制使用 HTTPS |
依赖安全
定期检查:
flutter pub outdated dart pub upgrade --dry-run
处理建议:
- Critical/High:立即升级
- Moderate:评估影响,计划升级
- Low:可选升级
性能检查清单
代码性能
| 检查项 | 标准 | 工具 |
|---|---|---|
| 文件大小 | 单文件 < 500 行 | |
| Widget 嵌套 | 嵌套层级 < 10 | 手动检查 Widget 树 |
| 列表优化 | 使用 ListView.builder | 代码审查 |
| 状态管理 | 避免过度 setState | Flutter DevTools |
| 异步操作 | 正确处理 async/await | Dart Analyzer |
构建性能
# Android APK 大小检查 flutter build apk --release ls -lh build/app/outputs/flutter-apk/ # iOS 构建大小检查 flutter build ios --release
检查项:
- APK < 50MB(未分包)
- 移除未使用的资源
- 启用代码混淆和压缩
运行时性能
使用 Flutter DevTools 检查:
flutter run --profile # 打开 DevTools 查看性能
检查要点:
- 避免不必要的 rebuild
- 使用 const 构造函数
- 列表使用 ListView.builder
- 避免在 build 方法中创建大对象
自动化流程
Pre-commit Hook
可配置 Git Hook 在提交前运行:
# .git/hooks/pre-commit #!/bin/bash flutter analyze dart format --set-exit-if-changed . flutter test
CI/CD 集成
# .github/workflows/flutter.yml 示例 - name: Analyze run: flutter analyze - name: Format Check run: dart format --set-exit-if-changed . - name: Test run: flutter test --coverage
常见问题修复
Dart Analyzer 错误
// ❌ 错误:未使用的导入 import 'package:flutter/material.dart'; import 'package:unused/unused.dart'; // ✅ 修复:移除未使用的导入 import 'package:flutter/material.dart';
格式问题
// ❌ 错误:格式不规范 class MyWidget extends StatelessWidget{ @override Widget build(BuildContext context){ return Container();} } // ✅ 修复:运行 dart format class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Container(); } }
提交信息
# ❌ 错误 git commit -m "修复bug" # ✅ 正确 git commit -m "fix: 修复登录页面验证问题" git commit -m "feat(ui): 添加用户头像上传功能"
使用场景
- 编写代码时: Claude 会提示不符合规范的代码
- 提交前: 运行质量检查确保代码符合规范
- CI/CD: 在流水线中自动运行检查