Le spécialiste de votre système d'information

Notre expertise

Audit de code source

Qu'est ce qu'un audit de code source ?

Un audit de code source est une analyse poussée du code source d'une application, afin de déterminer si la manière dont elle est développée répond aux standards désirés. Cet audit peut être réalisé de manière automatisée et/ou manuelle, afin de découler sur des actions correctives et un plan progrès.

Pourquoi faire un audit de code source ?

Bien souvent, on ressent le besoin de réaliser un audit de code lorsque de multiples bugs sont détectés sur l'application, et que la confiance dans la qualité de l'application n'est plus présente. La plupart du temps, c'est à cette occasion qu'on déclenche une mission d'audit de code source.

Le but de l'audit de code est donc de répondre à la question suivante : est-ce que mon application est bien développée ? Oui, mais pas seulement ! L'audit de code source peut, et doit, aller plus loin pour répondre à d'autres questions essentielles :

Comment faire un audit de code source ?

Analyser du code source peut s'avérer être un exercice très complexe et assez difficile à mettre en place. Pour faire un audit de code source, il existe deux grandes solutions :

  • L'audit "manuel" avec de vrais humains !
  • Un audit "automatisé" qui repose sur des outils d'analyse.

L'audit automatisé

Il existe de nombreux outils qui permettent d'analyser le code source des applications. Spécifiques à chaque langage de programmation, ces outils d'analyse permettent de relever des métriques en se basant sur des règles de style d'écriture de code ou de complexité.

L'avantage principal de ce type de solution est qu'elle fournit un ensemble d'indicateurs chiffrés simple à analyser. Certains de ces outils peuvent même fournir une analyse de bugs prédictive (type findbugs).

Bien que ces solutions aient clairement des avantages en pouvant notamment être intégrées très facilement dans des plateformes d'intégration continue, elles s'avèrent être incomplètes et passent souvent à côté de l'essentiel. Aucun de ces outils ne vous dira les yeux dans les yeux "oui, votre application vaut le coup d'être conservée".

L'audit manuel, l'audit humain

Chez AXOPEN, nous sommes plus que convaincus que la valeur d'un audit de code source est apportée par l'humain. Bien que l'audit manuel (l'audit humain) et l'audit automatisé puissent être complémentaires, c'est l'humain qui apporte le plus de valeur dans l'analyse.

L'audit de code source à la main, comment ça se passe ?

A notre sens, la solution la plus efficace est d'analyser une fonctionnalité, ou un ensemble de fonctionnalités en traversant l'intégralité de la chaîne applicative ; en partant des écrans jusqu'à la base de données. L'objectif de cette démarche est de passer en revue chaque couche applicative. Pour avoir une couverture complète, il est nécessaire de faire appel à un expert, sur chaque technologie concernée.

Il nous semble également essentiel d'écouter et de conserver le ressenti des personnes qui auditent le code comme une réelle valeur ajoutée. Car oui, ouvrir un code source n'est évident pour personne... Alors la première impression est d'autant plus importante puisqu'elle permet par exemple d'apprécier le niveau de difficulté pour une équipe de maintenance d'intégrer un nouveau développeur sur le projet.

Quelle est la composition de l'audit de code source fait par un humain ?

On s'attachera à regarder les points suivants en priorité :

  • La clarté du code source
  • L'organisation du projet
  • Les technologies utilisées (sont-elles viables ?)
  • La gestion des dépendances (y'a t-il des dépendances à risque ?)
  • Les best practices des langages
  • Les nouvelles fonctionnalités sont-elles utilisées ?
  • La complexité du code source
  • Le respect de la technologie utilisée
  • La qualité des commentaires
  • La qualité et la composition des tests
  • La performance des fonctionnalités importantes
  • La plateforme CI/CD du projet
  • ..

Cette liste n'est bien sûr pas exhaustive, mais s'apparente comme le reflet du travail que seul un humain est en mesure de réaliser. Chez AXOPEN, nous sommes des artisans du code et de la beauté de celui-ci. N'oubliez pas que si un ordinateur était capable d'attester de la qualité d'un code source, c'est qu'il serait en mesure de l'écrire ! Ce qui n'est pas prêt d'arriver entre nous :).

L'audit doit aussi se concentrer sur les points positifs du code source de l'application. Aussi, il doit mettre en lumière les forces et les faiblesses et ne doit en aucun cas chercher des coupables et des personnes à blâmer. Evidemment, une application est toujours la résultante de nombreuses années de développement, de contraintes projets, de changements d'équipes... Il faut donc garder tout cela en tête afin de pas faire un audit "à charge".

L'idée principale est toujours de dégager des axes d'analyse et de fournir des clés à la prise de décision pour le responsable de l'application.

Ainsi, chaque fois qu'un point positif ou négatif est détecté, il est rapporté dans l'audit de code sous la forme d'un tableau.

IdentifiantNomCommentairesAméliorationBénéficesInvestissement
#OGA01Entité ORMLes entités JPA sont bien rangés dans un répertoire domain. Chaque entité possède une description et une séquence qui lui est propre. Les champs possèdent bien des contraintes de taille.Une description fonctionnelle des champs serait un plus pour comprendre l’utilité de chaque. L’utilisation de serialVersionUID en dur ne semble pas pertinente.1/51/5
Exemple identification des points notables d'un audit de code.

La conclusion d'un audit de code source

Il est important d'avoir une vision la plus complète possible et objective des choses. En effet, c'est un vrai état des lieux que nous cherchons à réaliser ici.

Une fois l'analyse du code source effectué, il est primordial de travailler à une matrice d'actions valorisées. Cette projection permet aux décideurs d'avoir des éléments visuels clairs pour se positionner sur l'avenir de l'application et son code source. Puis, une matrice priorité/bénéfice VS coût/investissement est souvent une manière efficace de présenter les choses.

Matrice audit de code source

L'audit doit fournir les clés d'une remise à niveau du code source. Pour chacun des points analysés, le coût de l'investissement est important car il permet de mesurer l'effort d'un retour à l'état de l'art.

Maitrise du code source : une démarche continue !

Réaliser un audit est une très bonne manière de répondre aux questions qui se posent concernant la qualité de son application. Bien qu'efficace, il est souvent plus intéressant de mettre en place une démarche préventive de qualité de code, avec des audits plus légers mais plus réguliers. Un audit avant la mise en production d'une application parait aussi un plus non négligeable.

Audit de code source à Lyon

Chez AXOPEN, nous pouvons réaliser des audits de codes sources d'applications web :

  • Audit de code Java
  • Audit de code PHP
  • Code review C#, .NET
  • Audit de code Angular, React, Javascript

Nous pouvons également réaliser un audit de code source d'application mobile :

  • Audit de code Swift / iOS
  • Audit de code Kotlin / Android
  • Code review IONIC / Crossplatform

Par ailleurs, si vous ne pouvez pas réaliser les préconisations de l'audit avec vos équipes en interne, nous vous proposons de vous accompagner dans la réalisation des correctifs de l'application, et dans une démarche d'amélioration continue pour la maitrise du code source à moyen/long terme.

logo clauger

Audit de performance de l’architecture applicative

Réalisation d'un audit de performance de l'architecture applicative afin d'améliorer la qualité et les performances d'une application .NET

Vous avez un projet ?