CoddyRun

Audit du programme

Un bilan de qualité de votre programme, sans l’exécuter : une note sur 100, une mention de A à E, et des recommandations classées par priorité pour savoir quoi améliorer d’abord.

5
Catégories évaluées
100
Points
A–E
Mention
Bientôt disponible : CoddyRun v4.3

L’audit du programme est un nouvel outil de CoddyRun. Il arrive dans la prochaine version, CoddyRun v4.3, et n’est pas encore présent dans la version actuelle. Cette page vous le présente à l’avance. Pour être prévenu de sa sortie, suivez les versions et les annonces.

Pourquoi auditer ?
Un programme qui marche n’est pas forcément un bon programme
L’analyse syntaxique répond à la question « qu’est-ce qui est faux, et à quelle ligne ? ». L’audit répond à une autre question : « que vaut ce programme dans son ensemble, et que faut-il améliorer en priorité ? ». Il s’applique donc aussi, et surtout, à un programme qui fonctionne.
Analyser la syntaxe

Trouve les erreurs et les avertissements, ligne par ligne, sans exécuter.

Tests unitaires

Vérifie que le programme donne les bons résultats, en l’exécutant. En savoir plus

Audit du programme

Évalue la qualité du code : structure, lisibilité, documentation, robustesse.

Lancer un audit
Un clic, et le rapport s’affiche dans la console
  1. Ouvrez votre programme dans l’éditeur. Il n’a pas besoin d’être terminé, ni même de fonctionner.
  2. Ouvrez le menu Outils, puis Audit du programme. Ou bien : palette de commandes Ctrl + K, puis tapez audit (ou qualité, note).
  3. Le rapport s’affiche dans la console, et la barre d’état résume le résultat : Audit : 89/100 · B.
  4. Cliquez sur un numéro de ligne du rapport pour aller directement à la ligne concernée dans l’éditeur.

L’audit ne lance pas le programme : pas de saisie, pas de fenêtre, et un programme avec une boucle sans fin s’audite sans risque. Il n’est pas disponible pendant qu’un programme s’exécute.

Lire le rapport
De la note globale au détail de chaque constat
Audit du programme
89/100
B
Bon niveau de qualité ; quelques points restent à consolider.
5 constats : 1 majeur · 3 mineurs · 1 information
Notes par catégorie
Conformité941 constat
Structure et complexité921 constat
Lisibilité971 constat
Documentation901 constat
Robustesse701 constat
Chiffres clés
54lignes de code
9 %de commentaires
48instructions
3définitions
11variables
6complexité max.
3imbrication max.
Constats (5)
MajeurSaisie numérique non protégéeligne 12
2 saisies dans une variable de type nombre sans bloc essayer / attraper (lignes 12 et 14) : une saisie non numérique interrompt le programme.
→ Entourer la demande d’un bloc essayer / attraper, ou saisir un texte et le vérifier avec est_nombre(...).
MineurDéfinitions non documentéesligne 30
1 définition sur 3 sans commentaire d’en-tête : calculerScore.
→ Décrire en une ligne le rôle, les paramètres et la valeur renvoyée de chaque définition.
Notions utilisées
VariablesConditions (si)Boucle tant queBoucle pourFonctionsProcéduresTableauxSaisieAffichage
Partie du rapportCe qu’elle montre
Note et mentionLa note globale sur 100, la mention de A à E, une appréciation en une phrase et le nombre de constats par gravité.
Notes par catégorieUne note sur 100 pour chacune des cinq catégories, avec une barre et le nombre de constats.
Chiffres clésLignes de code, taux de commentaires, instructions, définitions, variables, complexité et imbrication les plus fortes.
Mesures par définitionPour le programme principal et chaque fonction, procédure ou processus : lignes, paramètres, complexité, imbrication. Un clic sur le nom mène à sa ligne.
ConstatsDu plus grave au moins grave : un titre, la ligne, le détail chiffré et une recommandation (→).
Notions utiliséesLes notions du langage présentes dans le programme : conditions, boucles, fonctions, tableaux, dictionnaires, récursivité…
Deux mesures à connaître. La complexité compte les chemins possibles dans une partie du programme : chaque si, boucle, cas, et ou ou en ajoute un. Plus elle est haute, plus le code est difficile à tester. L’imbrication compte les blocs placés les uns dans les autres : un si dans une boucle dans un autre si, c’est 3 niveaux.
La note et la mention
Cinq catégories, chacune avec son poids

