执行dart fix --apply时出现Bad state错误的原因排查
关于
dart fix --apply报错"Bad state: Can't create both a dart file edit and a generic file edit for the same file"的成因 问题复现
执行以下命令时触发错误:
dart fix --apply
错误提示:
Bad state: Can't create both a dart file edit and a generic file edit for the same file
堆栈跟踪信息:
#0 ChangeBuilderImpl.addGenericFileEdit (package:analyzer_plugin/src/utilities/change_builder/change_builder_core.dart:166:7) #1 ConvertDocumentationIntoLine.compute (package:analysis_server/src/services/correction/dart/convert_documentation_into_line.dart:81:19) #2 BulkFixProcessor._applyProducer (package:analysis_server/src/services/correction/bulk_fix_processor.dart:297:22) #3 BulkFixProcessor._generateFix (package:analysis_server/src/services/correction/bulk_fix_processor.dart:734:11) #4 BulkFixProcessor._bulkApply (package:analysis_server/src/services/correction/bulk_fix_processor.dart:313:15) #5 BulkFixProcessor._fixSingleError (package:analysis_server/src/services/correction/bulk_fix_processor.dart:618:15) #6 BulkFixProcessor._fixErrorsInLibrary (package:analysis_server/src/services/correction/bulk_fix_processor.dart:521:15)
成因分析
从堆栈跟踪能直接定位问题根源:
- 报错来自Dart分析服务器的批量修复模块,具体是执行多行文档注释转单行的修复逻辑(
ConvertDocumentationIntoLine)时触发的 - 该修复逻辑尝试对同一个文件同时创建两种不兼容的编辑操作:一种是针对Dart文件的专属编辑,另一种是通用文件编辑
- 分析服务器的
ChangeBuilderImpl组件明确禁止这种操作,因此抛出了状态异常
本质上这是Dart分析工具内部的逻辑冲突bug,批量修复工具在处理文档注释格式修复时,误用了两种不能同时使用的文件编辑方式。
内容的提问来源于stack exchange,提问作者agDev
相关产品推荐
相关产品推荐

