Aller au contenu

9. Audit de code et analyse de qualitĂ© logicielle đŸ‘źâ€â™€ïžâš“ïžŽ

en construction

Compétences Cyber SLAM

ActivitĂ© B3.5. CybersĂ©curisation d’une solution applicative et de son dĂ©veloppement

Compétences visées

  • Analyser et corriger les vulnĂ©rabilitĂ©s dĂ©tectĂ©es Ă  l’issue d’un audit de sĂ©curitĂ© d’une application web
  • Participer Ă  la vĂ©rification des Ă©lĂ©ments contribuant Ă  la sĂ»retĂ© d’un dĂ©veloppement informatique
  • Prendre en compte la sĂ©curitĂ© dans un projet de dĂ©veloppement d’une solution applicative
  • Mettre en Ɠuvre et vĂ©rifier la conformitĂ© d’une solution applicative et de son dĂ©veloppement Ă  un rĂ©fĂ©rentiel, une - norme ou un standard de sĂ©curitĂ©

🎯 Objectifs du chapitre

  • Comprendre ce qu’est un audit de code.
  • Expliquer la diffĂ©rence entre audit manuel et analyse automatisĂ©e.
  • Identifier les critĂšres de qualitĂ© d’un logiciel.
  • Utiliser des outils courants d’analyse statique et dynamique.
  • InterprĂ©ter les rĂ©sultats d’un outil d’audit.

1. Qu’est-ce qu’un audit de code ?⚓

📖 DĂ©finition⚓

L’audit de code est une dĂ©marche structurĂ©e consistant Ă  examiner un code source afin d’en Ă©valuer :

  • la qualitĂ© technique,
  • la maintenabilitĂ©,
  • la robustesse,
  • la sĂ©curitĂ©,
  • la conformitĂ© aux bonnes pratiques.

Contrairement au dĂ©bogage, l’audit ne vise pas uniquement Ă  corriger une erreur existante.
Il cherche à prévenir les défauts futurs et à améliorer la qualité globale du projet.

Dans un contexte professionnel, l’audit peut ĂȘtre rĂ©alisĂ© :

  • avant une mise en production,
  • avant une reprise de projet,
  • lors d’une revue de sĂ©curitĂ©,
  • dans le cadre d’un contrĂŽle qualitĂ© interne.

🧠 Audit manuel vs audit automatisĂ©âš“ïžŽ

L’audit de code repose sur deux approches complĂ©mentaires.

🔎 Audit manuel⚓

Il s’agit d’une lecture humaine du code.
Le dĂ©veloppeur ou l’auditeur vĂ©rifie :

  • la comprĂ©hension globale du projet,
  • la cohĂ©rence architecturale,
  • la sĂ©paration des responsabilitĂ©s,
  • la clartĂ© des noms de variables et de mĂ©thodes,
  • la prĂ©sence de duplication de code,
  • la gestion des erreurs.

Cette approche permet de détecter des problÚmes que les outils automatiques ne voient pas, notamment les défauts de conception.

đŸ€– Analyse automatisĂ©e⚓

Les outils d’analyse examinent le code sans l’exĂ©cuter (analyse statique) ou pendant son exĂ©cution (analyse dynamique).

Ils permettent notamment de détecter :

  • des erreurs potentielles,
  • des incohĂ©rences de typage,
  • des vulnĂ©rabilitĂ©s connues,
  • du code dupliquĂ©,
  • des Ă©carts aux standards de codage.

L’analyse automatisĂ©e est rapide, reproductible et intĂ©grable dans une chaĂźne d’intĂ©gration continue.

📝 Synthùse

L’audit manuel apporte une vision architecturale et mĂ©tier.
L’analyse automatisĂ©e apporte une vision technique et mesurable.
Les deux sont nécessaires pour garantir une qualité logicielle professionnelle.

2. Les critĂšres de qualitĂ© logicielle⚓

La qualitĂ© d’un logiciel ne se limite pas Ă  son bon fonctionnement.

Un programme peut fonctionner correctement tout en étant difficile à maintenir, peu sécurisé ou mal structuré.

On peut distinguer plusieurs critĂšres fondamentaux.

📚 LisibilitĂ©âš“ïžŽ

Un code lisible est un code compréhensible par un autre développeur.

La lisibilité repose sur :

  • un nommage explicite,
  • des mĂ©thodes courtes,
  • une indentation cohĂ©rente,
  • des commentaires utiles et non redondants.

Un code illisible augmente le risque d’erreur et la difficultĂ© de maintenance.

🏗 MaintenabilitĂ©âš“ïžŽ

La maintenabilité mesure la capacité à faire évoluer un logiciel.

