code-quality

确保 Flutter/Dart 代码符合项目规范,自动检测和修复问题。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "code-quality" with this command: npx skills add aidenreed937/comet/aidenreed937-comet-code-quality

Flutter 代码质量检测

确保 Flutter/Dart 代码符合项目规范,自动检测和修复问题。

🤖 使用子代理执行(推荐)

代码质量检查可能产生大量输出,建议通过子代理执行

为什么使用子代理

代码质量检查的输出特点:

  • ✅ 通过时:输出简洁(几行)

  • ❌ 失败时:可能产生大量错误信息

  • Dart 分析错误:5k-10k tokens

  • 格式化问题:2k-5k tokens

  • 测试失败信息:3k-5k tokens

  • 总计可达 10k-20k tokens

使用建议

场景 建议 原因

完整质量检查 🤖 子代理 可能有大量错误需要修复

单项检查(如 analyze) 🤖 子代理 错误输出可能很多

格式化代码 (dart format ) 📝 主窗口 输出简洁

快速检查(确定无错误) 📝 主窗口 输出少

子代理执行示例

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/ # 分析指定目录

  1. Dart Format - 代码格式化

格式规则:

  • 2 空格缩进

  • 行宽 80 字符(可配置)

  • 自动整理导入语句

命令:

dart format . # 格式化所有文件 dart format lib/ test/ # 格式化指定目录 dart format --set-exit-if-changed . # 检查格式(CI用)

  1. Flutter Test - 单元测试

测试类型:

  • 单元测试 (Unit Tests)

  • Widget 测试 (Widget Tests)

  • 集成测试 (Integration Tests)

命令:

flutter test # 运行所有测试 flutter test test/unit/ # 运行指定目录测试 flutter test --coverage # 生成覆盖率报告 flutter test --reporter=expanded # 详细输出

  1. 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 参数拼接 后端使用参数化查询

敏感操作 检查权限验证 删除/修改操作需要权限检查

数据泄露 搜索 print /log

移除或脱敏敏感日志

本地存储 检查 SharedPreferences 加密敏感数据

网络请求 检查 HTTP 使用 强制使用 HTTPS

依赖安全

定期检查:

flutter pub outdated dart pub upgrade --dry-run

处理建议:

  • Critical/High:立即升级

  • Moderate:评估影响,计划升级

  • Low:可选升级

性能检查清单

代码性能

检查项 标准 工具

文件大小 单文件 < 500 行 wc -l <file>

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: 在流水线中自动运行检查

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

flutter-best-practices

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

code-quality

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

code-quality

No summary provided by upstream source.

Repository SourceNeeds Review