Obtenez les dernières informations de mise à jour critique pour la vulnérabilité Log4j. Découvrez comment résoudre le problème avec les conseils de Parasoft. En savoir plus >>

X
BLOG

Intégration de l'analyse statique dans les workflows de développement modernes

Intégration de l'analyse statique dans les workflows de développement modernes Temps de lecture : 8 minutes

Attentes pour l'outil d'analyse statique moderne

L'image populaire que nous voyons fréquemment parmi nos clients est une Environnement de développement basé sur Git avec une approche dynamique du branchement et de la fusion. Les équipes s'attendent à ce que l'analyse statique s'intègre de manière transparente dans ces types de flux de travail.

Avec des bases de code volumineuses et complexes, les équipes s'attendent à ce que les outils d'analyse statique modernes:

  • S'intègre étroitement aux pratiques CI / CD.
  • Aidez-les à se concentrer sur leur travail quotidien et offrez des commentaires rapides sans longs délais.
  • Activez le filtrage des problèmes préexistants et ne présentez que les violations nouvelles et pertinentes dans la branche des fonctionnalités.
  • Permettre un partage et une gestion efficaces des suppressions / dérogations.

Avec la version 2020.2, nous avons introduit une collection d'améliorations pour Parasoft C / C ++test qui en font une solution encore meilleure pour les flux de travail modernes. Dans cet article, je vais mettre en évidence certaines des nouveautés les plus intéressantes:

  • Adaptation automatique de la portée d'analyse statique pour un retour plus rapide.
  • Se concentrer sur les problèmes pertinents augmente la productivité.
  • Un accès pratique aux résultats de l'analyse statique CI / CD permet une correction plus rapide.
  • Gestion des suppressions pour un partage facile.

Adaptation automatique de la portée de l'analyse statique pour un retour plus rapide

Les sessions d'analyse statique, en particulier sur de grandes bases de code, peuvent être longues. Ceci est problématique pour les développeurs travaillant sur de petits incréments pour la fonctionnalité ou la correction de bogues. Ils aiment avoir un retour rapide sur les fichiers les plus récents qu'ils modifient et corriger le code lorsque tout est encore frais dans leur mémoire. Ils préfèrent la vitesse d'analyse à la précision dans cette phase.

In Test Parasoft C / C ++ 2020.2, nous avons amélioré notre intégration Git. Il peut désormais adapter automatiquement la portée de l'analyse pour se concentrer uniquement sur les modifications récentes du code.

Les développeurs peuvent spécifier une branche parent / référence à comparer avec leur branche de développement actuelle. Le test Parasoft C / C ++ comparera et calculera automatiquement le delta pour l'analyse.

Infographie montrant la personne au poste de travail enregistrant le code, les scans complets, les résultats SA et les résultats de la demande
Figure 1: Comparaison entre la branche mère et la branche de développement actuelle

Au lieu d'exécuter l'analyse sur l'ensemble du projet, ce qui peut prendre beaucoup de temps, voire des heures, nous l'exécutons sur l'ensemble minimal de fichiers automatiquement sélectionnés par l'outil. Cela peut réduire considérablement la durée de la session d'analyse.

Naturellement, certains des contrôleurs, qui nécessitent une vue du projet au niveau du système, ne seront pas précis à 100%. Nous vous recommandons de combiner des exécutions rapides et limitées avec des analyses approfondies et complètes des CI / CD.

Exécuter une analyse statique sur l'ensemble minimal de fichiers

Pour activer cette fonctionnalité, les utilisateurs doivent spécifier deux options. Voir la capture d'écran ci-dessous pour un exemple de fichier «localsettings» à utiliser dans l'édition Standard du test C / C ++, en utilisant l'indicateur de ligne de commande -localsettings pour cpptestcli.

Capture d'écran du code pour la configuration de test local pour les analyses rapides
Figure 2: fichier de paramètres locaux

scope.scontrol.files.filtr.mode décide si le périmètre d'analyse doit être calculé sur la base de la comparaison des branches ou des fichiers modifiés localement. Pour comparer deux branches et concentrer l'analyse sur les fichiers modifiés uniquement, les utilisateurs doivent fournir une branche de référence à l'aide de l'option scope.scontrol.ref.branch.

Pour C / C ++ test Professional, vous pouvez utiliser le même fichier de paramètres locaux pour configurer cette fonctionnalité. Le fichier localsettings doit être ajouté à la configuration professionnelle du test C / C ++ à l'aide du menu Parasoft> Préférences> Parasoft> Paramètres avancés du test C / C ++> Fichier de paramètres.

Cette nouvelle fonctionnalité améliore la productivité des développeurs en raccourcissant la durée des sessions d'analyse et en concentrant l'analyse sur les fichiers modifiés uniquement. Mais les développeurs peuvent vouloir rendre leur analyse statique encore plus ciblée. Continuez à lire pour en savoir plus!

