Fixit 2: Meta’s auto-fixing linter for Python
engineering.fb.com
engineering.fb.com
The use of LibCST (which has a parser written in Rust) makes it easy to build lint rules in Python. Fixit allows engineers to write local lint rules in their project repo with a minimum of boilerplate, and then immediately enable them, without needing to write custom plugins or packages, and without needing to rebuild or deploy a new version of Fixit. This lowers the barriers to writing rules, and provides a quick development and feedback cycle when testing them.
Hierarchical configuration allows Fixit to fit well into larger monorepos, with each team/project able to easily control what lint rules run on their code base. Open source projects homed in those monorepos also have tools to ensure that results are the same when running on internal vs external CI systems.
Thanks again for working on this awesome project and contributing to the community!
That said, I doubt it will ever achieve performance parity with Ruff, given that it's running Python code by design. But we also believe that offering targeted lint rules with auto-fixes more than makes up for time spent running linters by reducing the number of iterations spent during development, shortening code review, etc.
Eg, if there are common mistakes in a codebase that cause frequent rejections or extra iterations in code review, custom lint rules with auto-fixes can help catch — and fix — those mistakes before developers waste hours or days waiting for avoidable rejections.
1: https://fixit.readthedocs.io/en/latest/guide.html#custom-rul...
2: https://fixit.readthedocs.io/en/latest/api.html#lint-rules
Edit: the post has been fixed now.
1: https://fixit.readthedocs.io/en/latest/guide.html#custom-rul...