Découvrez comment intégrer facilement l'analyse statique, les tests unitaires et d'autres méthodes de test de logiciels C et C++ dans votre pipeline CI/CD. Inscrivez-vous pour la démo >>

Accélération de la conformité MISRA et CERT avec des workflows de reporting dédiés

Par Miroslaw Zielinski

24 April 2019

5  min lire

L'introduction d'une norme de codage telle que MISRA ou CERT dans le flux de travail quotidien du développeur peut être fastidieuse et intrusive. Dans cet article, nous examinons comment accélérer la conformité avec l'automatisation des outils, les rapports dédiés et la gestion des flux de travail.

Au cours du développement logiciel actif, le flux de travail typique des développeurs consiste à coder (nouveau code, refactorisation ou correction de code existant), à tester les unités locales, à soumettre le code au contrôle de code source, à lancer une construction d'intégration continue (CI) et à recevoir les commentaires d'un tel build, correction des erreurs et passage à la fonction suivante à implémenter.

Dans cet article, je vais décrire comment introduire avec succès une norme de codage dans ce processus quotidien en tirant parti de l'analyse statique automatisée avec des rapports dédiés et une gestion des flux de travail. Cela vous aidera à introduire le processus de conformité aux normes de codage et tous les avantages qu'il apporte, sans sacrifier votre productivité et frustrer les développeurs.

