Exemple de “poor quality code”
exemple de Toyota et son système de freinage
- ils devais suivre les normes de MISRA C (sous ensemble de C) en plus de leur propre normes
- problème du système de freinage
- analyse de la nasa, 14/37 règles non suivie → 7 134 violation, exemple de problème : pas de cas par défaut dans les bloc de
switch. - autre analyse de Barr’s Team → 80k violations de MISRA C trouvé.
- Complexity Cyclomatique de McCabe (nombre d’embranchement de if)
- 67 fonction avec une complexité > 50
- 1300 ligne pour la fonction du frein avec ? variable
- Trop de variable global (certaine constantes (4720) mais surtout 11 253 variable global) uniquement pour le système de freinage général → pas de variable local ou paramètre de fonctionnement
- bug de concurrence → lié au variable global notamment
- bug de Stack (overflow ou le stack va écrire dans le code du programme) → si problème alors l’OS reboot = délais de boot
- mauvais codage du process de chien de garde, donc tout allais bien.
Solution
- toujours pensé au futur dev qui va lire & exécuter le code
- écrire du code comme si c’étais nous qui allions maintenir ce code pour l’éternité.
le principe de qualité sans non
bien expliqué à l’oral, cf diapo