StackDependenciesRuff

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.

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.

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.

Usage

Fluid Attacks uses Ruff to lint and format all its Python source code.

On this page