Я изучаю 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
?
Я предполагаю, что они используют разные пресеты (если вы не настроили 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 выполняется исправление последних оставшихся несоответствий.