Chaque catégorie part de 100 points ; chaque constat en retire selon sa gravité. La note globale est la moyenne des cinq catégories, pondérée par leur poids.

CatégoriePoidsCe qui est évalué
Conformité20 %Les erreurs, avertissements et conseils de l’analyse syntaxique.
Structure et complexité25 %Longueur des définitions, complexité, imbrication, découpage, code dupliqué, variables globales.
Lisibilité20 %Longueur des lignes, noms, valeurs écrites en dur, indentation.
Documentation15 %Commentaires, en-tête du programme, définitions décrites.
Robustesse20 %Saisies numériques, divisions, erreurs ignorées.

Les mentions
A90 à 100Très bon niveau de qualité.
B75 à 89Bon niveau de qualité ; quelques points restent à consolider.
C60 à 74Qualité correcte ; des améliorations sont recommandées.
D40 à 59Qualité insuffisante sur plusieurs axes.
E0 à 39Qualité insuffisante ; des corrections prioritaires sont nécessaires.
Les gravités
CritiqueLe programme ne peut pas démarrer, ou s’arrêtera à coup sûr. À corriger en premier.
MajeurUn défaut réel ou un risque important : à traiter rapidement.
MineurUne amélioration de qualité, sans danger immédiat.
InfoUn point à connaître, qui ne pèse presque pas dans la note.
Un programme en erreur ne dépasse pas 39/100. Tant que l’analyse syntaxique trouve une erreur bloquante, la note est plafonnée à 39 (mention E), et un bandeau rappelle que les mesures sont seulement indicatives. Les erreurs se corrigent en premier.
Ce qui est vérifié
Les constats possibles, catégorie par catégorie

Chaque constat a une gravité, une ligne quand c’est possible, et une recommandation. Plusieurs constats ont deux niveaux : mineur au premier seuil, majeur quand il est largement dépassé.

Conformité
Erreurs bloquantesL’analyse syntaxique trouve au moins une erreur.Critique
Avertissements de l’analyseBoucle sans fin, code inaccessible, fonction sans valeur renvoyée…Majeur
Conseils de l’analyseVariable inutilisée ou non initialisée, définition jamais appelée…Mineur
Structure et complexité
Définition longueUne fonction, procédure ou processus de plus de 40 lignes de code (majeur au-delà de 80).Mineur
Complexité élevéePlus de 10 chemins d’exécution possibles dans une même partie du programme (majeur au-delà de 20).Mineur
Imbrication profondePlus de 4 niveaux de blocs les uns dans les autres (majeur au-delà de 6).Mineur
Paramètres nombreuxUne définition reçoit plus de 5 paramètres.Mineur
Programme non découpéPlus de 60 instructions sans aucune fonction ni procédure.Majeur
Code dupliquéAu moins 4 lignes identiques répétées à un autre endroit.Mineur
Variables globales modifiéesUne fonction ou une procédure modifie une variable du programme principal.Mineur
Lisibilité
Lignes trop longuesDes lignes de plus de 120 caractères.Info
Noms peu explicitesDes noms d’une seule lettre (sauf i, j, k, n, x, y et z, d’usage courant).Info
Valeurs littérales répétéesUn même nombre écrit au moins 4 fois (hors chiffres seuls, 10, 100 et déclarations).Info
IndentationAu moins une ligne sur cinq n’est pas décalée dans le bloc qui la contient.Mineur
Documentation
Aucun commentaireUn programme de 30 lignes de code ou plus, sans un seul commentaire.Majeur
Commentaires raresMoins de 5 % de lignes commentées.Mineur
En-tête absentUn programme de 15 lignes ou plus qui ne commence pas par un commentaire de présentation.Info
Définitions non documentéesUne définition sans commentaire juste avant, sur ou juste après sa ligne d’en-tête.Mineur
Robustesse
Saisie numérique non protégéeUne demande dans une variable de type nombre, hors d’un bloc essayer / attraper.Majeur
Diviseur non contrôléUne division ou un mod par une variable qui n’est testée nulle part avant.Mineur
Erreur interceptée puis ignoréeUn bloc attraper vide : l’erreur disparaît sans aucun traitement.Majeur
RécursivitéUne définition s’appelle elle-même : simple information, à vérifier.Info
Un exemple : avant, après
Suivre les recommandations, pas à pas
Avant
a est un nombre b est un nombre demande 'Total ?' dans a demande 'Nombre de personnes ?' dans b affiche a / b
  • Majeur Saisie numérique non protégée (lignes 3 et 4)
  • Mineur Diviseur non contrôlé : b peut valoir 0
  • Info Noms peu explicites : a, b