Avec une conformité et un reporting dédiés aux normes de codage, vous serez également en mesure de vous assurer:

  • L'efficacité du processus (réduire la charge des développeurs)
  • Cohérence dans la politique (et suivi des progrès de l'équipe)
  • Aspects formels de la conformité (y compris la génération automatique de la documentation de conformité qui peut être exigée par votre entrepreneur ou l'organisme de certification)

Alors commençons! Nous allons commencer par le début, avec la configuration de test.

Définir la configuration de test

La première chose que vous ferez lors de l'adoption de l'analyse statique dans le flux de travail est de définir la configuration des vérificateurs d'analyse de code statique qui sont pertinents pour votre projet. Un chef d'équipe, un architecte ou un responsable de la sécurité fonctionnelle doit définir la configuration du test, avec une collection de vérificateurs d'analyse statique pour appliquer la norme de codage. Il peut s'agir d'un processus ponctuel ou d'une action répétitive pendant la durée de vie du projet.

Si vous n'avez pas d'obligation externe de suivre une norme de codage spécifique, nous vous recommandons tout de même de sélectionner une norme principale à suivre, telle que CERT or MISRA, et en l'étendant avec des lignes directrices supplémentaires provenant d'autres normes qui peuvent être utiles pour notre développement. Nous voyons généralement notre utilisateur qui s'appuie sur MISRA C 2012 pour inclure certaines directives CERT C dans le processus et vice versa.

Publier la configuration de test dans l'IDE

Une fois la configuration de test préparée, elle est automatiquement mise à la disposition de tous les membres de l'équipe, directement dans leurs IDE, pour une utilisation continue pendant le développement logiciel.

Ce point du flux de travail est essentiel pour accélérer le processus de conformité et tirer parti des avantages de la détection précoce des défauts et des vulnérabilités de sécurité de l'analyse statique automatisée. Les développeurs analysent leur code juste après sa création, presque instantanément. D'après nos observations, même des retards de 10 à 20 minutes dans la livraison des résultats de l'analyse de conformité sont suffisamment longs pour que les développeurs perdent leur concentration et poursuivent d'autres travaux.

Enregistrez le code pour une analyse de conformité supplémentaire

À l'étape suivante, les développeurs archivent leur code, ce qui déclenche la génération de CI, où une analyse de conformité supplémentaire est effectuée.

(Les questions se posent souvent s'il est judicieux de configurer des analyses statiques comme porte d'entrée pour l'enregistrement du code afin que l'enregistrement du code source non conforme soit rejeté. D'après notre expérience, cela ne fonctionne pas bien. Les développeurs y parviennent facilement. frustrés par les validations rejetées et le travail d'équipe peut être entravé, tandis que les morceaux de code dépendants ne sont pas intégrés à temps. Un meilleur flux de travail ne bloque pas les enregistrements de code, mais suppose plutôt que toute violation qui entre dans le référentiel source est détectée le niveau CI.)

Pendant la construction du CI, une analyse complète du référentiel source est effectuée. Pourquoi effectuer une analyse supplémentaire si le code est déjà analysé dans l'EDI? Les analyses au niveau de l'intégration fournissent un filet de sécurité qui est nécessaire car certaines directives ne sont détectables qu'au niveau du système, ou une violation est simplement négligée. En outre, une vue système complète de la source est nécessaire pour une analyse statique plus complexe (analyse de flux) pour aider à détecter les défauts et les vulnérabilités de sécurité.

La combinaison d'analyses locales dans les IDE des utilisateurs et d'analyses centrales dans le serveur CI garantit précision et efficacité.

Afficher les résultats et déterminer les actions

Lors de l'utilisation du test Parasoft C / C ++, les résultats de l'analyse CI seront ensuite publiés dans un hub centralisé de reporting et d'analyse, accessible dans un navigateur Web, qui stocke et analyse les données.

Les chefs d'équipe peuvent utiliser le portail Web pour accéder aux résultats, comprendre l'état actuel de la conformité et explorer des domaines de préoccupation spécifiques. Ils peuvent ensuite attribuer des tâches aux développeurs pour assurer le suivi des violations constatées lors de l'analyse.

Résoudre les problèmes

Les développeurs résolvent ensuite ces problèmes, analysent le code localement et valident les corrections, en lançant un autre cycle.

Générer des rapports et de la documentation

À mesure que le projet touche à sa fin et que l'équipe est proche de son objectif de conformité, des rapports de conformité sont automatiquement générés, y compris tous les documents requis par la norme de codage principale utilisée. Ces rapports dédiés, spécifiques à la norme, sont un gain de temps considérable, réduisant la quantité de travail manuel fastidieux lié à la création et à la maintenance de la documentation de conformité.

Vous trouverez ci-dessous des exemples de ce à quoi cela ressemble pour MISRA et CERT.

Rapports de conformité pour MISRA

Le test Parasoft C / C ++ fournit des rapports dédiés pour documenter la conformité à MISRA C.Un tableau de bord sur le portail Web Parasoft fournit des vues en un coup d'œil sur l'état actuel du projet, comme celui ici:

Chacun de ces widgets de tableau de bord peut être lié à une vue plus détaillée, contenant des rapports de violation détaillés, des fichiers et du code source.

À partir de là, vous pouvez créer automatiquement les rapports nécessaires pour documenter la conformité MISRA comme indiqué dans MISRA Compliance 2016: Atteindre la conformité avec les directives de codage MISRA. L'automatisation de ces rapports est un gain de temps considérable, réduisant considérablement la quantité de travail manuel nécessaire pour documenter la conformité des projets.

Rapports de conformité pour SEI CERT C

Bien que la norme SEI CERT C ne nécessite pas de rapports de conformité spécifiques, elle nécessite un projet pour documenter la conformité aux ensembles de règles (par exemple, L1, L2 et entièrement conforme.) Le test Parasoft C / C ++ comprend un tableau de bord dédié pour la conformité CERT C , qui ressemble à ceci:

Les chefs d'équipe peuvent utiliser cette vue du tableau de bord pour approfondir des domaines de préoccupation spécifiques et attribuer des tâches aux développeurs afin d'améliorer la conformité au fil du temps. La visualisation des résultats dans le contexte du cadre d'évaluation des risques utilisé par la norme de codage elle-même (par exemple, la constatation de violations spécifiques des directives de L1) rationalise considérablement le processus. L'automatisation de ces rapports réduit la quantité d'analyses que les chefs d'équipe et les architectes doivent effectuer pour atteindre la conformité CERT C.

Résumé

Pour accélérer la conformité, trois éléments sont essentiels: une gestion centralisée des politiques de conformité, de courtes boucles de rétroaction pour les développeurs travaillant avec des IDE et des analyses CI / CD pour la gestion des processus et la génération de rapports. L'automatisation via l'analyse statique est essentielle non seulement pour assurer la conformité à l'ensemble de règles, mais également pour réduire l'effort manuel de documentation et de rapport de conformité aux auditeurs et aux évaluateurs. En tirant parti des flux de travail centrés sur les développeurs et du test Parasoft C / C ++, les équipes peuvent évaluer et surveiller efficacement la conformité au quotidien, avec des outils de reporting dédiés pour aider les chefs d'équipe à gérer et à atteindre la conformité.

Test de développement unifié pour les applications C et C ++

« 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.

Par Miroslaw Zielinski

Chef de produit pour les solutions de test embarquées de Parasoft, les spécialités de Miroslaw comprennent le C / C ++, les RTOS, l'analyse de code statique, les tests unitaires, la gestion de la qualité des logiciels pour les applications critiques pour la sécurité et la conformité des logiciels aux normes de sécurité.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.