The Wire · Showcase
FLUTTER ANALYZER PLUGIN MIGRATION COMPLETE - LEGACY CHECKS NOW SHIP AS IDE RULES
By RepoJournal · Filed · About Mobile platforms
Flutter finished migrating five major linting checks from batch analysis to real-time AST validation, meaning developers get instant IDE feedback instead of waiting for bot runs.
Ben Konyi closed out a three-PR migration that moves test validation [1], framework checks [2], and import rules [3] from `dev/bots/analyze.dart` into `dev/flutter_analyzer_plugin`, giving engineers diagnostics as they type instead of at CI time. The work includes new AST rules like `skip_test_comments`, `no_runtimetype_in_tostring`, and `no_bad_imports_in_flutter`, each backed by unit tests and enabled across all test option files. Meanwhile, Victoria Ashworth refactored SwiftPM symlink path logic [4] to handle edge cases where plugin basenames don't match their names, ensuring Xcode re-processes manifests when Flutter plugin versions change. On the Swift side, ktoso added cross-module distributed tests [5], Gabor Horvath introduced an experimental `@unsafe(always)` mode for C++ interop [6] that stops renaming unsafe functions, and tbkka implemented runtime support for casting noncopyable existentials [7]. Kotlin landed a batch of value class fixes: Alexey Belkov expanded inline class tests [8], fixed deserialization for private constructors [9], and added support for full value classes in stubs [10]. Across 3 repos, 94 commits and 66 PRs shipped.
One email a day. Unsubscribe in one click.
Keep up with Mobile platforms in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Review analyzer plugin rules if you maintain custom lints in Flutter flutter/flutter [plan]
- → Test Swift C++ interop if you use @unsafe(always) annotations apple/swift [monitor]
- → Update Kotlin value class deserialization tests if consuming library ABIs JetBrains/kotlin [plan]
References
- [1] Migrate test rules to analyzer plugin (#191038) flutter/flutter
- [2] Migrate framework rules to analyzer plugin (#191035) flutter/flutter
- [3] Migrate internal import rules to analyzer plugin (#191036) flutter/flutter
- [4] Refactor SwiftPM symlink path logic (#188647) flutter/flutter
- [5] [Distributed] more optimized/cross-module tests for resolvable params ↗ apple/swift
- [6] [cxx-interop] Add a new mode that no longer renames unsafe functions apple/swift
- [7] [any ~Copyable] Part 2: Basic runtime support for existential-to-concrete casting ↗ apple/swift
- [8] [stubs, LL] Expand @JvmInline value class tests JetBrains/kotlin
- [9] [stubs, LL] Fix deserialization of inline class with private constructor JetBrains/kotlin
- [10] [stubs, LL] Support full value classes in stubs/deserialization JetBrains/kotlin