Se concentrer sur les problèmes pertinents augmente la productivité

Les équipes doivent souvent travailler avec des bases de code développées sans souci de conformité. Il peut s'agir d'un code hérité non conforme ou d'un prototype développé sans conformité. Essayer d'appliquer une norme de codage dans ce genre de situation peut être un véritable cauchemar.

Les équipes savent qu'un code propre est indispensable à un moment donné. Mais ce n'est pas leur objectif principal. Premièrement, ils veulent s'assurer de ne pas introduire de nouveaux problèmes et de ne pas augmenter la dette de conformité.

Le problème est qu'il faut beaucoup de temps pour faire la distinction entre les violations nouvelles et préexistantes. Même avec l'intégration Git et la portée réduite de l'analyse, dès que le développeur modifie le fichier pour ajouter un nouveau code, toutes les violations préexistantes s'afficheront dans le rapport. L'examen de ces problèmes peut prendre des heures.

Les équipes peuvent remédier à cette situation problématique en basant les résultats de l'analyse statique. La version 2020.2 du test C / C ++ fournit une option pour spécifier le rapport de référence avec l'état accepté du projet lors de l'exécution de la session d'analyse.

Le rapport de référence compare les résultats complets de la session d'analyse. Il filtre les découvertes préexistantes et ne rapporte que les nouveaux problèmes.

Infographie montrant les résultats de référence et les résultats actuels fusionnés avec de nouveaux résultats
Figure 3: Résultats de référence + Résultats actuels = Mes nouveaux résultats

Pour les développeurs, cela signifie qu'au lieu d'examiner des centaines de violations, ils peuvent se concentrer sur ces trois qui sont apparues après leurs modifications de code.

Activation de l'analyse des résultats

Pour activer l'analyse de référence des résultats, les utilisateurs doivent d'abord générer le rapport de référence.

standard Edition

Pour le test standard C / C ++, suivez les étapes ci-dessous pour générer le rapport de référence.

  1. Exécutez une analyse statique sur l'état de référence de la base de code (analyse statique régulière). Recherchez le fichier results.xml dans le dossier de rapport de votre choix.
  2. Vous pouvez stocker le rapport de référence dans SCM ou l'utiliser à partir du lecteur local.
  3. Pour voir uniquement les nouveaux résultats basés sur le code nouvellement ajouté, exécutez l'analyse sur votre branche actuelle et spécifiez les deux options supplémentaires dans votre fichier localsettings (indicateur -localsettings pour cpptestcli):
Capture d'écran du code pour utiliser le rapport de la version précédente comme référence
Figure 4: Exécuter l'analyse

Professional Edition

Pour les professionnels du test C / C ++, utilisez une option dédiée pour générer le rapport de référence.

  1. Générez le rapport de référence en exécutant une analyse statique sur l'état de référence de la base de code. Pour générer le rapport, spécifiez une option supplémentaire dans le fichier de paramètres avancés du test C / C ++: Menu Parasoft> Préférences> Parasoft> Paramètres avancés du test C / C ++> Fichier de paramètres.
Capture d'écran du code pour générer le rapport de référence
Figure 5: Générer le rapport de référence

2. Stockez le rapport de référence dans le SCM si vous le souhaitez ou utilisez-le à partir du lecteur local.

3. Pour voir uniquement les nouveaux résultats, exécutez l'analyse sur votre branche actuelle avec deux options supplémentaires dans le fichier de paramètres avancés: Menu Parasoft> Préférences> Parasoft> Paramètres avancés du test C / C ++> Fichier de paramètres.

Capture d'écran du code pour utiliser le rapport de la version précédente comme référence
Figure 6: utiliser le rapport de la version précédente comme référence

Tous les exemples du fichier de paramètres locaux avec report.xml spécifié, vous pouvez également inclure des chemins relatifs ou absolus.

Un accès pratique aux résultats d'analyse statique CI / CD permet une correction plus rapide

Lors de la discussion de l'intégration Git et de la portée réduite de l'analyse pour un retour plus rapide, j'ai mentionné précédemment que ces analyses réduites devraient être complétées par des analyses complètes et étendues dans le CI / CD.

Accès aux résultats CI / CD

Avec cette approche, une question importante se pose: comment un utilisateur active-t-il les résultats CI / CD pour les développeurs afin qu'ils puissent agir et y remédier? Il existe plusieurs façons de rendre les résultats disponibles:

La plupart des équipes préfèrent la dernière option car elles peuvent accéder aux résultats via l'interface qu'elles utilisent le plus - leur IDE!

Accéder aux résultats de l'analyse statique

