Simplifiez les flux de travail de conformité avec le nouveau test C/C++ 2024.2 et l'automatisation pilotée par l'IA | Inscrivez-vous
Aller à la section
Meilleures pratiques d'utilisation des outils d'analyse statique
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.
Aller à la section
Aller à la section
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 propose outils d'analyse statique pour aider à automatiser le processus. Cela renforce é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 ses outils et des meilleures pratiques constitue une connaissance fondamentale essentielle.
Renseignez-vous ou familiarisez-vous à nouveau avec ces concepts ici. Ce blog répond aux questions suivantes :
- Qu'est-ce que l'analyse de code statique ?
- Comment faire une analyse statique ?
- Quels sont les outils de qualité de code ?
- Comment vérifier la qualité de mon code ?
- Quelles sont les meilleures pratiques d'analyse de code statique ?
- Pouvez-vous automatiser l'analyse de code statique ?
Qu'est-ce que l'analyse de code statique?
En parlant simplement, 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.
- Tout d'abord, bien sûr, il faut du code source pour en tester la qualité.
- Ensuite, utilisez des outils d'analyse statique et exécutez un analyseur de code statique.
- 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.
- Les codeurs résolvent d'abord les erreurs critiques, puis résolvent les problèmes mineurs.
- 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.
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.
Différents types d'analyse de code statique
L'un des types d'analyse de code statique les plus courants est le test de sécurité statique des applications (SAST). Il 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'erreur, il peut être nécessaire d'utiliser plusieurs normes de codage (MISRA, AUTOSAR, CERT, CWE, etc.).
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é. Un test critique, l'analyse du code source lié à la sécurité, détecte les risques de sécurité tels qu'une cryptographie faible, des problèmes de configuration et des 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.
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.
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.
É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 l'analyse statique comme une brosse et l'analyse dynamique comme un peigne à dents fines. Elle peut identifier des défauts plus subtils car elle examine la façon dont 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 détecter de failles dans une base de code entière. Elle ne peut détecter des problèmes que dans des extraits de code exécuté.
La meilleure pratique consiste à utiliser à la fois l'analyse statique et dynamique méthodes de test pour produire le code le plus efficace et le plus efficient.
Comment choisir un outil d'analyse de code statique
Les solutions de tests logiciels automatisés de Parasoft fonctionnent avec des flux de travail et des compositions d'équipe variés. En ce qui concerne l'analyse de code statique, le bon outil permet aux équipes d'accélérer le cycle de développement, de réduire les taux de défauts et d'améliorer continuellement le code.
Pour identifier l'outil le mieux adapté à vos besoins, il suffit de commencer par le langage de base du code source. Nous fournissons Solutions C/C++ et soutien Java avec Jtest et la Langage .NET avec dotTEST.
Notre Solutions d'analyse statique améliorées par l'IA accélérez le processus de correction grâce à l'intégration facultative avec divers fournisseurs LLM comme OpenAI, Azure OpenAI et Copilot pour suggérer des correctifs de code.
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.