Webinaire en vedette : MISRA C++ 2023 : tout ce que vous devez savoir | Voir le séminaire

Meilleures pratiques d'utilisation des outils d'analyse statique

Portrait de Ricardo Camacho, directeur de la conformité de la sûreté et de la sécurité
3 juin 2021
6 min lire

Les outils d'analyse statique aident les développeurs à détecter les défauts de codage dès le début du SDLC. Parasoft dispose d'une suite d'outils qui peuvent automatiser les contrôles de qualité du code. Cet article met en lumière les bonnes pratiques à adopter lors de l'utilisation de ces outils.

Comme vous le dira tout codeur et testeur d'assurance qualité, l'analyse statique est une partie essentielle du flux de travail. De la même manière que les vaccins nécessitent plusieurs essais, tout projet nécessite une analyse de la qualité du code sur plusieurs fronts.

À cette fin, Parasoft fournit des outils d'analyse statique pour aider à automatiser le processus. Cela augmente également les meilleures pratiques pour devenir plus agile en réponse aux changements et mises à jour nécessaires. Mais avoir une compréhension fondamentale de l'analyse statique, de son outil et des meilleures pratiques est une connaissance fondamentale essentielle.

Renseignez-vous ou familiarisez-vous à nouveau avec ces concepts ici. Ce blog répond aux questions suivantes :

  1. Qu'est-ce que l'analyse de code statique ?
  2. Comment faire une analyse statique ?
  3. Quels sont les outils de qualité de code ?
  4. Comment vérifier la qualité de mon code ?
  5. Quelles sont les meilleures pratiques d'analyse de code statique ?
  6. Pouvez-vous automatiser l'analyse de code statique ?

Image d'art vectoriel d'un ordinateur portable affichant des outils d'analyse statique

Qu'est-ce que l'analyse de code statique?

En termes simples, le processus d'analyse de code statique identifie les défauts et les erreurs dans le code source. Bien que l'analyse puisse être automatisée, la révision du code est généralement un effort conjoint de la part des développeurs et des testeurs QA/QC.

Mais l'analyse statique permet une remédiation plus immédiate et fait partie intégrante du processus de développement. Indépendamment de l'industrie, de la fonction ou de la langue, l'analyse statique reste un élément fondamental de tout workflow de développement.

Comment effectuez-vous une analyse statique ?

L'exécution d'une analyse statique nécessite un ensemble simple d'étapes.

  1. Tout d'abord, bien sûr, il faut du code source pour en tester la qualité.
  2. Ensuite, utilisez des outils d'analyse statique et exécutez un analyseur de code statique.
  3. Passez en revue les sections signalées qui ne respectent pas les règles prescrites. Cela peut inclure des faux positifs ou même des écarts attendus.
  4. Les codeurs résolvent d'abord les erreurs critiques, puis résolvent les problèmes mineurs.
  5. Passez à la phase de test.

Mais la meilleure chose à propos de l'analyse statique est qu'elle ne nécessite pas l'exécution de code. Il suffit de lancer l'analyse pour identifier les problèmes à résoudre sans risques excessifs.

Découvrez les avantages et les stratégies des tests continus pour le développement de logiciels embarqués.

Quand devons-nous mesurer la qualité du code ?

La meilleure pratique générale concernant le moment d'effectuer une analyse statique est avant la révision du code et après l'écriture du code. L'audit du code source à ce stade réduit le temps perdu en résolvant les erreurs plus rapidement.

image montrant du code sur un écran avec une partie sortant de l'écran avec un effet 3D

Différents types d'analyse de code statique

L'un des types les plus courants d'analyse de code statique est le SAST ou le test de sécurité d'application statique. Ceci est également considéré comme une bonne pratique pour les tests de sécurité des applications, mais peut être appliqué ailleurs. Afin d'identifier toutes les classes d'erreurs, plusieurs normes de codage (MISRA, AUTOSAR, CERT, CWE, etc.) peuvent être nécessaires.

En tant que tel, il est préférable de vous familiariser avec les différents types d'analyse de code statique et les erreurs qu'elles sont censées détecter.

  • PERFORMANCE: Ces tests identifient les erreurs qui réduiront les performances globales. Ils peuvent également être utilisés pour s'assurer que les développeurs restent à jour avec les meilleures pratiques actuelles.
  • SÉCURITÉ: De toute évidence, un test critique, l'analyse du code source liée à la sécurité trouve des risques de sécurité tels que la cryptographie faible, les problèmes de configuration et les erreurs d'injection de commandes spécifiques au framework.
  • FIABILITÉ: Ces tests permettent d'éviter les problèmes de fonctionnalité. Aucun développeur ne veut faire face à un message de service d'urgence qui ne répond pas à 4 heures du matin. Ce type d'analyse de code statique est particulièrement utile pour trouver des fuites de mémoire ou des problèmes de threading.
  • STYLE: Ce style d'analyse statique encourage les équipes à adopter des styles de codage uniformes pour faciliter l'utilisation, la compréhension et la correction des bogues. Cela permet également aux développeurs de ne pas perdre de temps à identifier les violations de style ; le test les trouve à la place.
Comment choisir un outil d'analyse statique moderne

Analyse statique basée sur des modèles

Ces méthodes sont parmi les plus essentielles lorsqu'il s'agit de tester la qualité du code. Les ingénieurs peuvent provoquer par inadvertance des plantages ou des corruptions de mémoire avec une erreur. L'analyse statique basée sur des modèles élimine les causes de ces problèmes par des modèles dans le code qui peuvent être des erreurs.

