Écrire son propre linter Rust

présenté par Guillaume Gomez

Qui suis-je ?

Reviewer et contributeur sur le langage Rust. Membre de :
  • rustdoc (team leader)
  • docs.rs
  • dev-tools
  • clippy-contributors


Je suis un ingénieur chez Huawei.
## Qu'est-ce qu'un linter ?
## Comment un linter Rust fonctionne ?
## Pourquoi a-t-il besoin d'être une extension du compilateur de Rust ?
## Limitations * Fonctionne seulement sur les crates compiléees avec la même version de rustc * L'API de rustc API n'est pas stable * Lié à une version spécifique de rustc * Difficile à wrapper dans une commande cargo
## Les "passes" de lints Early vs Late
## `rustc-tools` Fournit de l'aide pour mettre en place des lints et faciliter les intégrations dans cargo (entre autres choses...) ```toml [dependencies] rustc-tools = "0.3" ```
## Mise en place `Cargo.toml` ```toml rustc-workspace-hack = "1.0.0" ``` `rust-toolchain` ```toml [toolchain] channel = "nightly-2023-10-06" components = ["rustc-dev", "rustfmt", "llvm-tools-preview"] ```

Déclarer un lint


Implementer un lint


main.rs


## Installer notre linter ```console $ cargo install --path [project path] ```

Lancer notre linter


Lancer notre linter


## Lancer notre linter (mais en mieux) ```console $ cargo +nightly-2023-10-06 tools-inner ```

Wrapper le wrapper

## Lancer notre linter (mais en mieux mieux) ```console $ cargo install --path [project path] $ cargo tools ```

Version blog post


blog.guillaume-gomez.fr/articles/2024-01-18+Writing+your+own+Rust+linter

Merci pour votre attention !

Plus d'articles/tutoriels sur Rust à
< blog.guillaume-gomez.fr >

< guillaume1.gomez@gmail.com >

@GuillaumeGomez
@imperioworld_
@imperio@toot.cat