在我的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)
我错过了一些东西(大脑我估计).请问是什么?
谢谢
史蒂夫
目前,在 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 文件中链接到它?
android-studio dart-analyzer flutter pubspec flutter-localizations
我想忽略 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
以确保它在没有运气的情况下使用这些选项。
我发现可以与dartanalyzer
cli 工具一起使用的唯一语法是:
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 中的分析器正确过滤了这些文件,但dartanalyzer
cli 工具没有。
有什么方法可以同时使用 IntelliJ 和dartanalyzer
CLI 工具吗?
笔记:
我正在使用
? dart --version
Dart VM version: 2.4.0 (Wed Jun 19 11:53:45 2019 +0200) on …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个非常标准的 Flutter 项目。因为我是 Flutter 和 Dart 的新手,所以我希望我的工具尽可能有用。所以我添加pedantic: ^1.9.0
并这样dev_dependencies
写:analysis_options.yaml
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_else
和avoid_relative_lib_imports
lints 等错误。但是当我编写如下代码时:
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
手动运行时也没有收到任何错误:
$ 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) 我正在使用source_gen
Dart 解析一些 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) 我正在学习 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) 升级到 0.40.0 后,我开始在任何类型后出现一个尴尬的星号后缀符号。
例子...
print(elementInstance.type.toString());
我曾经得到Stream<bool>
现在我得到 Stream<bool*>*
我是否错过了任何分析器设置或 dart 格式?
提前致谢。
DartType
来自分析器包有一些属性:
isDartCoreNum
, isDartCoreInt
,isDartCoreDouble
如何检查 DartType 是否为自定义类型(DartType
代表Employee
或Bus
NOTint
或double
)?
这对于我需要FieldElement
在分析代码期间发现类型是必要的。怎么做?
我正在使用Dart的分析器 API,它允许我内省Dart代码.
这是一些示例代码:
void soIntense(anything, {bool flag: true, int value}) { }
Run Code Online (Sandbox Code Playgroud)
注意flag
参数的默认值是多少true
.
假设我有一个实例,我怎样才能得到默认值ParameterElement
?
该元包提供了一个@protected
注解(除了其他)获得分析仪的提示或警告有关直接子类以外的使用受保护的成员.
信息:成员'selectedChildrenChanged'只能在'MenuItem'子类的实例成员中使用([bwu_ng_quick_nav] test/menu_item_test.dart:108)
我对单元测试中的这些提示不感兴趣.
我该如何抑制这些提示?