Elle dépend :

  • du respect de l’architecture (ex : MVC),
  • de la sĂ©paration des responsabilitĂ©s,
  • d’un faible couplage entre les composants,
  • de l’absence de duplication.

Un projet mal structuré génÚre rapidement de la dette technique.

đŸ§Ș TestabilitĂ©âš“ïžŽ

Un code testable est un code dont les composants peuvent ĂȘtre isolĂ©s et vĂ©rifiĂ©s indĂ©pendamment.

La présence de tests unitaires permet :

  • de dĂ©tecter des rĂ©gressions,
  • de documenter le comportement attendu,
  • de sĂ©curiser les Ă©volutions.

🔐 SĂ©curitĂ©âš“ïžŽ

Un audit de code doit également vérifier :

  • la validation des entrĂ©es utilisateur,
  • la protection contre les injections,
  • la gestion des droits d’accĂšs,
  • la gestion correcte des erreurs.

📊 Synthùse

Un logiciel de qualitĂ© doit ĂȘtre :

  • lisible,
  • maintenable,
  • testable,
  • sĂ©curisĂ©.

La qualité est un ensemble cohérent, pas un critÚre isolé.

3. La dette technique⚓

La dette technique correspond aux compromis pris dans le dĂ©veloppement qui devront ĂȘtre corrigĂ©s ultĂ©rieurement.

Elle apparaĂźt lorsque :

  • le code est dupliquĂ©,
  • les tests sont absents,
  • les mĂ©thodes deviennent trop longues,
  • l’architecture n’est pas respectĂ©e.

La dette technique ralentit progressivement le projet et augmente les risques d’erreur.

Un audit permet de l’identifier et de la quantifier.

4. Outils d’analyse couramment utilisĂ©s⚓

Les entreprises s’appuient sur des outils spĂ©cialisĂ©s pour automatiser une partie de l’audit.

🔍 Analyse statique⚓

SonarQube⚓

SonarQube est une plateforme d’analyse continue qui fournit :

  • un tableau de bord qualitĂ©,
  • la dĂ©tection de bugs,
  • l’identification de vulnĂ©rabilitĂ©s,
  • l’évaluation de la dette technique,
  • la mesure de la duplication de code.

Il est souvent intégré dans une chaßne CI/CD.

PHPStan⚓

PHPStan est un outil d’analyse statique pour PHP.

Il vérifie notamment :

  • les incohĂ©rences de types,
  • les appels Ă  des mĂ©thodes inexistantes,
  • les erreurs potentielles avant exĂ©cution.

Il est particuliĂšrement utile dans les projets Laravel.

✏ Outils de linting et de formatage⚓

Laravel Pint⚓

Laravel Pint impose un style de code uniforme.

Il n’amĂ©liore pas la logique du programme, mais garantit une cohĂ©rence visuelle et structurelle du projet.

đŸ§Ș Tests automatisĂ©s⚓

PHPUnit⚓

PHPUnit permet d’écrire des tests unitaires afin de vĂ©rifier le comportement du code.

Couplé à un outil de couverture (comme Xdebug), il permet de mesurer le pourcentage de code testé.

📝 Synthùse

Les outils ne remplacent pas le développeur.
Ils assistent l’audit en dĂ©tectant automatiquement des anomalies techniques mesurables.

5. Indicateurs de qualitĂ© (KPIs)⚓

Lors d’un audit, certains indicateurs permettent d’objectiver la qualitĂ© :

  • taux de couverture des tests,
  • nombre de bugs dĂ©tectĂ©s,
  • nombre de vulnĂ©rabilitĂ©s,
  • complexitĂ© cyclomatique,
  • taux de duplication,
  • estimation de la dette technique.

Ces indicateurs facilitent la prise de décision technique.

6. Audit de code et pratique professionnelle⚓

En entreprise, l’audit de code s’intùgre dans :

  • les revues de code (pull requests),
  • l’intĂ©gration continue,
  • les audits de sĂ©curitĂ©,
  • les processus qualitĂ©.

Il s’agit d’une pratique normale et attendue dans les Ă©quipes de dĂ©veloppement modernes.

🏁 Conclusion⚓

L’audit de code est une dĂ©marche essentielle pour garantir la qualitĂ© logicielle.

Il repose sur :

  • une lecture humaine structurĂ©e,
  • des outils d’analyse automatisĂ©e,
  • des indicateurs mesurables,
  • une dĂ©marche d’amĂ©lioration continue.

Dans vos projets (comme bijoo ou todo), cette mĂ©thodologie vous permettra d’identifier les points d’amĂ©lioration et d’adopter des pratiques professionnelles alignĂ©es avec les attentes du secteur.

A suivre Activité sur bijoo et Todo