Ruff
Last updated: Nov 4, 2026
Rationale
Fluid Attacks uses Ruff to lint and format Python source code.
With Ruff, Fluid Attacks can do these tasks:
- Lint Python files very fast with hundreds of rules from other linters, for example, pyflakes, flake8, and pylint. Ruff implements these rules again in Rust.
- Format Python files with the Black rules, for consistency.
- Cache the files that it already reviewed, for performance.
- Integrate in-editor linting and formatting with its VS Code extension for the development experience.
Alternatives
Fluid Attacks used these alternatives before, and Ruff replaced them.
Prospector
- Prospector is a meta-linter that includes other linters, for example, pylint, pycodestyle, and McCabe complexity.
- It only puts external linters in one interface.
- It supports a smaller number of rules than Ruff, and it does not support formatting.
- It is much slower than Ruff.
- It does not give formatting functions.
- It does not seem to give caching mechanisms.
- It does not have an official VS Code extension.
Fluid Attacks last reviewed Prospector on Jan 28, 2025.
Black
- Black is a Python source code formatter.
- It only formats Python code.
- It does not support linting rules, because it is only a formatter.
- Its formatting performance is similar to the performance of Ruff.
- It gives the same formatting functions as Ruff.
- It gives caching mechanisms for performance.
- It has an official VS Code extension.
Fluid Attacks last reviewed Black on Jan 28, 2025.
SonarQube
- SonarQube is a SaaS source code linter.
- It supports linting for more than one language and also other features, for example, code coverage and SCA.
- It does not seem to publish the rules that it supports for Python.
- It is much slower than Ruff and Prospector.
- It does not give formatting functions.
- It gives cache mechanisms, but Fluid Attacks found that they made the tool slower.
- It has an official VS Code extension. But Fluid Attacks found that it was very slow and that it had a bad effect on the development experience.
Fluid Attacks last reviewed SonarQube on Jan 28, 2025.
Usage
Fluid Attacks uses Ruff to lint and format all its Python source code.