Triage Priorities for Dart Analyzer

This document describes the relative priorities for bugs filed under the area-analyzer tag in GitHub as in this search. While there are always exceptions to any rule, in general try to align our priorities with these definitions.

To triage bugs, search for area-analyzer bugs that are not currently triaged and for each bug, mark priority based on how closely it matches with the below constraints.

Analyzer triage priorities

Descriptions here use terms and definitions from the end of this document. If your bug doesn't precisely match one of these, consider how impactful it is compared to examples given here and pick a priority reflecting that.

P0

  • Incorrect analysis errors or warnings, widespread
  • Uncaught exceptions resulting in tool crashes, widespread and no workaround
  • Incorrect resolution of symbols or libraries, widespread and no workaround
  • Incorrect data from analyzer API, widespread and with no workaround
  • Automation resulting in corrupted code from clean inputs, widespread
  • Performance regression, large and widespread
  • Any problem urgently blocking critical milestones for key users or Dart rolls into Flutter/Google3
  • Security or privacy problem, widespread

P1

  • Incorrect analysis errors or warnings, on edge cases but no workarounds
  • Incorrect analysis infos, widespread
  • Incorrect resolution of symbols or libraries, edge cases, or widespread but with workaround
  • Incorrect data from analyzer API, widespread but with workaround
  • Uncaught exceptions resulting in tool crashes, widespread but with workaround
  • Automation resulting in corrupted code from clean inputs, edge cases or with an easy workaround
  • Automation resulting in incorrect code, widespread
  • Performance regression, large or widespread (but not both), or impacting key users
  • An enhancement required for critical milestones for key users, or that has significant evidence gathered indicating a positive impact if implemented
  • Any problem that, while it doesn't currently block, will block rolls into Flutter/Google3 if not resolved within ~2 weeks
  • Security or privacy problem, in edge cases or with very simple workarounds

P2

  • Incorrect analysis errors or warnings, on edge cases with simple workaround
  • Incorrect analysis infos, on edge cases
  • Incorrect resolution of symbols or libraries, edge cases only with workarounds
  • Incorrect data from analyzer API, edge cases without workaround
  • Automation resulting in incorrect code, edge cases
  • Uncaught exceptions resulting in tool crashes, edge cases
  • Performance regression, large, impacting edge cases, without good workarounds
  • Security or privacy problem, theoretical & non-exploitable
  • An enhancement that the team agrees is a good idea but without strong evidence indicating positive impact

P3

  • Uncaught exceptions caught by a fuzzer, but believed to be theoretical situations only
  • Incorrect analysis errors or warnings, theoretical
  • Incorrect analysis infos, on edge cases with workaround
  • Incorrect resolution of symbols or libraries, theoretical
  • Incorrect data from analyzer API, edge case with workaround available
  • Performance regression impacting edge cases with workaround or without workaround if small
  • Automation resulting in incorrect code, theoretical or edge cases with easy workaround
  • An enhancement that someone on the team thinks might be good but it isn't (yet?) generally agreed by those working in the area that it is good

P4

  • Incorrect analysis infos, theoretical
  • Incorrect data from analyzer API, theoretical
  • Theoretical performance problems
  • An enhancement that may have some evidence that it isn‘t a good idea to implement but it isn’t clear enough to close

Terms and definitions

Terms describing impact

  • “edge cases” - Impacting only small parts of the ecosystem. For example, one package, or one key user with a workaround. Note this is an edge case from the perspective of the ecosystem vs. language definition. If it isn‘t happening much in the wild or (if there isn’t evidence either way) if it isn't believed to be super likely in the wild, it is an edge case.
  • “theoretical” - Something that we think is unlikely to happen in the wild and there's no evidence for it happening in the wild.
  • “widespread” - Impact endemic throughout the ecosystem, or at least far enough that this is impacting multiple key users.

Other terms

  • “automation” - Anything that changes the user's code automatically. Autocompletion, quick fixing, NNBD migration, etc.
  • “corrupted code” - Modification of source code in such a way that it is more than just a bit wrong or having some symbols that don't exist, but is not valid Dart and would be painful to manually correct.
  • “incorrect code” - Modification of code in a way that is known to be wrong, but would be trivial to figure out how to fix for the human using the tool.
  • “key users” - Flutter, Pub, Fuchsia, Dart, Google3, 1P
  • “tool” - Analysis Server, dartanalyzer, migration tool, analyzer-as-library