|
| 1 | +# Triage Priorities for Dart Analyzer |
| 2 | + |
| 3 | +This document describes the relative priorities for bugs filed under the |
| 4 | +`area-analyzer` tag in GitHub as in |
| 5 | +[this search](https://github.com/dart-lang/sdk/issues?q=is%3Aopen+is%3Aissue+label%3Aarea-analyzer). |
| 6 | +While there are always exceptions to any rule, in general try to align our |
| 7 | +priorities with these definitions. |
| 8 | + |
| 9 | +To triage bugs, search for `area-analyzer` |
| 10 | +[bugs that are not currently triaged](https://github.com/dart-lang/sdk/issues?q=is%3Aopen+is%3Aissue+label%3Aarea-analyzer+-label%3AP0+-label%3AP1+-label%3AP2+-label%3AP3+-label%3AP4) |
| 11 | +and for each bug, mark priority based on how closely it matches with the below |
| 12 | +constraints. |
| 13 | + |
| 14 | +## Analyzer triage priorities |
| 15 | + |
| 16 | +Descriptions here use [terms and definitions](#terms-and-definitions) from the |
| 17 | +end of this document. If your bug doesn't precisely match one of these, |
| 18 | +consider how impactful it is compared to examples given here and pick a priority |
| 19 | +reflecting that. |
| 20 | + |
| 21 | +### P0 |
| 22 | + |
| 23 | +* Incorrect analysis errors or warnings, widespread |
| 24 | +* Uncaught exceptions resulting in tool crashes, widespread and no workaround |
| 25 | +* Incorrect resolution of symbols or libraries, widespread and no workaround |
| 26 | +* Incorrect data from analyzer API, widespread and with no workaround |
| 27 | +* Automation resulting in corrupted code from clean inputs, widespread |
| 28 | +* Performance regression, large and widespread |
| 29 | +* Any problem urgently blocking critical milestones for key users or Dart rolls |
| 30 | + into Flutter/Google3 |
| 31 | +* Security or privacy problem, widespread |
| 32 | + |
| 33 | +### P1 |
| 34 | + |
| 35 | +* Incorrect analysis errors or warnings, on edge cases but no workarounds |
| 36 | +* Incorrect analysis infos, widespread |
| 37 | +* Incorrect resolution of symbols or libraries, edge cases, or widespread but |
| 38 | + with workaround |
| 39 | +* Incorrect data from analyzer API, widespread but with workaround |
| 40 | +* Uncaught exceptions resulting in tool crashes, widespread but with workaround |
| 41 | +* Automation resulting in corrupted code from clean inputs, edge cases or with |
| 42 | + an easy workaround |
| 43 | +* Automation resulting in incorrect code, widespread |
| 44 | +* Performance regression, large or widespread (but not both), or impacting key |
| 45 | + users |
| 46 | +* An enhancement required for critical milestones for key users, or that has |
| 47 | + significant evidence gathered indicating a positive impact if implemented |
| 48 | +* Any problem that, while it doesn't currently block, will block rolls into |
| 49 | + Flutter/Google3 if not resolved within ~2 weeks |
| 50 | +* Security or privacy problem, in edge cases or with very simple workarounds |
| 51 | + |
| 52 | +### P2 |
| 53 | + |
| 54 | +* Incorrect analysis errors or warnings, on edge cases with simple workaround |
| 55 | +* Incorrect analysis infos, on edge cases |
| 56 | +* Incorrect resolution of symbols or libraries, edge cases only with workarounds |
| 57 | +* Incorrect data from analyzer API, edge cases without workaround |
| 58 | +* Automation resulting in incorrect code, edge cases |
| 59 | +* Uncaught exceptions resulting in tool crashes, edge cases |
| 60 | +* Performance regression, large, impacting edge cases, without good workarounds |
| 61 | +* Security or privacy problem, theoretical & non-exploitable |
| 62 | +* An enhancement that the team agrees is a good idea but without strong evidence |
| 63 | + indicating positive impact |
| 64 | + |
| 65 | +### P3 |
| 66 | + |
| 67 | +* Uncaught exceptions caught by a fuzzer, but believed to be theoretical |
| 68 | + situations only |
| 69 | +* Incorrect analysis errors or warnings, theoretical |
| 70 | +* Incorrect analysis infos, on edge cases with workaround |
| 71 | +* Incorrect resolution of symbols or libraries, theoretical |
| 72 | +* Incorrect data from analyzer API, edge case with workaround available |
| 73 | +* Performance regression impacting edge cases with workaround or without |
| 74 | + workaround if small |
| 75 | +* Automation resulting in incorrect code, theoretical or edge cases with easy |
| 76 | + workaround |
| 77 | +* An enhancement that someone on the team thinks might be good but it isn't |
| 78 | + (yet?) generally agreed by those working in the area that it is good |
| 79 | + |
| 80 | +### P4 |
| 81 | + |
| 82 | +* Incorrect analysis infos, theoretical |
| 83 | +* Incorrect data from analyzer API, theoretical |
| 84 | +* Theoretical performance problems |
| 85 | +* An enhancement that may have some evidence that it isn't a good idea to |
| 86 | + implement but it isn't clear enough to close |
| 87 | + |
| 88 | +## Terms and definitions |
| 89 | + |
| 90 | +### Terms describing impact |
| 91 | + |
| 92 | +* "edge cases" - Impacting only small parts of the ecosystem. For example, |
| 93 | + one package, or one key user with a workaround. Note this is an edge case |
| 94 | + from the perspective of the ecosystem vs. language definition. If it isn't |
| 95 | + happening much in the wild or (if there isn't evidence either way) if it |
| 96 | + isn't believed to be super likely in the wild, it is an edge case. |
| 97 | +* "theoretical" - Something that we think is unlikely to happen in the wild |
| 98 | + and there's no evidence for it happening in the wild. |
| 99 | +* "widespread" - Impact endemic throughout the ecosystem, or at least far |
| 100 | + enough that this is impacting multiple key users. |
| 101 | + |
| 102 | +### Other terms |
| 103 | + |
| 104 | +* "automation" - Anything that changes the user's code automatically. |
| 105 | + Autocompletion, quick fixing, NNBD migration, etc. |
| 106 | +* "corrupted code" - Modification of source code in such a way that it is |
| 107 | + more than just a bit wrong or having some symbols that don't exist, but is |
| 108 | + not valid Dart and would be painful to manually correct. |
| 109 | +* "incorrect code" - Modification of code in a way that is known to be wrong, |
| 110 | + but would be trivial to figure out how to fix for the human using the tool. |
| 111 | +* "key users" - Flutter, Pub, Fuchsia, Dart, Google3, 1P |
| 112 | +* "tool" - Analysis Server, dartanalyzer, migration tool, analyzer-as-library |
0 commit comments