|
1 | 1 | # analysis\_server\_plugin package |
2 | 2 |
|
3 | | -This package is being developed for the second incarnation of Dart Analyzer |
4 | | -plugins. It is in an intermediate state, and a few things must be kept in mind |
5 | | -during this phase of development: |
| 3 | +This package offers support for writing Dart analyzer plugins. |
6 | 4 |
|
7 | | -1. **This package is not to be published on pub yet.** We will flesh out a |
8 | | - stable API befoure the first publish. |
9 | | -2. **In order to support the above point, no pub-publishable code can depend on |
10 | | - this package.** At no point can we introduce a dependency from a package |
11 | | - like `analyzer` or `analyzer_plugin` to this package. If we did so, then at |
12 | | - the next time we published _that_ package to pub, we would need to publish |
13 | | - _this_ package to pub. No. In short, I think what this means is that only |
14 | | - the `analysis_server` package can depend on this package. |
| 5 | +Until this README is fleshed out, more inforamtion can be found in the [docs][]. |
15 | 6 |
|
16 | | -## Migration of code between packages |
| 7 | +[docs]: https://github.com/dart-lang/sdk/tree/main/pkg/analysis_server_plugin/doc |
17 | 8 |
|
18 | | -As part of the design of the new Dart Analyzer plugins, much code will shift |
19 | | -around, in a few directions. |
20 | | - |
21 | | -* **`analysis_server` package to `analysis_server_plugin` package:** The API of |
22 | | - the new Dart Analyzer plugins focuses around two primary concepts: lint rules |
23 | | - and quick fixes. Quick assists may be chosen as a third important concept. |
24 | | - Lint rule code has typically lived in the `analyzer` package, and does not |
25 | | - need to move. (It's presence in the `analyzer` package could be deprecated in |
26 | | - favor of this package, but it is not important for the implementation.) |
27 | | - |
28 | | - Quick fixes, however, have only existed in concept, and interface, and API, |
29 | | - in the `analysis_server` package. That code needs to move to this package in |
30 | | - order to be used in a Dart Analyzer plugin. |
31 | | - |
32 | | - **A move from the `analysis_server` package to this package is not a breaking |
33 | | - change.** |
34 | | - |
35 | | -* **`analyzer_plugin` package to `analysis_server_plugin` package:** Care is |
36 | | - being taken to decide where Dart Analyzer plugin code will live and how it |
37 | | - will be published. It is not decided yet what the ultimate package API will |
38 | | - be. Some code from **analyzer_plugin** may move to this package. |
39 | | - |
40 | | - **A move from the `analyzer_plugin` package is a breaking change. Extreme |
41 | | - care must be taken.** |
42 | | - |
43 | | -* **`analyzer_plugin` package to `analysis_server` package:** There will be |
44 | | - many components of the analysis server that currently live in |
45 | | - `analyzer_plugin`, because they were necessary for the first version of Dart |
46 | | - Analyzer plugins), but are not part of the new Dart Analyzer plugins. These |
47 | | - components can be moved safely back into the `analysis_server` package. |
48 | | - |
49 | | - In terms of priority, it is not crucial for such code to be moved out of the |
50 | | - `analyzer_plugin` package. It can live there indefinitely, and the |
51 | | - `analysis_server` package can continue to depend on code from the |
52 | | - `analyzer_plugin` package, as shipped in the SDK. |
53 | | - |
54 | | - **A move from the `analyzer_plugin` package is a breaking change. Extreme |
55 | | - care must be taken.** |
0 commit comments