forked from OSchip/llvm-project
150 lines
5.7 KiB
ReStructuredText
150 lines
5.7 KiB
ReStructuredText
===================
|
|
LLVM Bug Life Cycle
|
|
===================
|
|
|
|
.. contents::
|
|
:local:
|
|
|
|
|
|
|
|
Introduction - Achieving consistency in how we deal with bug reports
|
|
====================================================================
|
|
|
|
We aim to achieve a basic level of consistency in how reported bugs evolve from
|
|
being reported, to being worked on, and finally getting closed out. The
|
|
consistency helps reporters, developers and others to gain a better
|
|
understanding of what a particular bug state actually means and what to expect
|
|
might happen next.
|
|
|
|
At the same time, we aim to not over-specify the life cycle of bugs in
|
|
`the LLVM Bug Tracking System <https://github.com/llvm/llvm-project/issues>`_,
|
|
as the overall goal is to make it easier to work with and understand the bug
|
|
reports.
|
|
|
|
The main parts of the life cycle documented here are:
|
|
|
|
#. `Reporting`_
|
|
#. `Triaging`_
|
|
#. `Actively working on fixing`_
|
|
#. `Closing`_
|
|
|
|
Furthermore, some of the metadata in the bug tracker, such as what labels we
|
|
use, needs to be maintained. See the following for details:
|
|
|
|
#. `Maintenance of metadata`_
|
|
|
|
|
|
.. _Reporting:
|
|
|
|
Reporting bugs
|
|
==============
|
|
|
|
See :doc:`HowToSubmitABug` on further details on how to submit good bug reports.
|
|
|
|
You can apply `labels <https://docs.github.com/en/issues/using-labels-and-milestones-to-track-work/managing-labels>`_
|
|
to the bug to provide extra information to make the bug easier to discover, such
|
|
as a label for the part of the project the bug pertains to.
|
|
|
|
.. _Triaging:
|
|
|
|
Triaging bugs
|
|
=============
|
|
|
|
Open bugs that have not been marked with the ``confirmed`` label are bugs that
|
|
still need to be triaged. When triage is complete, the ``confirmed`` label
|
|
should be added along with any other labels that help to classify the report,
|
|
unless the issue is being :ref:`closed<Closing>`.
|
|
|
|
The goal of triaging a bug is to make sure a newly reported bug ends up in a
|
|
good, actionable state. Try to answer the following questions while triaging:
|
|
|
|
* Is the reported behavior actually wrong?
|
|
|
|
* E.g. does a miscompile example depend on undefined behavior?
|
|
|
|
* Can you reproduce the bug from the details in the report?
|
|
|
|
* If not, is there a reasonable explanation why it cannot be reproduced?
|
|
|
|
* Is it related to an already reported bug?
|
|
|
|
* Are the following fields filled in correctly?
|
|
|
|
* Title
|
|
* Description
|
|
* Labels
|
|
|
|
* When able to do so, please add the appropriate labels to classify the bug,
|
|
such as the tool (``clang``, ``clang-format``, ``clang-tidy``, etc) or
|
|
component (``backend:<name>``, ``compiler-rt:<name>``, ``clang:<name>``, etc).
|
|
|
|
* If the issue is with a particular revision of the C or C++ standard, please
|
|
add the appropriate language standard label (``c++20``, ``c99``, etc).
|
|
|
|
* Please don't use both a general and a specific label. For example, bugs
|
|
labeled ``c++17`` shouldn't also have ``c++``, and bugs labeled
|
|
``clang:codegen`` shouldn't also have ``clang``.
|
|
|
|
* Add the ``good first issue`` label if you think this would be a good bug to
|
|
be fixed by someone new to LLVM. This label feeds into `the landing page
|
|
for new contributors <https://github.com/llvm/llvm-project/contribute>`_.
|
|
|
|
* If you are unsure of what a label is intended to be used for, please see the
|
|
`documentation for our labels <https://github.com/llvm/llvm-project/labels>`_.
|
|
|
|
.. _Actively working on fixing:
|
|
|
|
Actively working on fixing bugs
|
|
===============================
|
|
|
|
Please remember to assign the bug to yourself if you're actively working on
|
|
fixing it and to unassign it when you're no longer actively working on it. You
|
|
unassign a bug by removing the person from the ``Assignees`` field.
|
|
|
|
.. _Closing:
|
|
|
|
Resolving/Closing bugs
|
|
======================
|
|
|
|
Resolving bugs is good! Make sure to properly record the reason for resolving.
|
|
Examples of reasons for resolving are:
|
|
|
|
* If the issue has been resolved by a particular commit, close the issue with
|
|
a brief comment mentioning which commit(s) fixed it. If you are authoring
|
|
the fix yourself, your git commit message may include the phrase
|
|
``Fixes #<issue number>`` on a line by itself. GitHub recognizes such commit
|
|
messages and will automatically close the specified issue with a reference
|
|
to your commit.
|
|
|
|
* If the reported behavior is not a bug, it is appropriate to close the issue
|
|
with a comment explaining why you believe it is not a bug, and adding the
|
|
``invalid`` tag.
|
|
|
|
* If the bug duplicates another issue, close it as a duplicate by adding the
|
|
``duplicate`` label with a comment pointing to the issue it duplicates.
|
|
|
|
* If there is a sound reason for not fixing the issue (difficulty, ABI, open
|
|
research questions, etc), add the ``wontfix`` label and a comment explaining
|
|
why no changes are expected.
|
|
|
|
* If there is a specific and plausible reason to think that a given bug is
|
|
otherwise inapplicable or obsolete. One example is an open bug that doesn't
|
|
contain enough information to clearly understand the problem being reported
|
|
(e.g. not reproducible). It is fine to close such a bug, adding with the
|
|
``worksforme`` label and leaving a comment to encourage the reporter to
|
|
reopen the bug with more information if it's still reproducible for them.
|
|
|
|
|
|
.. _Maintenance of metadata:
|
|
|
|
Maintenance of metadata
|
|
=======================
|
|
|
|
Project member with write access to the project can create new labels, but we
|
|
discourage adding ad hoc labels because we want to control the proliferation of
|
|
labels and avoid single-use labels. If you would like a new label added, please
|
|
open an issue asking to create an issue label and add the ``infrastructure``
|
|
label to the issue. The request should include a description of what the label
|
|
is for. Alternatively, you can ask for the label to be created on the
|
|
``#infrastructure`` channel on the LLVM Discord.
|