You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行dcdg生成Dart类图报Unable to find the context错误求助

问题现象

使用dcdg工具为Dart项目生成类图时触发未处理异常,报错信息如下:

C:\Users\Foldername\AppData\Local\Pub\Cache\bin>dart pub global run dcdg
C:\Users\Foldername\AppData\Local\Pub\Cache\bin\lib

Unhandled exception:

Bad state: Unable to find the context to C:\Users\Foldername\AppData\Local\Pub\Cache\bin\lib\.env.dart
#0      AnalysisContextCollectionImpl.contextFor (package:analyzer/src/dart/analysis/analysis_context_collection.dart:106:5)
#1      findClassElements (package:dcdg/src/find_class_elements.dart:46:39)
#2      main (file:///C:/Users/Foldername/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/dcdg-4.0.1/bin/dcdg.dart:35:25)
#3      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:295:32)
#4      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)

前置操作已完成:dcdg包全局激活、更新到最新版本、系统环境变量配置正确,但始终无法生成类图。

故障根因

报错路径显示执行命令时的终端工作目录为Pub全局包缓存的bin目录,并非目标Dart项目的根目录。dcdg依赖Dart analyzer做代码静态解析,默认读取当前工作目录的项目分析上下文,在缓存目录下找不到合法的Dart项目配置与代码结构,就会抛出上下文查找失败的异常。

排查解决步骤
  • 切换终端工作目录到目标Dart/Flutter项目根目录,也就是存放pubspec.yaml文件的层级,Windows系统切换命令示例:cd C:\Users\Foldername\path\to\your\dart_project
  • 确认当前目录下pubspec.yaml配置合法,纯Dart项目先执行dart pub get拉取依赖,Flutter项目先执行flutter pub get完成项目初始化,保证分析器能正常加载项目上下文与SDK关联配置
  • 在项目根目录下重新执行dcdg生成命令,可通过-o参数指定输出文件路径,示例:dcdg -o project_class.puml
  • 若切换目录后仍报同类错误,检查项目目录下是否存在不属于正式代码的冗余占位文件(比如报错中提到的.env.dart空文件/残留文件),这类文件会干扰分析器的路径判断,移出项目目录后重试即可
  • 若项目为多包结构,需要在根目录执行命令时追加--search-path参数指向子包的lib目录,避免分析器找不到子模块的代码上下文。

内容的提问来源于stack exchange,提问作者questionasker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:12:20