标签: dart-analyzer

如何在Webstorm中设置强模式Dart分析器?

在我的Dart yaml文件中

analyzer:
  strong-mode: true
Run Code Online (Sandbox Code Playgroud)

但它没有做任何事情.我还添加了分析仪:

dependencies:
   analyzer: any
   browser: ^0.10.0
   polymer: ^1.0.0-rc.16
   polymer_elements: ^1.0.0-rc.8
Run Code Online (Sandbox Code Playgroud)

我错过了一些东西(大脑我估计).请问是什么?

谢谢

史蒂夫

dart dart-analyzer

10
推荐指数
1
解决办法
509
查看次数

如何在 Android Studio Quick Fix 菜单中获取 AppLocalizations 导入建议

问题陈述

目前,在 AppLocalizations 上调出 Android Studio 快速修复菜单(Opt/Alt+Enter 键盘快捷键)并不建议导入生成的文件。

AppLocalizations 类位于.dart_tool/flutter_gen/gen_l10n/app_localizations.dart,这也是一个 Git 忽略的目录。

结果我必须手动输入导入语句。其他 Flutter 类名称通常建议通过“快速修复”菜单导入相关文件。

预期是什么

我期待“快速修复”菜单建议导入生成的 AppLocalizations 文件。当我单击导入建议时,它应该将其与其他导入语句一起插入到文件顶部。

问题

如何让导入建议出现在 AppLocalizations 的“快速修复”菜单中?我是否需要帮助 Dart 分析器“了解”目录中生成的文件.dart_tool?我可以将生成的文件包含在我的“项目”中,同时仍然 Git 忽略它吗?我是否需要在我的 pubspec 文件中链接到它?

“快速修复”菜单缺少导入建议的屏幕截图

“快速修复”菜单的屏幕截图不建议使用 AppLocalizations 导入

android-studio dart-analyzer flutter pubspec flutter-localizations

10
推荐指数
1
解决办法
1169
查看次数

如何使用 dartanalyzer 忽略文件?

我想忽略 bin/lib/ 和 test/ 中以 .g.dart、.inject.dart、.inject.summary 结尾的所有文件

忽略文件的语法是什么dartanalyzer?我尝试将此部分添加到我的 analysis_options.yaml 文件中:

analyzer:
  exclude:
    - lib/**.g.dart
Run Code Online (Sandbox Code Playgroud)

到我的 analysis_options.yaml,当我dartanalyzer在我的项目上运行时,它没有考虑到这一点。我还尝试使用dartanalyzer --options analysis_options.yaml以确保它在没有运气的情况下使用这些选项。

我发现可以与dartanalyzercli 工具一起使用的唯一语法是:

analyzer:
  exclude:
    - **/*.g.dart
Run Code Online (Sandbox Code Playgroud)

但 IntelliJ 说这是一个错误 ( Undefined alias.)

如果我使用这个语法:

