Uploaded image for project: 'Mesos'
  1. Mesos
  2. MESOS-9630

Consider moving linter setup to pre-commit

    XMLWordPrintableJSON

    Details

    • Type: Wish
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.10.0
    • Component/s: None
    • Labels:
      None

      Description

      Mesos currently uses a mix of hand-crafted git commit hooks and mesos-style to perform linting. While this has served us well our current approach also has some drawbacks, e.g.,

      • the linter setup is spread between hooks and support/mesos-style.py
      • adding new linters can be cumbersome
      • mesos-style.py uses a process where it creates a single virtualenv to install linters in which is tie d to the source tree
      • linter dependencies are only cached to an extent and it is easy to run into a situation where one needs to update linter dependencies over the network even though one has successfully linted a revision before
      • support/mesos-style.py lacks a number of features, e.g., running over only staged files, running linters in parallel for improved throughput, running only specific linters or disabling certain linters, and the parameterization of the linters is strongly coupled to implementation of the style checker itself.

      The pre-commit tool solves most of these issues and using it in Mesos would not only allow us to get rid of tooling which is hard to maintain, but also unlock other features. It is licensed under a MIT license. We should consider moving our linting setup over to pre-commit.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                bbannier Benjamin Bannier
                Reporter:
                bbannier Benjamin Bannier
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: