itsmelaxman/flutter_guardian

GitHub: itsmelaxman/flutter_guardian

Flutter Guardian 是一款 CI 优先的 Flutter 应用发布前审计工具,用于在部署前检测安全风险、架构违规、依赖问题和构建就绪度等发布级问题。

Stars: 0 | Forks: 0

# Flutter Guardian [![Pub](https://img.shields.io/pub/v/flutter_guardian.svg)](https://pub.dartlang.org/packages/flutter_guardian) [![License](https://img.shields.io/badge/license-Apache%20License%202.0-blue)](https://github.com/itsmelaxman/flutter_guardian/blob/main/LICENSE) [![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/itsmelaxman/flutter_guardian.svg)](https://github.com/itsmelaxman/flutter_guardian) Flutter Guardian 是一款 CI 优先的 Flutter 应用发布审计工具。 它可以帮助你在应用发布前捕获常见的风险,包括安全隐患、架构违规、依赖问题、资源问题以及构建配置缺失。 你可以在开发阶段于本地使用它,或者在 CI 中运行它,以便在违反重要发布规则时使构建失败。 ## 它的功能 Flutter Guardian 会检查你项目中的: - 安全风险,例如 debug 日志、`.env` 的使用、硬编码的 secrets 以及缺失的发布安全防护。 - 架构问题,例如 feature 之间的相互引用以及无效的分层方向。 - 依赖问题,例如不安全或过弱的版本约束。 - 资源问题,例如缺失、重复或过大的资源。 - 构建就绪问题,例如过大的发布构件或不安全的 Android 设置。 - 针对 `.env`、YAML 和 JSON 输入的生成配置安全性。 Flutter Guardian 不是一个 UI 框架、runtime SDK,也不是 Flutter 分析器的替代品。它是一个在发布前运行的发布守护工具。 ## 安装 全局激活它: ``` dart pub global activate flutter_guardian ``` 或者将其作为开发依赖添加到你的应用中: ``` dev_dependencies: flutter_guardian: ^1.0.1 ``` 如果你是基于此仓库进行开发: ``` dart pub get dart run flutter_guardian audit ``` ## 快速开始 在你的 Flutter 应用根目录下运行审计: ``` flutter_guardian audit ``` 如果你将其作为开发依赖添加,请运行: ``` dart run flutter_guardian audit ``` Flutter Guardian 会生成报告并以对 CI 友好的状态码退出: - `0` 表示未发现 error 级别的违规。 - `1` 表示发现了至少一个 error 级别的违规。 ## 策略文件 在你的 Flutter 应用根目录下创建一个 `guardian.yaml` 文件来自定义规则。 ``` security: require_obfuscation: true block_dotenv: true block_debug_logs: true block_hardcoded_secrets: true architecture: forbid_feature_to_feature_imports: true enforce_layer_direction: true feature_directory: features layers: - domain - data - presentation build: max_apk_size_mb: 50 max_aab_size_mb: 100 require_signing: true block_cleartext_traffic: true assets: max_image_size_kb: 1024 dependencies: warn_on_hosted_unpinned: true ``` 如果缺少 `guardian.yaml`,Flutter Guardian 将使用保守的默认设置。 ## 报告 默认情况下,Flutter Guardian 会生成: - `guardian-report.json` 用于 CI、仪表盘和自动化流程。 - `guardian-report.html` 供人工审查审计结果。 你可以选择自定义的输出路径: ``` flutter_guardian audit \ --json build/reports/guardian-report.json \ --html build/reports/guardian-report.html ``` ## CI 示例 GitHub Actions: ``` name: guardian on: pull_request: push: branches: [main] jobs: guardian: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dart-lang/setup-dart@v1 - run: dart pub get - run: dart run flutter_guardian audit ``` 同样的命令也可以用于 GitLab、Jenkins、Azure Pipelines、Bitrise、Codemagic 以及其他 CI 系统。 ## 配置生成 Flutter Guardian 可以从 `.env`、YAML 或 JSON 文件生成编译时的 Dart 配置。 ``` flutter_guardian generate \ --from .env \ --out lib/generated/app_env.dart \ --class AppEnv ``` 除非传入 `--force` 参数,否则不会覆盖现有的输出文件。 ``` flutter_guardian generate \ --from .env \ --out lib/generated/app_env.dart \ --class AppEnv \ --force ``` ## 包 Flutter Guardian 被拆分成了多个小包: - `flutter_guardian`:主包和公共可执行文件。 - `guardian_cli`:命令行界面。 - `guardian_core`:共享的策略、扫描器和报告契约。 - `guardian_security`:安全分析器。 - `guardian_architecture`:架构边界分析器。 - `guardian_dependencies`:依赖健康度分析器。 - `guardian_assets`:资源分析器。 - `guardian_generator`:Dart 配置生成器。 - `guardian_reports`:JSON 和 HTML 报告生成器。 大多数用户只需要主包 `flutter_guardian` 即可。 ## 常见问题 ### Flutter Guardian 是一个 linter 吗? 不是。Flutter Guardian 是一款发布审计工具。它通过检查项目结构、资源、依赖、构建文件和策略配置中与发布相关的风险,来补充 Dart 分析器、Flutter lints 和自定义 lint 规则的功能。 ### 它会在我的应用内部运行吗? 不会。Flutter Guardian 不会在应用 runtime 运行。它作为一个命令行工具在发布前运行,通常是在开发者的机器上或 CI 环境中。 ### 它会修改我的源代码吗? `audit` 命令只会扫描你的项目并写入报告文件。`generate` 命令仅会将 Dart 配置文件写入你提供的输出路径。 ### 我可以在没有 `guardian.yaml` 文件的情况下使用它吗? 可以。如果找不到策略文件,Flutter Guardian 会使用保守的默认设置。当你需要更严格或更具项目针对性的规则时,可以添加 `guardian.yaml`。 ### 它能让我的 CI pipeline 失败吗? 能。当 Flutter Guardian 发现 error 级别的违规时,它会以状态码 `1` 退出。这使得在 CI 中拦截不安全发布变得非常容易。 ### 它能替代人工审查吗? 不能。它会自动执行重复性的检查,但不能替代代码审查、安全审查、QA(质量保证)或发布审批。 ### 哪些应用应该使用它? Flutter Guardian 适用于生产环境的 Flutter 应用、设有发布门槛的团队、采用基于 feature 的架构的应用,以及希望在发布前进行可重复 CI 检查的项目。 ### 我可以只使用其中一个模块吗? 可以。该仓库是模块化的,但推荐的起点是 `flutter_guardian` 主包,因为它将常用的审计流程整合在了一起。 ## 示例与文档 - [示例](https://github.com/itsmelaxman/flutter_guardian/blob/main/example/flutter_guardian_example.dart) - [用户指南](https://github.com/itsmelaxman/flutter_guardian/blob/main/doc/USER_GUIDE.md) - [测试指南](https://github.com/itsmelaxman/flutter_guardian/blob/main/doc/TESTING.md) - [策略示例](https://github.com/itsmelaxman/flutter_guardian/blob/main/doc/policy.example.yaml) ## 许可证 Apache License 2.0。详见 [LICENSE](LICENSE)。
标签:Flutter, 文档结构分析, 架构治理, 错误基检测, 静态代码分析