Les métriques de code

Les mesures statiques d'un code et leurs seuils usuels : lignes de code, complexité cyclomatique, complexité cognitive, couplage, cohésion, duplication, dette technique, et ce qu'une métrique ne dit pas.

  • 28 cartes
  • 6 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. Les chiffres
  5. Mises en situation
  6. Comprendre

Quelques cartes du deck

  • Complexité cyclomatique : de quoi s'agit-il ?

    Voir la réponse

    Nombre de chemins indépendants dans le graphe de flot de contrôle d'une fonction : le nombre de points de décision, plus un.

    Elle donne le nombre minimal de tests pour parcourir chaque chemin indépendant. McCabe recommande de ne pas dépasser 10 : au-delà, la fonction devient difficile à tester.

  • Quelle est la complexité cyclomatique de cette fonction ? Compte if, elif, for, while, and, or, puis ajoute 1.

    ```python
    def classer(notes, seuil):
    total = 0
    for n in notes:
    if n < 0 or n > 20:
    continue
    if n >= seuil:
    total += 1
    elif n >= seuil - 2 and n > 5:
    total += 0.5
    return total
    `

    • 7
    • 5
    • 6
    • 9
    Voir la réponse

    7

    Six points de décision : for, if, or, if, elif, and. Plus 1, cela fait 7. Oublier les opérateurs or et and, qui créent chacun une branche, donne 5 ; oublier le +1 donne 6.

  • Sur un graphe de flot de contrôle à E arcs et N nœuds, la complexité cyclomatique vaut ….

    Voir la réponse

    Sur un graphe de flot de contrôle à E arcs et N nœuds, la complexité cyclomatique vaut E − N + 2.

    Pour une fonction sans aucune décision, il y a N − 1 arcs et la formule donne 1 : un seul chemin. Chaque décision ajoute un arc de plus que de nœuds, donc 1 à la complexité.

  • Complexité cognitive : de quoi s'agit-il ?

    Voir la réponse

    Mesure de l'effort nécessaire pour comprendre une fonction, qui pénalise les ruptures de flot et surtout leur imbrication.

    Dix if à la suite sont faciles à lire ; dix if emboîtés ne le sont pas, et pourtant la complexité cyclomatique est la même. La cognitive les distingue.