Open
Description
Tasks needed to deliver a new analyzer plugin system:
Tech preview
- Document requirements. Public doc available
- Design overall system. Public doc available
- Design plugin API. Public doc available
- Prototype system, to measure memory and CPU.
- Enforce analyzer compatibility, by matching SDK and using a pubspec version constraint.
- Relative path plugins are normalized.
- [analyzer plugins] Plugin diagnostics should be shown in
dart analyze
and affect the RC #59646 - Ship analysis_server_plugin package.
- Document the API (taken from the design docs, but checked in)
MVP (General availability)
- Support writing Assists
- Support priority files.
- [analyzer plugins] Plugin-reported diagnostics should be ignorable inline #59647
- Analyzer plugin failure at the commandline should be displayed in the terminal #60175
- LintCode, LintRule, NodeLintRegistry, and LinterContext are public API. (Best effort; these can honestly be under "General availability", but there is conceivably less churn if they are renamed and made public before GA.) These have been renamed or replaced, and also made public: LintCode -> DiagnosticCode; LintRule -> AbstractAnalysisRule, AnalysisRule, and MultiAnalysisRule; NodeLintRegistry -> RuleVisitorRegistry; LinterContext -> RuleContext; also RuleContextUnit.
- Design for AOT compilation.
- [Future] Document new analyzer plugin system site-www#5892
- Change the protocol regarding offsets, lines, and columns.
- Change the protocol to throw away stale file content.
- Differing plugin sets in analysis options within an analysis context are at least understood, tested, documented.
- Design workflow for plugin crash.
- [analyzer plugins] Support custom severity in analysis options #59644
- Provide a testing story for analysis rules.
- Diagnostics page has info about individual plugins, and pub resolution.
Deprecation
- Deprecate support for "legacy plugins."
- Remove support for "legacy plugins."
Product excellence
- Design workflow for slow plugins.
- Provide a testing story for quick fixes and quick assists.
- Provide a debugging story.
- Support providing Snippets
- Support writing analysis rules for pubspec files and analysis options files.
- Support writing quick fixes for pubspec files and analysis options files.
- Support applying plugin-provided quick fixes with
dart fix
.