为啥颤振分析与飞镖分析不同?

Posted

技术标签:

【中文标题】为啥颤振分析与飞镖分析不同?【英文标题】:Why is flutter analyze different from dart analyze?为什么颤振分析与飞镖分析不同? 【发布时间】:2021-03-26 06:13:52 【问题描述】:

我正在学习 Flutter,并创建了一个简单的 android 应用。我想遵循最佳实践,所以我还创建了一个analysis_options.yaml

include: package:pedantic/analysis_options.yaml

linter:
  rules:
    public_member_api_docs: true

Android Studio 根据analysis_options.yaml 正确更新其代码分析设置并报告违规行为。

问题是当我运行flutter analyze 时,它不会报告任何public_member_api_docs

flutter analyze
Running "flutter pub get" in flutter-course...         514ms
Analyzing flutter-course...                                 

   info • Unused import: 'package:places/ui/screen/sight_list_screen.dart' • lib/main.dart:2:8 • unused_import
   info • Omit type annotations for local variables • lib/ui/screen/visiting_screen.dart:166:5 • omit_local_variable_types

但是当我运行 dart analyze 时,它会报告大量警告:

dart analyze
Analyzing flutter-course... 2.1s

   info • Document all public members at lib/constants.dart:5:16 • (public_member_api_docs)
   info • Document all public members at lib/constants.dart:6:16 • (public_member_api_docs)
   …
   info • Unused import: 'package:places/ui/screen/sight_list_screen.dart' • lib/main.dart:2:8 • unused_import
   info • Omit type annotations for local variables • lib/ui/screen/visiting_screen.dart:166:5 • omit_local_variable_types

为什么flutter analyze 不尊重我的analysis_options.yaml 的设置?

【问题讨论】:

【参考方案1】:

我会假设他们使用不同的预设(如果您尚未配置 analysis_options.yaml)。

dart analyze 可能默认为更适合已发布包 (public_member_api_docs) 而flutter analyze 更适合没有正在使用的 API 的应用。

您可以尝试添加带有一些预设配置的analysis_options.yaml 文件,例如lint 或pedantic。

这样你可能会看到更多的提示和警告,但你有一个很好的基线,我认为这两个命令应该给你相同的输出。

或者,您可以从一个空的 analysis_options.yaml 开始,然后逐一启用/禁用要使用的检查。

编辑

为什么颤振分析不尊重我的 analysis_options.yaml 中的设置?

我错过了这个。传统上,两个命令的输出和格式都存在差异,因为它们使用了不同的依赖版本。在 Dart 2.12 和 Flutter 2.0 中,它们都应该在底层使用相同的东西。

话虽如此,目前似乎有https://github.com/flutter/flutter/projects/106 正在修复最后剩余的差异。

【讨论】:

以上是关于为啥颤振分析与飞镖分析不同?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个切换按钮在颤振 - 飞镖中不起作用?

为啥我的 Contact.dart 没有运行? (颤振、飞镖、VS 代码)

Firebase 分析:在一个 firebase 项目中收集不同 ios 应用程序的分析数据 - 颤振

如何在颤振飞镖中使用相同的元素初始化列表?

在颤振/飞镖中与图像下的小部件交互

为啥我们应该在颤振中使用选项?