analyzer:
  exclude:
    - lib/**.g.dart
    - lib/**.inject.dart
    - lib/**.inject.summary
    - test/**.g.dart
    - test/**.inject.dart

Run Code Online (Sandbox Code Playgroud)

嵌入在 IntelliJ 中的分析器正确过滤了这些文件,但dartanalyzercli 工具没有。

有什么方法可以同时使用 IntelliJ 和dartanalyzerCLI 工具吗?

笔记:

我正在使用

? dart --version
Dart VM version: 2.4.0 (Wed Jun 19 11:53:45 2019 +0200) on …
Run Code Online (Sandbox Code Playgroud)

dart dart-analyzer

9
推荐指数
1
解决办法
3464
查看次数

Flutter Dart 分析器未应用我的 linter 规则

我正在开发一个非常标准的 Flutter 项目。因为我是 Flutter 和 Dart 的新手,所以我希望我的工具尽可能有用。所以我添加pedantic: ^1.9.0并这样dev_dependencies写:analysis_options.yaml

\n\n
include: package:pedantic/analysis_options.yaml\n\nanalyzer:\n  exclude: [build/**]\n  strong-mode:\n    implicit-casts: false\n    implicit-dynamic: false\n
Run Code Online (Sandbox Code Playgroud)\n\n

根据https://dart-lang.github.io/linter/lints/pedantic应该启用avoid_empty_elseavoid_relative_lib_importslints 等错误。但是当我编写如下代码时:

\n\n
import \'../model/model.dart\';\n
Run Code Online (Sandbox Code Playgroud)\n\n

或这个:

\n\n
  if (context == null) {\n    print(\'context is null\');\n  } else {\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在 IntelliJ IDEA 中没有收到任何错误,flutter analyze手动运行时也没有收到任何错误:

\n\n
$ flutter analyze\nAnalyzing app...                                                        \nNo issues found! (ran in 5.0s)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试显式启用这些 lints:

\n\n
$ flutter analyze\nAnalyzing app...                                                        \nNo …
Run Code Online (Sandbox Code Playgroud)

dart dart-analyzer flutter

9
推荐指数
1
解决办法
6175
查看次数

如何从 Dart Analyzer / source-gen 中的某个元素获取 AstNode?

我正在使用source_genDart 解析一些 Dart 文件analyzer

我正在扩展GeneratorForAnnotation<>和覆盖方法 FutureOr<String> generateForAnnotatedElement(Element element, ConstantReader annotation, BuildStep buildStep)。此方法为我提供了一个基本元素,我可以导航该元素直到找到其他元素,例如 a MethodElement

一旦我掌握了这个MethodElement,我想详细分析该方法的块。我想要这样的东西:

AstNode node = methodElement.computeNode();
Run Code Online (Sandbox Code Playgroud)

更详细地:

class MyGenerator extends GeneratorForAnnotation<MyAnnotation> {

    @override
    FutureOr<String> generateForAnnotatedElement(
        Element element, ConstantReader annotation, BuildStep buildStep,
    ) {
      if (element is ClassElement)
        for (MethodElement methodElement in element.methods) {
          AstNode node = methodElement.computeNode();
          processMyNode(node);
        }
      else
        throw AssertionError();
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,computeNode已弃用。如果我尝试调用它,我会得到:

NoSuchMethodError: Class 'RestrictedAnalysisContext' has no instance method 'resolveCompilationUnit' with matching …
Run Code Online (Sandbox Code Playgroud)

dart dart-analyzer

7
推荐指数
1
解决办法
244
查看次数

为什么颤振分析与飞镖分析不同?

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

include: package:pedantic/analysis_options.yaml

linter:
  rules:
    public_member_api_docs: true
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

但是当我运行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 …
Run Code Online (Sandbox Code Playgroud)

static-code-analysis dart dart-analyzer flutter linter

7
推荐指数
1
解决办法
740
查看次数

任何元素数据类型上的星号后缀 (*)(分析器 &gt;= 0.40.0)

升级到 0.40.0 后,我开始在任何类型后出现一个尴尬的星号后缀符号。

例子...

print(elementInstance.type.toString());

我曾经得到Stream<bool>现在我得到 Stream<bool*>*

我是否错过了任何分析器设置或 dart 格式?

提前致谢。

dart dart-analyzer

7
推荐指数
1
解决办法
775
查看次数

如何检查Element的DartType是否是自定义类型?

DartType来自分析器包有一些属性: isDartCoreNum, isDartCoreInt,isDartCoreDouble

如何检查 DartType 是否为自定义类型(DartType代表EmployeeBusNOTintdouble)?

这对于我需要FieldElement在分析代码期间发现类型是必要的。怎么做?

dart dart-analyzer

6
推荐指数
1
解决办法
201
查看次数

如何使用Dart的分析器API获取可选参数的默认值?

我正在使用Dart分析器 API,它允许我内省Dart代码.

这是一些示例代码:

void soIntense(anything, {bool flag: true, int value}) {  }
Run Code Online (Sandbox Code Playgroud)

注意flag参数的默认值是多少true.

假设我有一个实例,我怎样才能得到默认值ParameterElement

dart dart-analyzer

5
推荐指数
1
解决办法
57
查看次数

禁止使用受保护成员的提示

包提供了一个@protected注解(除了其他)获得分析仪的提示或警告有关直接子类以外的使用受保护的成员.

信息:成员'selectedChildrenChanged'只能在'MenuItem'子类的实例成员中使用([bwu_ng_quick_nav] test/menu_item_test.dart:108)

我对单元测试中的这些提示不感兴趣.

我该如何抑制这些提示?

dart dart-analyzer

5
推荐指数
1
解决办法
496
查看次数