如何禁用文件夹中的特定分析选项规则

How to disable a specific analysis option rule in a folder

我有一个项目可以简化为:

lib/
 |- main.dart
test/
test_environment/
 |- test_test.dart

其中 test_environment 包含一组 “特殊” 测试,不能简单地 运行 和

flutter test

他们需要一些特定的设置(例如:flutter test --dart-define=myVar=myValue)。


在我的 lib/main.dart 中,我有类似的东西:

class MyClass {
  @visibleForTesting
  MyClass.testConstructor();
}

我想使用 test/test_helper.dart 中的 MyClass.testConstructor()。但是当我这样做时,我有一个警告:

The member 'MyClass.testConstructor' can only be used within 'package:my_project/lib/main.dart' or a test. dart(invalid_use_of_visible_for_testing_member)`

我想为 test_environment/ 文件夹禁用此规则,但不为 lib/ 文件夹禁用此规则。我该怎么做?

我找到的解决方案是为扩展根 analysis_options.yaml:

的文件夹 test_environment/ 创建自定义 analysis_options.yaml
lib/
 |- main.dart
test/
test_environment/
 |- test_test.dart
 |- analysis_options.yaml
analysis_options.yaml

并且在 test_environment/analysis_options.yaml 中:

include: ../analysis_options.yaml

analyzer:
  errors:
    invalid_use_of_visible_for_testing_member: ignore # <- Disable the analyzer rule.

linter:
  rules:
    only_throw_errors: false # <- An example to show how to disable a linter rule.

这采用根 analysis_options.yaml 设置的 analyzer/linter 规则并覆盖 invalid_use_of_visible_for_testing_member 以在 test_environment 中禁用它。