Webinaire en vedette : Tests d'API améliorés par l'IA : une approche de test sans code | Voir le séminaire
Analyse statique
De nombreuses tâches de qualité spécifiées dans la norme ISO 26262, notamment l'analyse des flux de données et de contrôle et l'analyse sémantique, sont prises en charge par des outils avancés modernes tels que Parasoft C/C++test. En outre, les outils d'analyse statique incluent des mesures et prennent en charge la révision du code par les pairs avec des fonctionnalités qui facilitent les tests unitaires et la détection des erreurs d'exécution.
Le rôle de l'analyse statique dans la vérification des logiciels selon la norme ISO 26262
Les méthodes de vérification telles que l'analyse statique offrent aux équipes un moyen pratique d'exposer, de prévenir et de corriger les erreurs dans les systèmes logiciels automobiles. La véritable puissance des outils d'analyse statique avancés vient de la capacité d'analyser le code, en fonction des normes de conformité du codage de l'industrie telles que MISRA C / C ++, CERT C/C++et AUTOSAR C ++ 14.
L'analyse signale les violations des règles et directives du code, ainsi que la complexité du code et les mesures de qualité. Ces données peuvent être contrôlées à la source à des fins d'historique et d'audit, mais il est tout aussi important d'utiliser un système de suivi et de gestion des défauts pour fournir des vues analytiques et une hiérarchisation significatives dans le but de résoudre les problèmes les plus risqués jusqu'aux plus faibles.
Visites et inspections
Méthodes informelles utilisées pour vérifier la conception et la mise en œuvre. Les outils d'analyse statique automatisent une grande partie des aspects fastidieux de l'inspection du code, tels que la conformité aux normes de codage, tout en signalant les erreurs et les éventuelles faiblesses du logiciel.
Analyse du flux de contrôle
Une technique d'analyse de code statique permettant de déterminer le flux de contrôle d'un programme. Les outils d'analyse statique avancés modernes, tels que Parasoft C/C++test, utilisent une analyse sophistiquée du contrôle et du flux de données pour détecter les défauts complexes et les vulnérabilités de sécurité.
Analyse du flux de données
Technique de collecte d'informations sur l'ensemble possible de valeurs calculées à différents moments d'un programme informatique. L'analyse des flux de données est un aspect essentiel des outils d'analyse statique avancés qui permet de détecter des erreurs complexes telles que des vulnérabilités de données corrompues.
Analyse de code statique
Le terme général est utilisé pour décrire l'analyse de code effectuée sans exécution réelle de code. Cela inclut les termes utilisés ci-dessus.
Le rôle des outils d'analyse statique dans l'appui aux principes de conception de la norme ISO 26262 pour la conception et la mise en œuvre d'unités logicielles
Les normes de codage incarnent les meilleures pratiques acquises au fil des années d'expérience et visent à renforcer le code en évitant les mauvaises pratiques qui entraînent une qualité et une sécurité inadéquates tout en promouvant les bonnes pratiques qui créent un code plus résilient. Dans le cas des normes automobiles, elles se basent sur les meilleures pratiques ainsi que sur des conseils pour prévenir les types de défaillances logicielles qui ont été observées au fil des ans.
Les normes de codage définissent généralement un sous-ensemble d'un langage de programmation considéré comme plus sûr et plus sécurisé à utiliser. L'objectif est d'éviter les comportements imprévisibles en limitant les fonctionnalités de langage risquées qui les rendent possibles.
La seule façon pratique, objective et durable de faire respecter les normes de codage est d'utiliser des outils d'analyse de code statique, capables d'analyser automatiquement d'énormes quantités de code source à la fois. Ces outils s'intègrent dans les builds de logiciels dans un pipeline CI/CD et sont disponibles directement dans l'IDE d'un développeur. Et ils fournissent des rapports indiquant la conformité du logiciel analysé à la norme sélectionnée.
Les sections suivantes couvrent les normes industrielles importantes dans l’industrie des logiciels automobiles et la manière dont l’automatisation, les outils et les processus peuvent être exploités pour faciliter la conformité.
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:2023 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 stipule : « 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 les besoins via votre équivalent défini de « malloc » et « free ». 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.
Écarts d'analyse de code statique
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 entendu, comme dans la vie réelle, il existe des exceptions à ces règles selon les types de logiciels.
Dans des situations comme celles-ci, les développeurs autorisent des dérogations. Les règles peuvent s'adapter aux circonstances et autoriser des situations particulières. Une équipe peut décider si oui ou non cette dérogation est acceptable ou non. Cela est également documenté car cela enfreint les règles d'origine.
Comment choisir un outil d'analyse de code statique
La suite d'outils de Parasoft 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 est tout aussi vrai. Il accélère le cycle de développement, réduit les taux de défauts et assure une amélioration continue. L'identification de l'outil le mieux adapté à vos besoins commence simplement par le langage de base du code source. Solutions C et C++Parasoft fournit également solutions pour les tests Java avec Jtest ainsi que tester les langages C# et VB.NET avec dotTEST.
L'analyse de code statique peut être effectuée soit dans l'IDE (Eclipse, VS Code, Visual Studio) soit à l'aide de l'interface de ligne de commande pour les pipelines d'automatisation et d'intégration continue. Les résultats de l'analyse sont accessibles immédiatement dans l'IDE et à partir des rapports générés (HTML, PDF, XML) ainsi qu'agrégés pour un post-traitement, un reporting et des analyses ultérieurs à partir du tableau de bord de reporting et d'analyse primé Parasoft DTP.
Améliorez vos tests logiciels avec les solutions Parasoft.
Explorez les chapitres
- Introduction "
- 1. Aperçu »
- 2. Analyse statique »
- 3. MISRA »
- 4. AUTOSAR C++ 14 »
- 5. SEI/CERT »
- 6. CWE »
- 7. Tests unitaires »
- 8. Tests de régression »
- 9. Tests d'intégration de logiciels »
- 10. Test du système logiciel »
- 11. Couverture du code structurel »
- 12. Matrice de traçabilité des exigences »
- 13. Qualification des outils »
- 14. Rapports et analyses »