Découvrez comment la solution Parasoft Continuous Quality permet de contrôler et de gérer les environnements de test pour fournir des logiciels de haute qualité en toute confiance. Inscrivez-vous pour la démo >>

BLOG

Comment choisir les outils d'analyse statique modernes: au-delà du Bake-Off

Comment choisir les outils d'analyse statique modernes: au-delà du Bake-Off Temps de lecture : 6 minutes

À partir d'un niveau de 50,000 XNUMX pieds, la plupart outils d'analyse de code statique semble pareil. Ils analysent le code sans l'exécuter et trouvent des défauts, des vulnérabilités et d'autres problèmes.

Tous les outils génèrent des avertissements et des rapports. Ils s'intègrent généralement dans les IDE et les systèmes CI / CD / build. Si vous souhaitez intégrer avec succès un outil de codage dans votre développement quotidien et obtenir le meilleur retour sur investissement, il est avantageux d'évaluer pleinement vos options.

Au-delà du Bake-Off de l'outil d'analyse statique

Lorsqu'ils essaient de déterminer quel outil d'analyse statique fonctionnera le mieux, de nombreux évaluateurs adoptent une approche commune pour sélectionner un outil pour leur groupe ou organisation. Ils exécutent chaque outil sur le même code, comparent les résultats, puis choisissent l'outil qui signale le plus de violations prêt à l'emploi.

Ce n'est pas vraiment une évaluation de produit. C'est un bake-off. Et le gagnant n'est pas nécessairement le meilleur outil pour établir un processus d'analyse statique durable et évolutif au sein de l'équipe ou de l'organisation.

En fait, de nombreux facteurs clés qui font la différence entre une adoption réussie de l'analyse statique et une autre initiative qui a échoué sont souvent négligés lors de ces préparations.

Évaluez vos besoins en analyse de code statique et votre statut actuel

Avant de commencer la recherche d'un outil, jetez un regard brutalement honnête sur votre organisation. Évaluez ce qui suit:

Ce dont votre organisation a besoin. Pour réussir avec l'analyse statique, il est important de comprendre ce qu'elle est censée résoudre.

  • Quels problèmes spécifiques sont traités avec l'analyse statique?
  • L'organisation a-t-elle des exigences de conformité réglementaire?
  • La sécurité des applications est-elle un problème?
  • Qu'est-ce qui est déjà fait?
  • Qui a besoin de voir les rapports d'analyse et d'agir?

Où en est votre organisation. Il est également important de savoir ce que les nouveaux outils sont censés résoudre et s'ils s'intègrent dans votre organisation.

  • Votre processus de développement actuel est-il suffisamment stable, reproductible et rationalisé pour fournir une base solide pour l'analyse statique?
  • Quels ont été les résultats des évaluations précédentes ou de la mise en œuvre d'outils d'analyse statique

Critères de votre processus de sélection d'outils

Le choix d'un outil d'analyse statique pour l'adoption et l'intégration éventuelle dans votre processus de développement nécessite des efforts et une planification. C'est plus qu'un examen technique. Le processus nécessite un examen de l'adéquation de l'outil avec votre organisation. Il est également important d'évaluer le fournisseur qui vend et prend en charge les outils.

Critères d'évaluation des outils

Voici les critères à considérer lors de l'évaluation technique des outils candidats:

  • Couverture des directives nécessaires
  • Qualité des contrôleurs intégrés pour les directives nécessaires
  • Couverture pour l'industrie et les normes d'entreprise
  • Profondeur et étendue de l'analyse
  • Moyens pratiques pour réduire le bruit (violations des contrôleurs ignorables)
  • Nombre raisonnable et approche des faux positifs
  • Le nombre acceptable de faux négatifs
  • Facilité d'ajustement des vérificateurs intégrés en fonction des politiques de votre organisation
  • Facilité d'ajout de nouveaux contrôleurs personnalisés pour vérifier les exigences uniques
  • Niveau de complexité pris en charge pour les nouveaux contrôleurs personnalisés

Lisez notre livre blanc pour plus de détails sur chacun:

Considérations du fournisseur

Le choix du bon fournisseur est aussi important que le choix des bons outils. Lorsqu'une organisation acquiert un outil, elle s'engage dans une relation avec le fournisseur de son choix.

Derrière les déploiements d'outils les plus réussis, il y a un fournisseur qui se consacre à aider l'organisation à atteindre ses objectifs commerciaux, à relever les défis qui surgissent et à favoriser l'adoption.

Il est important de prendre en compte plusieurs niveaux de qualification et d'évaluation des fournisseurs tout au long du processus d'évaluation. À ce stade, tenez compte des éléments suivants:

  • Les capacités du fournisseur prennent-elles en charge l'évolutivité, la croissance et la vision correspondent-elles à vos exigences et à vos objectifs?
  • Le fournisseur a-t-il une stratégie cohérente pour la déployer dans une organisation et la faire évoluer à mesure que les besoins de l'organisation changent?
  • Quelles sont les «meilleures pratiques» recommandées par le fournisseur pour utiliser son outil?

Il est également important de comprendre la réputation du fournisseur sur le marché. Répondez à ces questions:

  • Quelles organisations utilisent l'outil?
  • Que révèlent les études de cas sur son déploiement, son utilisation et ses avantages?
  • Que disent les experts de l'industrie dans les critiques, les articles et les récompenses

Qualité par rapport à la quantité: il s'agit de la couverture

Une question courante des clients potentiels est la suivante: combien de vérificateurs votre produit possède-t-il?

La question implique que la qualité d'un outil dépend du nombre d'erreurs différentes qu'il couvre. C'est une mauvaise mesure pour tout outil, en particulier les outils d'analyse statique.