Cela peut être aussi simple que des vérificateurs de syntaxe ou quelque chose de plus sophistiqué. Autre remarque : ces tests d'analyse statique retournent rarement de faux positifs.

Analyse de flux

Cette méthode examine le code pour les constructions problématiques dans un ensemble de règles en simulant des chemins de décision. Utilisez-le pour rechercher les débordements de mémoire tampon, les déréférencements de pointeur nul, les données corrompues, etc.

Analyse des métriques

Bien qu'il s'agisse d'un test moins complexe, l'analyse des métriques permet de mesurer les caractéristiques du code. Cela inclut la complexité du code, la maintenabilité, la testabilité, etc.

Quelles erreurs l'analyse de code statique peut-elle détecter ?

Chaque règle ou directive d'analyse statique aborde des problèmes différents. Certains problèmes qui affectent la fiabilité peuvent être des fuites de ressources pour C ou des exceptions de pointeur null en C++. La directive MISRA C:2012 4.12 existe pour empêcher l'utilisation de la mémoire dynamique qui peut entraîner des défaillances d'exécution hors stockage, ce qui n'est pas souhaitable.

La directive indique que « les identifiants 'calloc', 'malloc', 'realloc', 'aligned_alloc' et 'free' ne doivent pas être utilisés et aucune macro portant l'un de ces noms ne doit être développée.» Par conséquent, le code suivant produira une violation.

int* p1 = (int*)malloc(10); /* Violation */ libre(p1); /* Violation */

La solution recommandée consiste à pré-allouer un bloc de mémoire et à le gérer selon vos besoins à l'aide de votre propre équivalent défini de « malloc » et « gratuit ». De même en C++, la solution courante consiste à surcharger les opérateurs « new » et « delete ».

L'intention du logiciel, le langage et la plate-forme affectent tous les types d'erreurs que l'analyse de code statique peut détecter.

Image montrant la barre de recherche indiquant « Meilleures pratiques »

Meilleures pratiques d'analyse statique

Il y a quelques mythes à dissiper avant de se lancer dans les meilleures pratiques d'analyse de code statique. Par exemple, les analyseurs statiques ne sont pas des produits à usage unique et l'analyse dynamique n'est pas meilleure ou pire que l'analyse statique.

Mais en général, il existe des bonnes pratiques concrètes ainsi que des bonnes pratiques émergentes que les développeurs devraient adopter en matière d'analyse statique pour la qualité du code.

  • Identifiez l'étendue du problème.
  • Rendez le code lisible pour les autres développeurs.
  • Écrivez du code en pensant à la réutilisabilité.
  • Gardez l'extensibilité disponible si une application a besoin de nouvelles fonctionnalités à l'avenir.
  • Développez du code qui utilise un minimum de ressources tout en s'exécutant rapidement.
  • Utiliser l'analyse dynamique et statique.

L'écriture de code avec toutes ces choses à l'esprit garantit moins d'erreurs dans l'ensemble. Mais en tandem avec l'analyse de code statique, il simplifie davantage l'identification des bogues et le processus QA/QC.

Découvrez comment intégrer facilement l'analyse statique dans votre pipeline CI/CD.

Écarts d'analyse de code statique

Comme mentionné précédemment, l'analyse de code statique identifie les erreurs en fonction d'ensembles de règles donnés. Cela signifie que, si une ligne défie une règle, elle sera signalée. Bien sûr, comme dans la vraie vie, il existe quelques exceptions à ces règles pour différents types de logiciels.

Dans de telles situations, les développeurs autorisent des écarts. Les règles peuvent s'adapter aux circonstances et permettre des problèmes particuliers. Une équipe peut décider oui ou non si cet écart est acceptable ou non. Cela est également documenté car il viole les règles d'origine.

Analyse statique ou dynamique

L'analyse statique est ce que cela ressemble : un examen isolé du code source. L'analyse dynamique, quant à elle, teste le code tel qu'il est exécuté sur une machine/un processeur virtuel ou même réel.

Considérez ici l'analyse statique comme un pinceau et l'analyse dynamique comme un peigne à dents fines. Il peut identifier des défauts plus subtils car il examine comment le code interagit avec d'autres systèmes, capteurs ou périphériques.

La grande différence est que l'analyse dynamique ne peut pas trouver de failles dans une base de code entière. Il ne peut trouver des problèmes que dans des extraits de code exécuté. Une autre bonne pratique consiste à utiliser des méthodes de test d'analyse statique et dynamique pour produire le code le plus efficace et le plus efficient.

Image montrant deux codeurs regardant un moniteur avec un code à l'écran. L'un des codeurs pointe vers le moniteur, l'autre a les mains sur le clavier.

Comment choisir un outil d'analyse de code statique

La suite de Parasoft outils pour automatiser les tests logiciels fonctionne sur divers flux de travail et compositions d'équipe. En ce qui concerne l'analyse de code statique, cela sonne tout aussi vrai. Cela peut accélérer le cycle de développement, réduire les taux de défauts et fournir une amélioration continue. L'identification de l'outil qui convient le mieux à vos besoins commence simplement par la langue de base du code source.

Non seulement nous fournissons des solutions C/C++, mais Parasoft prend également en charge Java avec Jtest et le langage .NET avec dotTEST. Pourquoi rester coincé à faire plus de travail que nécessaire alors que vous pouvez accélérer le processus et obtenir de meilleurs résultats ?

Apprenez à introduire et intégrer systématiquement une solution d'analyse statique avancée dans votre projet !

« MISRA », « MISRA C » et le logo triangulaire sont des marques déposées de The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Tous droits réservés.