Erfahren Sie, wie die Continuous Quality Platform von Parasoft dabei hilft, Testumgebungen zu steuern und zu verwalten, um zuverlässig hochwertige Software zu liefern. Für Demo registrieren >>

BLOG

So wählen Sie moderne statische Analysewerkzeuge aus: Über das Backen hinaus

So wählen Sie moderne statische Analysewerkzeuge aus: Über das Backen hinaus Lesezeit: 6 Minuten

Ab einer Höhe von 50,000 Fuß, die meisten Statische Codeanalysetools sieht genau so aus. Sie analysieren Code, ohne ihn auszuführen, und finden Fehler, Schwachstellen und andere Probleme.

Alle Tools generieren Warnungen und Berichte. Sie lassen sich normalerweise in IDEs und CI / CD / Build-Systeme integrieren. Wenn Sie ein Codierungswerkzeug erfolgreich in Ihre tägliche Entwicklung integrieren und die höchste Rendite für Ihre Investition erzielen möchten, lohnt es sich, Ihre Optionen vollständig zu bewerten.

Jenseits des statischen Analyse-Tools Bake-Off

Bei dem Versuch, herauszufinden, welches statische Analysetool am besten funktioniert, wählen viele Bewerter einen gemeinsamen Ansatz für die Auswahl eines Tools für ihre Gruppe oder Organisation. Sie führen jedes Tool mit demselben Code aus, vergleichen die Ergebnisse und wählen dann das Tool aus, das die meisten Verstöße sofort meldet.

Dies ist nicht wirklich eine Produktbewertung. Es ist ein Back-off. Und der Gewinner ist nicht unbedingt das beste Werkzeug, um einen nachhaltigen, skalierbaren statischen Analyseprozess innerhalb des Teams oder der Organisation zu etablieren.

Tatsächlich werden viele Schlüsselfaktoren, die den Unterschied zwischen einer erfolgreichen Einführung einer statischen Analyse und einer weiteren fehlgeschlagenen Initiative ausmachen, bei diesen Back-offs häufig übersehen.

Bewerten Sie Ihre Anforderungen an die statische Code-Analyse und Ihren aktuellen Stand

Bevor Sie mit der Suche nach einem Tool beginnen, werfen Sie einen brutal ehrlichen Blick auf Ihre Organisation. Bewerten Sie Folgendes:

Was Ihre Organisation braucht. Um mit statischen Analysen erfolgreich zu sein, ist es wichtig zu verstehen, was gelöst werden soll.

  • Welche spezifischen Schmerzpunkte werden mit statischer Analyse angegangen?
  • Hat die Organisation gesetzliche Compliance-Anforderungen?
  • Ist die Anwendungssicherheit ein Problem?
  • Was wird schon gemacht?
  • Wer muss die Analyseberichte sehen und Maßnahmen ergreifen?

Wo Ihre Organisation steht. Es ist auch wichtig zu wissen, was die neuen Tools lösen sollen und ob sie zu Ihrer Organisation passen.

  • Ist Ihr aktueller Entwicklungsprozess stabil, wiederholbar und rationalisiert genug, um eine solide Grundlage für statische Analysen zu schaffen?
  • Was waren die Ergebnisse früherer Bewertungen oder Implementierungen statischer Analysewerkzeuge?

Kriterien in Ihrem Werkzeugauswahlprozess

Die Auswahl eines statischen Analysetools für die Übernahme und eventuelle Integration in Ihren Entwicklungsprozess erfordert Aufwand und Planung. Es ist mehr als eine technische Überprüfung. Der Prozess erfordert eine Prüfung, wie gut das Tool zu Ihrer Organisation passt. Es ist auch wichtig, den Anbieter zu bewerten, der die Tools verkauft und unterstützt.

Bewertungskriterien für Werkzeuge

Hier sind die Kriterien, die bei der technischen Bewertung der Kandidatenwerkzeuge zu berücksichtigen sind:

  • Abdeckung der notwendigen Richtlinien
  • Qualität der eingebauten Prüfer für die notwendigen Richtlinien
  • Abdeckung für die Industrie und Unternehmensstandards
  • Tiefe und Breite der Analyse
  • Praktische Mittel zur Lärmreduzierung (ignorierbare Verstöße gegen die Kontrolleure)
  • Angemessene Anzahl und Herangehensweise an falsch positive Ergebnisse
  • Die akzeptable Anzahl falsch negativer Ergebnisse
  • Einfache Anpassung der integrierten Prüfer an die Richtlinien Ihres Unternehmens
  • Einfaches Hinzufügen neuer benutzerdefinierter Prüfer, um eindeutige Anforderungen zu überprüfen
  • Komplexitätsgrad für neue benutzerdefinierte Prüfer unterstützt

