Les outils d'audit de code
Les familles d'outils (linter, analyseur statique, profileur, analyseur de couverture, analyseur de dépendances), l'analyse statique contre l'analyse dynamique, la lecture d'un rapport et le seuil de qualité qui bloque une livraison.
- 27 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
Quelques cartes du deck
Linter : de quoi s'agit-il ?
Voir la réponse
Outil qui lit le code source sans l'exécuter pour relever les fautes de style, les constructions suspectes et les erreurs simples.
Une variable jamais utilisée, un import inutile ou un nom non conforme sont ses prises habituelles. Il est rapide et se lance à chaque sauvegarde ou à chaque commit.
Le seuil de qualité est « aucune alerte bloquante ou critique ». Combien d'alertes de ce rapport le font échouer ?
```text
SEVERITE FICHIER LIGNE REGLE
minor cart.py 12 unused-variable
blocker user.py 48 possible-none-dereference
major api.py 90 duplicated-string-literal
critical order.py 31 cognitive-complexity-too-high
info utils.py 7 commented-out-code`2135
Voir la réponse
2Seuls
blocker(user.py) etcritical(order.py) correspondent au seuil. Les alertesmajor,minoretinfosont à traiter, mais elles ne bloquent pas la livraison.L'analyse … observe le programme pendant son exécution ; l'analyse … le lit sans l'exécuter.
Voir la réponse
L'analyse dynamique observe le programme pendant son exécution ; l'analyse statique le lit sans l'exécuter.
Elles se complètent : la statique voit des chemins que personne n'a exécutés, la dynamique voit le comportement réel (temps, mémoire, données). Un profileur et un analyseur de couverture sont dynamiques.
Analyse statique : de quoi s'agit-il ?
Voir la réponse
Examen du code sans l'exécuter, qui raisonne sur tous les chemins possibles pour y chercher des défauts.
Elle couvre des chemins que les tests n'atteignent pas, mais elle ignore les données réelles : elle signale parfois des cas qui ne se produiront jamais.
L'analyseur signale « division par zéro possible » sur une ligne, mais la fonction commence par
assert diviseur != 0. Que fais-tu ?- Désactiver la règle dans tout le projet pour ne plus jamais la revoir
- Vérifier la garde, puis marquer un faux positif justifié
- Supprimer la ligne signalée
- Baisser le seuil de qualité pour que la livraison passe
Voir la réponse
Vérifier la garde, puis marquer un faux positif justifié
Désactiver la règle ferait aussi disparaître les vraies divisions par zéro des autres fonctions. Un faux positif se traite au cas par cas, et la justification permet au prochain relecteur de refaire la vérification. Attention : un
assertdisparaît quand Python est lancé avec-O.