运行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
相关产品推荐
相关产品推荐