Notre dernière version améliore également l'extension Visual Studio Code en permettant le téléchargement des résultats d'analyse statique à partir du DTP. Cette fonctionnalité est disponible dans nos plugins pour Eclipse et Visual Studio.

L'opération de téléchargement des résultats est simple. Les utilisateurs appellent une commande dédiée depuis la palette de commandes: «Test C / C ++: Charger les résultats à partir du DTP…».

Infographie montrant la personne au poste de travail enregistrant le code, les scans complets, les résultats SA et les résultats de la demande
Figure 7: Opération de téléchargement des résultats

L'extension demandera l'emplacement du serveur DTP suivi des informations d'identification, puis le projet DTP et le filtre.

Voila! Les résultats sont disponibles dans la vue Problèmes car ils ont été générés localement.

Les développeurs peuvent également cliquer sur le message de violation. Il les amène directement à la ligne source où un correctif est requis. C'est incroyablement productif.

Gestion des suppressions pour un partage facile

Les équipes soucieuses d'intégrer l'analyse statique comprennent que la gestion efficace des suppressions ou des dérogations est essentielle à son succès. Les utilisateurs de Parasoft peuvent stocker des informations de suppression directement dans le code source sous la forme de commentaires de code ou utiliser une base de données externe telle que Parasoft DTP ou TCM.

Le stockage des informations de suppression sous forme de commentaires de code est probablement le moyen le plus efficace de gérer ces exceptions. Mais de nombreuses équipes ne sont pas autorisées à le faire, en particulier lors de la livraison de code à un sous-traitant externe qui peut utiliser différents outils. Ou peut-être qu'il y a une politique interne qui interdit de le faire.

Nous avons introduit une nouvelle troisième façon de supprimer les violations qui ne nécessitent aucune modification du fichier de code. Cela évite de polluer les fichiers source avec des informations de suppression.

Stockage des suppressions en texte brut

Cette nouvelle méthode de suppression permet de stocker les suppressions dans un fichier texte brut. Il y a un fichier de suppression par dossier de code source. Les fichiers de suppression ont un nom standardisé: parasoft.suppress. À partir de la version 2020.2, tous Outils d'analyse statique Parasoft sont préconfigurés pour inclure les fichiers parasoft.suppress dans l'analyse. Aucune configuration supplémentaire n'est requise pour activer cette fonctionnalité.

Les utilisateurs peuvent ajouter de nouvelles entrées de suppression à parasoft.suppress en utilisant une action d'interface utilisateur dédiée ou en ajoutant ces entrées manuellement. Les interfaces utilisateur du plug-in Eclipse, du plug-in Visual Studio et de l'extension Visual Studio sont étendues pour prendre en charge le nouveau type de suppression.

L'entrée de suppression est simplement du texte brut et contient une collection d'attributs qui identifient les violations à supprimer. Consultez la capture d'écran comme un exemple d'entrée de suppression et une liste de tous les attributs pris en charge dans les entrées de suppression.

Capture d'écran montrant les lignes de code d'entrée de suppression
Figure 8: Entrée de suppression

Les développeurs peuvent utiliser des expressions régulières de base ('*', '?') Pour l'attribut de message, ce qui permet de supprimer plusieurs violations avec une seule entrée de suppression. Par exemple, lorsqu'un message contient un nom de paramètre.

Si nécessaire, une seule entrée de suppression peut supprimer plusieurs violations. Cependant, les informations sur chaque violation supprimée individuelle seront également disponibles dans les rapports générés. Et, s'il est configuré pour cela, propagé dans le serveur DTP.

Infographie et capture d'écran montrant la fusion du code
Figure 9: Fusion

Les fichiers de suppression (parasoft.suppress) sont conçus pour être stockés dans le SCM. Lorsqu'une branche est créée, les informations de suppression en font partie. L'ajout d'une nouvelle entrée au fichier de suppression la rend visible dans le processus de révision du code et le fichier passe par la chaîne d'approbation. Après la fusion du code, les fichiers de suppression font partie de cette opération, tout comme le code source. Clair et simple.

Rassemblement

Les flux de travail de développement modernes se standardisent sur la base de Git SCM et se concentrent sur le CI / CD. De grandes bases de code et une fréquence élevée de branchement nécessitent le déploiement d'outils d'analyse statique qui peuvent automatiquement se concentrer et produire des résultats pertinents pour le travail actuel du développeur.

En raison du code source open source, hérité et prototype avec lequel les projets doivent souvent travailler, les équipes doivent déterminer leur propre rythme et élaborer leurs propres plans pour se conformer aux normes de codage. La référence des résultats aide à établir une politique stricte pour le nouveau code et un plan pour résoudre les problèmes préexistants rapidement et efficacement.

Nouveautés de la version de test Parasoft C / C ++ 2020.2: Regardez le webinaire

Écrit par

Mirosław 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.