Lesen Sie unser Whitepaper, um weitere Informationen zu den einzelnen Themen zu erhalten:

Überlegungen des Anbieters

Die Auswahl des richtigen Anbieters ist ebenso wichtig wie die Auswahl der richtigen Tools. Wenn eine Organisation ein Tool erwirbt, verpflichtet sie sich zu einer Beziehung mit dem Anbieter ihrer Wahl.

Hinter den meisten erfolgreichen Tool-Bereitstellungen steht ein Anbieter, der dem Unternehmen dabei hilft, Geschäftsziele zu erreichen, die auftretenden Herausforderungen zu bewältigen und die Akzeptanz zu fördern.

Es ist wichtig, mehrere Ebenen der Lieferantenqualifizierung und -bewertung über den gesamten Bewertungsprozess hinweg zu berücksichtigen. Beachten Sie an dieser Stelle Folgendes:

  • Stimmen die Funktionen des Anbieters für Skalierung, Wachstum und Vision mit Ihren Anforderungen und Zielen überein?
  • Verfügt der Anbieter über eine kohärente Strategie für die Bereitstellung in einem Unternehmen und für die Weiterentwicklung, wenn sich die Anforderungen des Unternehmens ändern?
  • Was sind die vom Anbieter empfohlenen „Best Practices“ für die Verwendung seines Tools?

Es ist auch wichtig, den Ruf des Anbieters auf dem Markt zu verstehen. Beantworte diese Fragen:

  • Welche Organisationen verwenden das Tool?
  • Was verraten die Fallstudien über die Bereitstellung, Verwendung und Vorteile?
  • Was sagen Branchenexperten in Rezensionen, Zuschreibungen und Auszeichnungen?

Qualität versus Quantität: Es geht um Abdeckung

Eine häufige Frage von potenziellen Kunden lautet: Wie viele Prüfer hat Ihr Produkt?

Die Frage impliziert, dass die Qualität eines Werkzeugs von der Anzahl der verschiedenen Fehler abhängt, die es abdeckt. Dies ist eine schlechte Maßnahme für jedes Werkzeug, insbesondere für statische Analysewerkzeuge.

Benutzer statischer Analysetools sollten sich wirklich Gedanken darüber machen, wie gut jedes Tool unterschiedliche Fehlertypen, Codierungsstandards und Analysetiefen abdeckt. Ein häufiges Beispiel hierfür ist der Anspruch jedes Anbieters auf CWE Top 25- oder OWASP Top 10- oder MISRA C / C ++ - Abdeckung durch sein Tool.

Es ist nicht ungewöhnlich, dass Anbieter eine 100% ige Abdeckung der gängigen Codierungsstandards behaupten. Eine Behauptung, die oft irreführend ist. Anstatt sich Gedanken über die Anzahl der Prüfer oder Regeln zu machen, sollte die eigentliche Frage lauten: Wie gut deckt ein Tool die Arten von Codierungsproblemen ab, über die Sie sich Sorgen machen?

Ein Beispiel: MISRA C-, C ++ - und CERT C-Abdeckung

Obwohl Codierungsstandards wie MISRA Wurzeln in der Automobilindustrie haben, breitet sich ihre Akzeptanz auf andere sicherheitskritische Bereiche aus. Zusammen mit SEI CERT C wird es entweder vom Markt benötigt oder verwendet, um das Risiko Ihrer Softwareentwicklung zu verringern. Unabhängig vom Anwendungsfall werden diese Standards unweigerlich zur Bewertung statischer Analysewerkzeuge verwendet.

Deckungsansprüche für jeden Standard können jedoch interpretiert werden, da die Standards nicht genau definieren, wie ein Tool Deckungsansprüche geltend macht. Es ist sinnvoll, in bestimmte Funktionen einzutauchen, die für Ihren Anwendungsfall wichtig sein können. Wenn Ihr Projekt beispielsweise MISRA C benötigt, sollten die Funktionen jedes Tools im Detail betrachtet werden.

Betrachten Sie die folgende Bewertung verschiedener Open-Source- und kommerzieller Lösungen hinsichtlich ihrer Abdeckung der MISRA- und CERT-C-Standards.

