undeclared-dependencies

Path
cross-file/correctness/undeclared-dependencies
Default
Off, opt in
Origin
Falcon
Rule
447 of 512
cross-file

Cross-file rule. It runs in falcon's whole-project pass, analyzing relationships across every file rather than one file at a time. Configure it under the top-level cross-file key.

Report package imports and exports missing from the enclosing pubspec.

Regular dependencies and self-imports are allowed everywhere; dev-dependencies are allowed only outside lib/. Generated flutter_gen imports are exempt. Malformed manifests are skipped; conditional alternatives are checked too. depend-on-referenced-packages defers overlapping reports when this rule is enabled, but retains its stricter bin/build-hook checks.

Invalid

bad/lib/app.dartdart
import 'package:missing_0/api.dart';
import 'package:missing_1/api.dart';
import 'package:missing_2/api.dart';
import 'package:missing_3/api.dart';
export 'package:test_helpers/api.dart';
import 'local.dart' if (dart.library.io) 'package:conditional/api.dart';
export 'local.dart' if (dart.library.html) 'package:conditional_export/api.dart';
bad/lib/app.dartDeclare `missing_0` in pubspec dependencies before importing it.
1import 'package:missing_0/api.dart';
bad/lib/app.dartDeclare `missing_1` in pubspec dependencies before importing it.
1import 'package:missing_0/api.dart';
2import 'package:missing_1/api.dart';
bad/lib/app.dartDeclare `missing_2` in pubspec dependencies before importing it.
2import 'package:missing_1/api.dart';
3import 'package:missing_2/api.dart';
bad/lib/app.dartDeclare `missing_3` in pubspec dependencies before importing it.
3import 'package:missing_2/api.dart';
4import 'package:missing_3/api.dart';
bad/lib/app.dartDeclare `test_helpers` in pubspec dependencies before importing it.
4import 'package:missing_3/api.dart';
5export 'package:test_helpers/api.dart';
bad/lib/app.dartDeclare `conditional` in pubspec dependencies before importing it.
5export 'package:test_helpers/api.dart';
6import 'local.dart' if (dart.library.io) 'package:conditional/api.dart';
bad/lib/app.dartDeclare `conditional_export` in pubspec dependencies before importing it.
6import 'local.dart' if (dart.library.io) 'package:conditional/api.dart';
7export 'local.dart' if (dart.library.html) 'package:conditional_export/api.dart';

Configure undeclared-dependencies

Set its severity in falcon.json under the cross-file section. See the configuration guide.

falcon.jsonjson
{
  "cross-file": {
    "rules": {
      "correctness": {
        "undeclared-dependencies": "error"
      }
    }
  }
}

Or silence one occurrence with a suppression comment; the reason is required.

example.dartdart
// falcon-ignore cross-file/correctness/undeclared-dependencies: <reason>
  • unnecessary-flutter-importsrecommendedflutter

    Disallow unused Flutter framework and dart:async imports.

  • unnecessary-nullablecheck-unnecessary-nullablecross-file

    Flags private function or method parameters whose nullable type is unnecessary.

  • unnecessary-nullable-return-typeunnecessary_nullable_return_type

    Disallow nullable return types on functions that never return null.

  • unnecessary-statementsunnecessary_statementsrecommended

    Flags expression statements whose expression has no clear effect.

  • unrelated-type-equality-checksunrelated_type_equality_checksrecommended

    Reports ==/!= comparisons and relational ==/!= patterns whose operand types are unrelated.

  • unused-codecheck-unused-codecross-file

    Report public top-level declarations that nothing references.

  • unused-dependenciescross-file

    Report regular pubspec dependencies with no Dart import or export in the analyzed package.

  • unused-filescheck-unused-filescross-file

    Report lib/ files that no project entrypoint can reach.