falcon vs dart analyze, DCM and custom_lint

How falcon compares with the other ways to lint Dart and Flutter code. falcon's numbers come from its own rule catalog and benchmarks; every other claim links to its public source. Same rules, cold analyzer cache: falcon 4.4–5.5× faster than dart analyze on 4 corpora. Same rules, warm analyzer cache: dart analyze was faster on cfug/dio, felangel/bloc and flame-engine/flame; falcon was faster on three flutter/packages plugin families (2.5×). DCL rules, cold analyzer cache: falcon 7.8–41× faster than Dart Code Linter on 3 corpora; no comparison on three flutter/packages plugin families: Dart Code Linter not measured (DCL 4.4.4 drops nested package contexts under a single root (analyzer_utils.dart getFilePaths); multiple roots analyze 259 files twice). DCL rules, warm analyzer cache: falcon 4.3–23× faster than Dart Code Linter on 3 corpora; no comparison on three flutter/packages plugin families: Dart Code Linter not measured (DCL 4.4.4 drops nested package contexts under a single root (analyzer_utils.dart getFilePaths); multiple roots analyze 259 files twice).

Measured performance; geometric-mean time ratios relative to falcon
Measurementfalcondart analyzeDart Code LinterDCM
Speed, Same rules, cold analyzer cacheBaseline4.9× slower than falcon (4 matched corpora)not measurednot measured
Largest-process peak RSS range, Same rules, cold analyzer cache111–2149 MB156–4140 MBnot measurednot measured
Speed, Same rules, warm analyzer cacheBaseline1.0× slower than falcon (4 matched corpora)not measurednot measured
Largest-process peak RSS range, Same rules, warm analyzer cache111–2092 MB124–2783 MBnot measurednot measured
Speed, DCL rules, cold analyzer cacheBaselinenot measured20× slower than falcon (3 matched corpora)three flutter/packages plugin families: not measured — DCL 4.4.4 drops nested package contexts under a single root (analyzer_utils.dart getFilePaths); multiple roots analyze 259 files twice.8.4× slower than falcon (2 matched corpora)flame-engine/flame: not measured — exceeds DCM Free 50k-line limit.three flutter/packages plugin families: not measured — exceeds DCM Free 50k-line limit.
Largest-process peak RSS range, DCL rules, cold analyzer cache103–1805 MBnot measured362–1996 MB122–204 MB
Speed, DCL rules, warm analyzer cacheBaselinenot measured11× slower than falcon (3 matched corpora)three flutter/packages plugin families: not measured — DCL 4.4.4 drops nested package contexts under a single root (analyzer_utils.dart getFilePaths); multiple roots analyze 259 files twice.4.9× slower than falcon (2 matched corpora)flame-engine/flame: not measured — exceeds DCM Free 50k-line limit.three flutter/packages plugin families: not measured — exceeds DCM Free 50k-line limit.
Largest-process peak RSS range, DCL rules, warm analyzer cache101–1793 MBnot measured278–1177 MB88–110 MB
Dart and Flutter linters at a glance
Aspectfalcondart analyzeDCMcustom_lint
What it isStandalone linter and language server, written in RustThe Dart SDK's analysis command: the same static analysis as your IDE[1]Commercial code-quality toolkit for Dart and Flutter[3]A framework for writing your own lint rules as an analyzer plugin[5]
Lint rules512 built in, 215 on by defaultThe official Dart linter rules[2]100 on Free, 552 on Pro and above[3]None built in; you write or install rule packages[6]
PriceFree, MITFree, part of the Dart SDKFree for 1 seat up to 50k lines; Pro $16/month per seat; Teams $80/month for 5 seats[3]Free, Apache-2.0[6]
Configurationfalcon.json with a JSON Schemaanalysis_options.yaml[7]A dcm entry in analysis_options.yaml[4]analysis_options.yaml analyzer plugin[6]
StatusActively developed, pre-1.0Maintained by the Dart teamActively released[3]Repository archived; the README recommends analysis_server_plugin instead[6]

Each timing is a mean of repeated runs. Speed cells use the geometric mean of per-corpus time ratios against falcon on the matched corpora shown; RSS cells show the range across measured corpora only. DCL is the DCL-family speedup baseline in the per-corpus charts and methodology, which also list the machine, versions, and commands.

When to pick which

A dart analyze alternative for lint rules

Keep dart analyze for type checking and compile errors, and add falcon for linting. falcon implements 215 official Dart lints under their analyzer names, plus 297 rules the official set doesn't have. Its rules run in falcon's own process, never inside the Dart analysis server.

A DCM alternative

42 falcon rules are ports of Dart Code Metrics rules, alongside cross-file checks like unused-code and unused-files. falcon has no seat or line limits. DCM also offers code metrics, dashboards, and CLI fixes on its paid plans[3].

A custom_lint alternative

custom_lint is a framework for your own rules. If you used it for community rule packages, falcon's framework domains cover flutter, test, bloc, riverpod, provider, flutter_hooks, equatable out of the box.

Questions

Is falcon a replacement for dart analyze?

No, it complements it. dart analyze runs the full Dart analyzer, which type-checks your code and reports compile errors; keep it (or your IDE) for that. falcon runs lint rules, including the official Dart lints under their analyzer names, but it does not read // ignore: or // ignore_for_file: comments. It uses its own falcon-ignore comments, each with a required reason, so lint counts from the two tools can differ on the same code. How falcon suppressions work

Does falcon need the Dart SDK?

falcon parses Dart itself and never starts the Dart analyzer or analysis server. Rules that need SDK or package types need the Dart SDK installed and your dependencies resolved.

Can I migrate my analysis_options.yaml?

Yes. falcon migrate reads the analyzer linter.rules list, dart_code_linter.rules, and legacy custom_lint.rules from analysis_options.yaml and writes an equivalent falcon.json. Rules with no falcon equivalent are reported on stderr.

Is falcon free?

Yes. falcon and every one of its rules are MIT licensed, with no seat or lines-of-code limits.

Sources

Competitor details checked on October 21, 2026.

  1. dart.dev: dart analyze
  2. dart.dev: Linter rules
  3. dcm.dev: Pricing
  4. dcm.dev: Configuration
  5. pub.dev: custom_lint
  6. GitHub: invertase/dart_custom_lint
  7. dart.dev: Customizing static analysis