🚧 Attention, peinture fraîche !
Cette page a été traduite par une seule personne et n'a pas été relue et vérifiée par quelqu'un d'autre ! Les informations peuvent par exemple être erronées, être formulées maladroitement, ou contenir d'autres types de fautes.
Vous pouvez contribuer à l'amélioration de cette page sur sa Pull Request.
Annexe D - Des outils de développement utiles
Dans cette annexe, nous allons découvrir quelques outils de développement utiles que propose le projet Rust. Nous allons voir le formatage automatique, des moyens rapides pour corriger des avertissements, un analyseur statique, et l'intégration avec un IDE.
Le formatage automatique avec rustfmt
L'outil rustfmt
reformate votre code suivant le style de code de la
communauté. De nombreux projets collaboratifs utilisent rustfmt
pour Ă©viter
des désaccords sur le style à utiliser lorsqu'ils écrivent du code Rust : tout le
monde formate leur code en utilisant l'outil.
Pour installer rustfmt
, saisissez ceci :
$ rustup component add rustfmt
Cette commande vous offre rustfmt
et cargo-fmt
, de la même manière que Rust
vous installe rustc
et cargo
. Pour formater un projet Cargo, saisissez
ceci :
$ cargo fmt
L'exécution de cette commande reformate tout le code Rust dans la crate
courante. Cela va uniquement changer le style de code, pas sa sémantique. Pour
plus d'informations sur rustfmt
, voyez sa documentation.
Corriger votre code avec rustfix
L'outil rustfix est inclus lors de l'installation de Rust et peut automatiquement corriger certains avertissements de compilateur. Si vous avez déjà écrit du code en Rust, vous avez probablement vu des avertissements du compilateur. Par exemple, avec le code suivant :
Fichier : src/main.rs
fn fait_quelquechose() {} fn main() { for i in 0..100 { fait_quelquechose(); } }
Ici, nous appelons la fonction fait_quelquechose
100 fois, mais nous
n'utilisons jamais la variable i
dans le corps de la boucle for
. Rust nous
avertit de cela :
$ cargo build
Compiling mon_programme v0.1.0 (file:///projects/mon_programme)
warning: unused variable: `i`
-- > src/main.rs:4:9
|
4 | for i in 1..100 {
| ^ help: consider using `_i` instead
|
= note: #[warn(unused_variables)] on by default
Finished dev [unoptimized + debuginfo] target(s) in 0.50s
L'avertissement indique que nous devrions utiliser _i
comme nom à sa place :
le tiret bas indique que nous avons l'intention de ne pas utiliser cette
variable. Nous pouvons appliquer automatiquement cette suggestion en utilisant
l'outil rustfix
en lançant la commande cargo fix
 :
$ cargo fix
Checking mon_programme v0.1.0 (file:///projects/mon_programme)
Fixing src/main.rs (1 fix)
Finished dev [unoptimized + debuginfo] target(s) in 0.59s
Lorsque nous regardons Ă nouveau src/main.rs, nous pouvons constater que
cargo fix
a changé le code :
Fichier : src/main.rs
fn fait_quelquechose() {} fn main() { for _i in 0..100 { fait_quelquechose(); } }
La variable de la boucle for
s'appelle maintenant _i
, et l'avertissement ne
s'affiche plus.
Vous pouvez aussi utiliser la commande cargo fix
pour corriger votre code
entre différentes éditions de Rust. Les éditions sont abordées à l'annexe E.
Une analyse statique plus complète avec Clippy
L'outil Clippy est une collection d'analyses statiques pour analyser votre code afin que vous puissiez débusquer certaines erreurs courantes et ainsi améliorer votre code.
Pour installer Clippy, saisissez ceci :
$ rustup component add clippy
Pour lancer l'analyse statique de Clippy sur un projet Cargo, saisissez ceci :
$ cargo clippy
Par exemple, imaginons que vous écrivez un programme qui utilise une approximation d'une constante mathématique, comme pi, comme le fait ce programme :
Fichier : src/main.rs
fn main() { let x = 3.1415; let r = 8.0; println!("l'aire du cercle vaut {}", x * r * r); }
L'exécution de cargo clippy
sur ce projet va afficher cette erreur :
error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly
-- > src/main.rs:2:13
|
2 | let x = 3.1415;
| ^^^^^^
|
= note: #[deny(clippy::approx_constant)] on by default
= help: for further information visit https://rust-lang-nursery.github.io/rust-clippy/master/index.html#approx_constant
Cette erreur vous fais savoir que Rust a cette constante qui est définie plus
précisément et que votre programme serait plus pertinent si vous utilisiez à la
place la constante. Vous changeriez alors votre code pour utiliser la constante
PI
. Le code suivant ne donne pas d'erreur ou d'avertissement avec Clippy :
Fichier : src/main.rs
fn main() { let x = std::f64::consts::PI; let r = 8.0; println!("l'aire du cercle vaut {}", x * r * r); }
Pour en savoir plus Clippy, voyez sa documentation.
L'intégration aux IDE en utilisant le Rust Language Server
Pour aider l'intégration aux IDE, le projet Rust distribue le
Rust Language Server (rls
). Cet outil suit le
Language Server Protocol, qui est une spécification entre les IDE et les
langages pour communiquer entre eux. Différents clients peuvent utiliser le
rls
, comme le plug-in Rust pour Visual Studio Code.
Pour installer le rls
, saisissez ceci :
$ rustup component add rls
Installez ensuite le système du language server dans votre IDE ; vous devriez obtenir des capacités supplémentaires comme l'auto-complétion, pouvoir se rendre à la définition de l'élément, et la mise en valeur d'erreurs sur la ligne concernée.
Pour plus d'information sur rls
, rendez-vous Ă sa documentation.