Closed Bug 1589334 Opened 5 years ago Closed 5 years ago

Enable ESLint for all of devtools/shared/


(DevTools :: General, task, P3)



(firefox73 fixed)

Firefox 73
Tracking Status
firefox73 --- fixed


(Reporter: standard8, Assigned: marco, Mentored)



(Keywords: good-first-bug, Whiteboard: [lang=js])


(2 files, 2 obsolete files)

As part of rolling out ESLint across the tree, we should enable it for all of devtools/shared/.

To help Mozilla out with this bug, here's the steps:

  1. Comment here on the bug that you want to volunteer to help. I (or someone else) will assign it to you.
  2. Download and build the Firefox source code, see the docs for details. An artifact build is all you need.
    • If you have any problems, please ask on IRC in the #introduction channel. They're there to help you get started.
    • You can also read the Developer Guide, which has answers to most development questions.
  3. Start working on this bug
    • Please note:
      • We want to end up with two separate commits. One with the automatic changes, the second with the manual changes.
      • Although you'll change .eslintignore at the start, only the second commit should have the .eslintignore changes. Please follow the suggested commands closely.
    • Here's what to do:
      1. In .eslintignore, remove the lines that start with devtools/shared/ in the inclusions section - see this link for the exact lines.
      2. Run eslint ./mach eslint --fix devtools/shared/
        • This should fix some of the issues.
      3. Inspect the diff to make sure that the indentation of the lines surrounding the changes look ok.
      4. Create a commit of the work so far. Note the extra devtools/shared/ at the end (this avoids committing .eslintignore at this stage)
        • $ hg commit -m "Bug nnn - Enable ESLint for all of devtools/shared/ (automatic changes). r?Standard8" devtools/shared/
      5. For the remaining issues, you'll need to fix them by hand. To find them, run ./mach eslint devtools/shared/.
        • To work around mozilla/no-aArgs issues, please find the mozilla/no-aArgs section in devtools/.eslintrc.js and add to the files list the filenames where the rule is shown as failing.
          • These will be fixed in a future bug, and limiting it to just the failing instances prevents more files being added with more failures.
        • no-unused-vars: These generally fall into one of two cases:
          • const foo = bar() - if it is like this, it is generally alright to change to bar(). Although the foo is not use, the assignment side is sometimes still required for side-effects.
          • Sometimes a function is shown as unused, but is referenced in onload functions, in this case you can add a line saying /* exported bar */ which will satisfy ESLint.
        • Most of the rules should be reasonably easy to understand, but there's more information on some specific bits (especially no-undef) here and here.
      6. Test your changes, run $ ./mach mochitest devtools/shared/tests/mochitest/ devtools/shared/webconsole/ devtools/shared/qrcode/tests/mochitest/
      7. Create a second commit of the manual changes, note, there's no directory specifier this time, so .eslintignore will be included.
        • $ hg commit -m "Bug nnn - Enable ESLint for Enable ESLint for all of devtools/shared/ (manual changes). r?Standard8"
      8. Post the two commits via phabricator. Please use moz-phab to submit them.
  4. Once the patches are submitted, I'll take a look. If there's any changes necessary I'll comment in Phabricator, so be prepared to update the patches. If there's no changes, I'll request review from a devtools peer, so there may still be more to go.
  • If you do need to update the patches, please amend the existing commits, rather than creating new ones. This helps with tracking of review comments.
  1. Once we're happy with the changes, I'll push it to autoland - our integration branch. Your code will then soon be shipping to Firefox users worldwide!
  2. Now you get to think about what kind of bug you'd like to work on next. Let me know what you're interested in and I can help you find your next contribution.
Priority: -- → P3

Marco's told me that they'll take this.

Assignee: nobody → marco

Marco, I've just updated comment 1 to make it clearer as to exactly which lines to remove. You don't want to remove all the devtools/shared lines as that would enable ESLint on third-party code, which we don't want.

Blocks: 1252803
Pushed by
Enable ESLint for all of devtools/shared/ (automatic changes). r=Standard8,jdescottes
Enable ESLint for all of devtools/shared (manual changes). r=Standard8,jdescottes,nchevobbe
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 73

Depends on D57223

Comment on attachment 9115967 [details]
Bug 1589334 - Enable ESLint on the rest of devtools (automatic changes). r=Standard8

Revision D57223 was moved to bug 1252803. Setting attachment 9115967 [details] to obsolete.

Attachment #9115967 - Attachment is obsolete: true

Comment on attachment 9116043 [details]
Bug 1589334 - Enable ESLint on the rest of devtools (manual changes). r=Standard8

Revision D57265 was moved to bug 1252803. Setting attachment 9116043 [details] to obsolete.

Attachment #9116043 - Attachment is obsolete: true
You need to log in before you can comment on or make changes to this bug.