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.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. 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
    `

    • 2
    • 1
    • 3
    • 5
    Voir la réponse

    2

    Seuls blocker (user.py) et critical (order.py) correspondent au seuil. Les alertes major, minor et info sont à 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 assert disparaît quand Python est lancé avec -O.