Après
// Partage d'une addition entre amis total est un nombre personnes est un nombre essayer demande 'Total ?' dans total demande 'Nombre de personnes ?' dans personnes si personnes > 0 alors affiche 'Chacun paie ' + decimal(total / personnes, 2) sinon affiche 'Il faut au moins une personne.' fin si attraper affiche 'Une erreur est survenue, recommencez.' fin essayer
  • ✔ Les saisies sont dans un bloc essayer
  • ✔ Le diviseur est testé avant la division
  • ✔ Des noms qui disent ce qu’ils contiennent
Questions fréquentes
Ce que l’on se demande en découvrant l’audit
Mon programme fonctionne, pourquoi n’a-t-il pas la note A ?

L’audit ne vérifie pas seulement que le programme marche : il mesure aussi s’il est facile à lire, à modifier et à faire évoluer. Un programme correct mais sans commentaire, avec des noms d’une lettre ou un seul gros bloc d’instructions peut obtenir C ou D. Suivez les recommandations, en commençant par les constats majeurs.

Pourquoi ma note ne dépasse pas 39 ?

Le programme contient des erreurs bloquantes : tant qu’il ne peut pas s’exécuter, sa note est plafonnée à 39 (mention E), et un bandeau indique que les mesures sont seulement indicatives. Corrigez d’abord les erreurs, par exemple avec Analyser la syntaxe, puis relancez l’audit.

L’audit exécute-t-il mon programme ?

Non : il lit le code sans le lancer. Il n’y a donc ni saisie à faire, ni fenêtre qui s’ouvre, et un programme avec une boucle sans fin s’audite sans problème.

Mes données partent-elles sur Internet ?

Non. L’audit est fait par l’application elle-même, sur votre ordinateur, comme l’exécution des programmes. Il fonctionne aussi sans connexion.

Comment documenter une fonction pour que l’audit la reconnaisse ?

Écrivez un commentaire sur la ligne juste avant l’en-tête fonction …, sur la même ligne, ou sur la ligne juste après. Une ligne suffit : son rôle, ses paramètres et la valeur qu’elle renvoie.

Pourquoi i, x ou n ne sont-ils pas signalés comme noms peu explicites ?

Ce sont des noms d’usage courant : i, j, k pour les compteurs de boucle, n pour un nombre, x, y, z pour des coordonnées. Les autres noms d’une lettre (a, t, s…) sont signalés.

Un petit programme d’exercice doit-il avoir un en-tête et des commentaires ?

Non : l’audit en tient compte. L’absence de commentaire n’est relevée qu’à partir de 30 lignes de code, et l’en-tête n’est demandé qu’à partir de 15 lignes.

L’audit remplace-t-il les tests unitaires ?

Non, ils se complètent. L’audit juge la qualité du code sans l’exécuter ; les tests unitaires vérifient que le programme donne les bons résultats. Un programme bien noté peut encore calculer faux, et inversement.

L’audit du programme arrive avec CoddyRun v4.3, avec les tests unitaires. D’autres réponses vous attendent dans la FAQ (rubrique « Audit du programme »). En attendant, découvrez les autres outils de l’éditeur : CoddyBlock, CoddyDraw et Construire une page web.