Les utilisateurs d'outils d'analyse statique devraient vraiment se soucier de la capacité de chaque outil à couvrir les différents types d'erreur, les normes de codage et la profondeur de l'analyse. Un exemple courant de ceci est l'affirmation de chaque fournisseur de couverture CWE Top 25 ou OWASP Top 10 ou MISRA C / C ++ par leur outil.

Il n'est pas rare de voir des fournisseurs revendiquer une couverture à 100% des normes de codage populaires. Une affirmation souvent trompeuse. Au lieu de se préoccuper du nombre de vérificateurs ou de règles, la vraie question devrait être: dans quelle mesure un outil couvre-t-il les types de problèmes de codage qui vous préoccupent?

Un exemple: couverture MISRA C, C ++ et CERT C

Bien que les normes de codage comme MISRA aient des racines dans l'automobile, leur adoption se répand dans d'autres domaines critiques pour la sécurité. Avec SEI CERT C, il est soit requis par le marché, soit utilisé pour réduire le risque de développement de votre logiciel. Quel que soit le cas d'utilisation, ces standards sont inévitablement utilisés pour évaluer les outils d'analyse statique.

Cependant, les réclamations de couverture pour chaque norme sont sujettes à interprétation car les normes ne définissent pas précisément comment un outil réclame la couverture. Il est utile de se plonger dans des capacités particulières qui peuvent être importantes pour votre cas d'utilisation. Si votre projet nécessite MISRA C, par exemple, la capacité de chaque outil doit être examinée en détail.

Considérez l'évaluation suivante sur diverses solutions open source et commerciales sur leur couverture des normes MISRA et CERT C.

Les solutions open source affichent une faible couverture, ce qui n'est pas surprenant car leur intention n'était jamais de suivre de telles normes. Cependant, les différents outils commerciaux, qui revendiquent souvent le soutien de ces normes, ne sont pas vraiment efficaces. Le véritable critère d'évaluation qui compte ici est la couverture de la norme, et non le nombre de vérificateurs nécessaires pour soutenir la norme.

Cependant, lorsque vous utilisez une suite de tests pour mesurer la couverture par rapport à une norme, vous devez également prendre en compte la couverture de la suite de tests elle-même. L'image de couverture Juliet CWE Top 25 (2011) ci-dessous répertorie les ID courants d'énumération des faiblesses (CWE) et indique s'ils sont couverts par des tests dans les suites de tests Juliet C / C ++ et Java. Vous pouvez clairement voir que la suite de tests ne couvre pas entièrement les CWE importants (Top 25) - ceci est courant dans de nombreuses suites de tests.

Solutions Open Source

Une question évidente se pose quant à l'utilisation d'outils open source pour une solution d'analyse statique. Il y a quelques problèmes clés avec les logiciels libres à garder à l'esprit. Une évaluation doit inclure les coûts des fonctionnalités, des services et du support importants qui font défaut.

Des détails sur les coûts et les avantages des logiciels libres, en général, sont disponibles ici, y compris des questions telles que le support, l'activité et la longévité du projet, et l'évolutivité. Si les normes du secteur sont importantes et que les audits externes font partie de votre entreprise, les solutions FOSS peuvent ne pas être une option.

Questions auxquelles il faut répondre

Lors de l'évaluation des résultats de chaque projet pilote, l'évaluation et la prise de décision finale doivent se résumer à répondre aux questions clés suivantes:

L'équipe va-t-elle vraiment l'adopter et l'utiliser ? Le meilleur outil au monde n'apportera aucune valeur s'il n'est pas déployable, si les développeurs ne l'utilisent pas ou s'il perturbe trop l'avancement du projet. Décider dans quelle mesure quelque chose est adopté nécessite une évaluation complète non seulement des outils, des vérificateurs et des intégrations, mais également du fournisseur, de son assistance, de ses services et de sa formation.

S'attaquera-t-il aux problèmes que l'organisation et l'équipe essaient de résoudre? Le déploiement de nouvelles technologies nécessite de se concentrer sur les problèmes que vous essayez de résoudre, plutôt que de vous attendre à ce que l'analyse statique résout vos problèmes.

En outre, les attentes de la nouvelle technologie pour résoudre le problème doivent être réalistes. Il est important de quantifier le succès et le retour sur investissement. Il est important de déterminer à l'avance comment le succès est mesuré: temps perdu, sorties manquées ou cas de support sur le terrain.

Est-ce une solution à long terme? Les évaluations prennent du temps et nécessitent l'engagement de l'équipe. Les déploiements complets nécessitent plus de temps et d'engagement. Se contenter d'un outil «assez bon pour le moment» peut permettre d'économiser de l'argent à court terme mais s'avérer extrêmement coûteux à long terme.

Résumé

Les évaluations des outils d'analyse statique se terminent souvent comme un bake-off où chaque outil est testé sur un morceau de code commun et évalué sur les résultats. Bien que cela soit utile et que l'évaluation technique soit importante, les évaluateurs doivent regarder au-delà de ces résultats pour voir une vue d'ensemble et un calendrier plus long.

Les évaluateurs doivent examiner dans quelle mesure les outils gèrent les résultats, y compris la visualisation et la création de rapports faciles à utiliser. Les équipes doivent clairement comprendre comment chaque outil prend en charge les déclarations faites dans des domaines tels que les normes de codage, par exemple.

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

Écrit par

Arthur Hicken

Arthur est impliqué dans la sécurité logicielle et l'automatisation des tests chez Parasoft depuis plus de 25 ans, aidant à la recherche de nouvelles méthodes et techniques (dont 5 brevets) tout en aidant les clients à améliorer leurs pratiques logicielles.

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

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