Open-Source-Lösungen weisen eine schlechte Abdeckung auf, was nicht überraschend ist, da sie niemals beabsichtigten, solchen Standards zu folgen. Die verschiedenen kommerziellen Tools, die häufig Unterstützung für diese Standards beanspruchen, liefern jedoch nicht wirklich. Das eigentliche Bewertungskriterium, das hier zählt, ist die Abdeckung des Standards - nicht die Anzahl der Prüfer, die zur Unterstützung des Standards benötigt werden.

Wenn Sie jedoch eine Testsuite verwenden, um die Abdeckung anhand eines Standards zu messen, müssen Sie auch die Abdeckung der Testsuite selbst berücksichtigen. Das folgende Abdeckungsbild von Juliet CWE Top 25 (2011) listet die allgemeinen CWE-IDs (Schwachstellenaufzählungen) auf und ob sie von Tests in den Juliet C / C ++ - und Java-Testsuiten abgedeckt werden. Sie können deutlich sehen, dass die Testsuite die wichtigen CWEs (Top 25) nicht vollständig abdeckt - dies ist in vielen Testsuiten üblich.

Open-Source-Lösungen

Es stellt sich offensichtlich die Frage nach der Verwendung von Open Source-Tools für eine statische Analyselösung. Bei FOSS sind einige wichtige Punkte zu beachten. Eine Evaluierung muss Kosten für wichtige Funktionen, Dienste und Support enthalten, die fehlen.

Details zu Kosten und Nutzen von FOSS im Allgemeinen finden Sie hier, einschließlich Themen wie Support, Projektaktivität und Langlebigkeit sowie Skalierbarkeit. Wenn Industriestandards wichtig sind und externe Audits Teil Ihres Geschäfts sind, sind FOSS-Lösungen möglicherweise keine Option.

Fragen, die beantwortet werden müssen

Bei der Bewertung der Ergebnisse jedes Pilotprojekts sollten sich die Bewertung und die endgültige Entscheidungsfindung auf die Beantwortung der folgenden Schlüsselfragen beschränken:

Wird das Team es wirklich übernehmen und nutzen? Das beste Tool der Welt liefert keinen Wert, wenn es nicht bereitstellbar ist, wenn Entwickler es nicht verwenden oder wenn es den Projektfortschritt zu stark stört. Um zu entscheiden, wie gut etwas übernommen wird, müssen nicht nur die Tools, Prüfer und Integrationen, sondern auch der Anbieter, deren Support, Services und Schulungen umfassend bewertet werden.

Wird es die Probleme angehen, die die Organisation und das Team zu lösen versuchen? Der Einsatz neuer Technologien erfordert einen Fokus darauf, welche Probleme gelöst werden sollen, anstatt nur zu erwarten, dass die statische Analyse Ihre Probleme behebt.

Darüber hinaus sollten die Erwartungen an die neue Technologie zur Lösung des Problems realistisch sein. Es ist wichtig, Erfolg und ROI zu quantifizieren. Es ist wichtig, im Voraus zu bestimmen, wie der Erfolg gemessen wird: verlorene Zeit, verpasste Veröffentlichungen oder Fälle von Support vor Ort.

Ist das eine langfristige Lösung? Auswertungen sind zeitaufwändig und erfordern Team-Engagement. Vollständige Bereitstellungen erfordern mehr Zeit und Engagement. Die Entscheidung für ein Tool, das „vorerst gut genug“ ist, kann kurzfristig Geld sparen, ist aber langfristig äußerst kostspielig.

Zusammenfassung

Auswertungen von statischen Analysewerkzeugen enden häufig als Back-Off, bei dem jedes Werkzeug anhand eines gemeinsamen Codeteils getestet und anhand der Ergebnisse bewertet wird. Obwohl dies nützlich ist und die technische Bewertung wichtig ist, müssen die Bewerter über diese Ergebnisse hinaus auf das Gesamtbild und die längere Zeitspanne schauen.

Evaluatoren müssen überlegen, wie gut Tools Ergebnisse verwalten, einschließlich benutzerfreundlicher Visualisierung und Berichterstellung. Die Teams sollten klar verstehen, wie jedes Tool Ansprüche unterstützt, die beispielsweise in Bereichen wie Codierungsstandards geltend gemacht werden.

„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.

Geschrieben von

Artur Hicken

Arthur ist seit über 25 Jahren bei Parasoft im Bereich Software-Sicherheit und Testautomatisierung tätig. Er hilft bei der Erforschung neuer Methoden und Techniken (einschließlich 5 Patente) und hilft Kunden dabei, ihre Software-Praktiken zu verbessern.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.