Code reviews checklist

This checklist is primarily aimed at reviewers, as it lists important points to check while reviewing a patch.

It can also be useful for patch authors: if the changes comply with these guidelines, then it’s more likely the review will be approved.

Bug status and patch file

  • Bug status is assigned, and assignee is correctly set.

  • Commit title and message follow the conventions.

  • Commit message says what is being changed and why.

  • Patch applies locally to current sources with no merge required.

  • Check that every new file introduced by the patch has the proper Mozilla license header: https://www.mozilla.org/en-US/MPL/headers/

Manual testing

  • Verify:

    • if it’s a new feature, the patch implements it.

    • if it’s a fix, the patch fixes the bug it addresses.

  • Report any problems you find in the global review comment.

  • Decide if any of those problems should block landing the change, or if they can be filed as follow-up bugs instead, to be fixed later.

Automated testing

  • Run new/modified tests, with and without e10s.

  • Watch out for tests that pass but log exceptions or end before protocol requests are handled.

  • Watch out for slow/long tests: suggest many small tests rather than single long tests.

  • Watch out for new tests written as integration tests instead of as unit tests: unit tests should be the preferred option, when possible.

Code review

  • Code changes:

    • Review only what was changed by the contributor.

    • Code formatting follows our ESLint rules and coding standards.

    • Code is properly commented, JSDoc is updated, new “public” methods all have JSDoc, see the comment guidelines.

    • If Promise code was added/modified, the right promise syntax is used and rejections are handled. See asynchronous code.

    • If a CSS file is added/modified, it follows the CSS guidelines.

    • If a React or Redux module is added/modified, it follows the React/Redux guidelines.

    • If DevTools server code that should run in a worker is added/modified then it shouldn’t use Services

  • Test changes:

  • User facing changes:

    • If any user-facing interfaces are added/modified, double-check the changes with the UX mockups or specs, if available. If there’s any confusion, need-info the UX designer.

    • If a user facing string has been added, it is localized and follows the localization guidelines.

    • If a user-facing string has changed meaning, the key has been updated.

    • If a new image is added, it is a SVG image or there is a reason for not using a SVG.

    • If a SVG is added/modified, it follows the SVG guidelines.

    • If a documented feature has been modified, the keyword dev-doc-needed is present on the bug.

Finalize the review

  • R+: the code should land as soon as possible.

  • R+ with comments: there are some comments, but they are minor enough, or don’t require a new review once addressed, trust the author.

  • R cancel / R- / F+: there is something wrong with the code, and a new review is required.