mirror of
https://github.com/ae-utbm/sith.git
synced 2024-12-23 16:21:22 +00:00
151 lines
4.6 KiB
Markdown
151 lines
4.6 KiB
Markdown
Le projet n'est en aucun cas lié à un
|
|
quelconque environnement de développement.
|
|
Il est possible pour chacun de travailler
|
|
avec les outils dont il a envie et d'utiliser
|
|
l'éditeur de code avec lequel il est le plus à l'aise.
|
|
|
|
Pour donner une idée, Skia a écrit une énorme
|
|
partie de projet avec l'éditeur *Vim* sur du GNU/Linux
|
|
alors que Sli a utilisé *Sublime Text* sur MacOS
|
|
et que Maréchal travaille avec PyCharm
|
|
sur ~~Windows muni de WSL~~ Arch Linux btw.
|
|
|
|
## Configurer les pre-commit hooks
|
|
|
|
La procédure habituelle pour contribuer au
|
|
projet consiste à commit des modifications,
|
|
puis à les push sur le dépôt distant et
|
|
à ouvrir une pull request.
|
|
Cette PR va faire tourner les outils de vérification
|
|
de la qualité de code.
|
|
Si la vérification échoue, la PR est bloquée,
|
|
et il faut réparer le problème
|
|
(ce qui implique de push un micro-commit
|
|
ou de push force sur la branche).
|
|
|
|
Dans l'idéal, on aimerait donc qu'il soit
|
|
impossible d'oublier de faire tourner ces vérifications.
|
|
Pour ça, il existe un mécanisme : les pre-commits hooks.
|
|
Ce sont des actions qui tournent automatiquement
|
|
lorsque vous effectuez un `git commit`.
|
|
Ces dernières vont analyser et éventuellement modifier le code,
|
|
avant que Git n'ajoute effectivement le commit sur l'arbre git.
|
|
Voyez ça comme une micro-CI qui tourne en local.
|
|
|
|
Les git hooks sont une fonctionnalité par défaut de Git.
|
|
Cependant, leur configuration peut-être un peu
|
|
embêtante si vous le faites manuellement.
|
|
Pour gérer ça plus simplement,
|
|
nous utilisons le logiciel python [pre-commit](https://pre-commit.com/)
|
|
qui permet de contrôler leur installation via un seul fichier de configuration,
|
|
placé à la racine du projet
|
|
(plus précisément, il s'agit du fichier `.pre-commit-config.yaml`).
|
|
|
|
!!!note
|
|
|
|
Les pre-commits sont également utilisés dans la CI.
|
|
Si ces derniers fonctionnent localement, vous avez la garantie que la pipeline ne sera pas fachée. ;)
|
|
|
|
C'est une fonctionnalité de git lui-même,
|
|
mais c'est assez embêtant à gérer manuellement.
|
|
Pour gérer ça plus simplement,
|
|
nous utilisons le logiciel python [pre-commit](https://pre-commit.com/)
|
|
qui permet de contrôller leur installation via un fichier yaml.
|
|
|
|
Le logiciel est installé par défaut par poetry.
|
|
Il suffit ensuite de lancer :
|
|
|
|
```bash
|
|
pre-commit install
|
|
```
|
|
Une fois que vous avez fait cette commande, pre-commit
|
|
tournera automatiquement chaque fois que vous ferez
|
|
un nouveau commit.
|
|
|
|
Il est également possible d'appeler soi-même les pre-commits :
|
|
|
|
```bash
|
|
pre-commit run --all-files
|
|
```
|
|
|
|
|
|
## Configurer Ruff pour son éditeur
|
|
|
|
!!!note
|
|
|
|
Ruff est inclus dans les dépendances du projet.
|
|
Si vous avez réussi à terminer l'installation, vous n'avez donc pas de configuration
|
|
supplémentaire à effectuer.
|
|
|
|
Pour utiliser Ruff, placez-vous à la racine du projet et lancez la commande suivante :
|
|
|
|
```bash
|
|
ruff format # pour formatter le code
|
|
ruff check # pour linter le code
|
|
```
|
|
|
|
Ruff va alors faire son travail sur l'ensemble du projet puis vous dire
|
|
si des documents ont été reformatés (si vous avez fait `ruff format`)
|
|
ou bien s'il y a des erreurs à réparer (si vous avez faire `ruff check`).
|
|
|
|
Appeler Ruff en ligne de commandes avant de pousser votre code sur Github
|
|
est une technique qui marche très bien.
|
|
Cependant, vous risquez de souvent l'oublier.
|
|
Or, lorsque le code ne respecte pas les standards de qualité,
|
|
la pipeline bloque les PR sur les branches protégées.
|
|
|
|
Pour éviter de vous faire régulièrement avoir, vous pouvez configurer
|
|
votre éditeur pour que Ruff fasse son travail automatiquement à chaque édition d'un fichier.
|
|
Nous tenterons de vous faire ici un résumé pour deux éditeurs de textes populaires
|
|
que sont VsCode et Sublime Text.
|
|
|
|
### VsCode
|
|
|
|
Installez l'extension Ruff pour VsCode.
|
|
Ensuite, ajoutez ceci dans votre configuration :
|
|
|
|
```json
|
|
{
|
|
"[python]": {
|
|
"editor.formatOnSave": true,
|
|
"editor.defaultFormatter": "charliermarsh.ruff"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Sublime Text
|
|
|
|
Vous devez installer ce plugin : https://packagecontrol.io/packages/LSP-ruff.
|
|
Suivez ensuite les instructions données dans la description du plugin.
|
|
|
|
Dans la configuration de votre projet, ajoutez ceci:
|
|
|
|
```json
|
|
{
|
|
"settings": {
|
|
"lsp_format_on_save": true,
|
|
"LSP": {
|
|
"LSP-ruff": {
|
|
"enabled": true,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Si vous utilisez le plugin [anaconda](http://damnwidget.github.io/anaconda/),
|
|
pensez à modifier les paramètres du linter pep8
|
|
pour éviter de recevoir des warnings dans le formatage
|
|
de ruff comme ceci :
|
|
|
|
```json
|
|
{
|
|
"pep8_ignore": [
|
|
"E203",
|
|
"E266",
|
|
"E501",
|
|
"W503"
|
|
]
|
|
}
|
|
```
|