Parasoft wurde im GigaOm Radar-Bericht zum automatisierten Funktionstest von APIs als Marktführer und Schnellstarter ausgezeichnet. Analystenbericht abrufen

Parasoft wurde im GigaOm Radar-Bericht zum automatisierten Funktionstest von APIs als Marktführer und Schnellstarter ausgezeichnet. Analystenbericht abrufen
Zum Abschnitt springen
Statische Analysetools helfen Entwicklern, Programmierfehler frühzeitig im SDLC zu erkennen. Parasoft verfügt über eine Reihe von Tools, die Code-Qualitätsprüfungen automatisieren können. In diesem Artikel werden die bewährten Methoden hervorgehoben, die bei der Verwendung dieser Tools anzuwenden sind.
Zum Abschnitt springen
Zum Abschnitt springen
Wie Ihnen jeder Programmierer und Qualitätssicherungstester bestätigen kann, ist die statische Analyse ein wichtiger Bestandteil des Arbeitsablaufs. So wie Impfstoffe mehrere Versuche erfordern, erfordert jedes Projekt eine Code-Qualitätsanalyse an mehreren Fronten.
Zu diesem Zweck bietet Parasoft Statische Analysewerkzeuge um den Prozess zu automatisieren. Dies erweitert auch Best Practices, um flexibler auf notwendige Änderungen und Aktualisierungen reagieren zu können. Ein grundlegendes Verständnis der statischen Analyse, ihrer Tools und Best Practices ist jedoch ein entscheidendes Grundwissen.
Informieren Sie sich hier oder machen Sie sich mit diesen Konzepten vertraut. Dieser Blog beantwortet folgende Fragen:
Einfach gesagt, statische Code-Analyse identifiziert Defekte und Fehler im Quellcode. Die Analyse kann zwar automatisiert werden, die Codeüberprüfung ist jedoch im Allgemeinen eine gemeinsame Aufgabe von Entwicklern und QA/QC-Testern.
Die statische Analyse ermöglicht jedoch eine sofortigere Behebung und ist integraler Bestandteil des Entwicklungsprozesses. Unabhängig von Branche, Funktion oder Sprache bleibt die statische Analyse ein grundlegender Bestandteil jedes Entwicklungsworkflows.
Die Durchführung einer statischen Analyse erfordert eine einfache Reihe von Schritten.
Das Beste an der statischen Analyse ist jedoch, dass sie keine Codeausführung erfordert. Alles, was Sie tun müssen, ist die Analyse durchzuführen, um Probleme zu identifizieren, die ohne unnötige Risiken behoben werden müssen.
Die allgemeine Best Practice zum Durchführen einer statischen Analyse ist vor der Codeüberprüfung und nach dem Schreiben des Codes. Das Auditieren des Quellcodes in dieser Phase reduziert Zeitverschwendung, indem Fehler schneller behoben werden.
Eine der häufigsten Arten der statischen Codeanalyse ist SAST oder statisches Testen der Anwendungssicherheit. Dies gilt auch als bewährte Methode für das Testen der Anwendungssicherheit, kann aber auch anderswo angewendet werden. Um alle Fehlerklassen zu identifizieren, müssen möglicherweise mehrere Codierungsstandards (MISRA, AUTOSAR, CERT, CWE usw.) verwendet werden.
Daher ist es am besten, sich mit verschiedenen Arten der statischen Codeanalyse und den Fehlern, die sie erkennen sollen, vertraut zu machen.
Diese Methoden gehören zu den wichtigsten, wenn es um das Testen der Codequalität geht. Ingenieure können mit einem Fehler versehentlich Abstürze oder Speicherbeschädigungen verursachen. Die musterbasierte statische Analyse findet die Ursachen dieser Probleme durch Muster im Code, die Fehler sein können.
Dies kann so einfach sein wie Syntaxprüfungen bis hin zu etwas anspruchsvolleren. Noch ein Hinweis: Diese statischen Analysetests liefern selten falsch positive Ergebnisse.
Diese Methode überprüft Code auf problematische Konstruktionen in einem Regelsatz, indem Entscheidungspfade simuliert werden. Verwenden Sie es, um Pufferüberläufe, Nullzeiger-Dereferenzierungen, verfälschte Daten und dergleichen zu finden.
Obwohl es sich um einen weniger komplexen Test handelt, hilft die Metrikanalyse, die Eigenschaften von Code zu messen. Dazu gehören Codekomplexität, Wartbarkeit, Testbarkeit und mehr.
Jede statische Analyseregel oder -richtlinie behandelt unterschiedliche Probleme. Einige Probleme, die sich auf die Zuverlässigkeit auswirken, können Ressourcenlecks für C oder Nullzeigerausnahmen in C++ sein. Die MISRA C:2012-Richtlinie 4.12 dient dazu, die Verwendung von dynamischem Speicher zu verhindern, der zu Laufzeitfehlern außerhalb des Speichers führen kann, was unerwünscht ist.
In der Richtlinie heißt es: „Die Bezeichner ‚calloc‘, ‚malloc‘, ‚realloc‘, ‚aligned_alloc‘ und ‚free‘ dürfen nicht verwendet und kein Makro mit einem dieser Namen erweitert werden.“ Daher erzeugt der folgende Code eine Verletzung.
int* p1 = (int*)malloc(10); /* Verstoß */ free(p1); /* Verstoß */
Die empfohlene Lösung besteht darin, einen Speicherblock vorab zuzuweisen und ihn nach Bedarf mit Ihrem eigenen definierten Äquivalent von „malloc“ und „free“ zu verwalten. Ähnlich in C++ besteht die übliche Lösung darin, die Operatoren „new“ und „delete“ zu überladen.
Die Absicht der Software, die Sprache und die Plattform wirken sich alle auf die Arten von Fehlern aus, die die statische Codeanalyse erkennen kann.
Bevor Sie sich mit Best Practices für die statische Codeanalyse befassen, müssen Sie einige Mythen ausräumen. Statische Analysatoren sind beispielsweise weder Einwegprodukte, noch ist die dynamische Analyse besser oder schlechter als die statische Analyse.
Aber im Allgemeinen gibt es konkrete Best Practices zusammen mit neuen Best Practices, die Entwickler anwenden sollten, wenn es um die statische Analyse der Codequalität geht.
Das Schreiben von Code unter Berücksichtigung all dieser Dinge sorgt insgesamt für weniger Fehler. Aber zusammen mit der statischen Codeanalyse vereinfacht es die Fehlererkennung und den QA/QC-Prozess weiter.
Wie bereits erwähnt, identifiziert die statische Codeanalyse Fehler basierend auf bestimmten Regelsätzen. Das heißt, wenn eine Zeile eine Regel missachtet, wird sie markiert. Natürlich gibt es, wie im wirklichen Leben, bei verschiedenen Softwaretypen einige Ausnahmen von diesen Regeln.
In solchen Situationen lassen Entwickler Abweichungen zu. Die Regeln können sich den Umständen anpassen und besondere Belange berücksichtigen. Ein Team kann mit Ja oder Nein entscheiden, ob diese Abweichung akzeptabel ist oder nicht. Dies wird auch dokumentiert, da es gegen die ursprünglichen Regeln verstößt.
Statische Analyse ist das, wonach es klingt: eine isolierte Überprüfung des Quellcodes. Die dynamische Analyse hingegen testet Code, wie er auf einer virtuellen oder sogar einer realen Maschine/Prozessor ausgeführt wird.
Stellen Sie sich die statische Analyse wie eine Bürste und die dynamische Analyse wie einen feinen Kamm vor. Sie kann subtilere Defekte identifizieren, weil sie prüft, wie Code mit anderen Systemen, Sensoren oder Peripheriegeräten interagiert.
Der große Unterschied besteht darin, dass die dynamische Analyse keine Fehler in einer gesamten Codebasis finden kann. Sie kann nur Probleme in Auszügen des ausgeführten Codes finden.
Die beste Vorgehensweise besteht darin, Verwenden Sie sowohl statische als auch dynamische Analysen Testmethoden, um den effektivsten und effizientesten Code zu erstellen.
Die automatisierten Softwaretestlösungen von Parasoft funktionieren in unterschiedlichen Arbeitsabläufen und Teamzusammensetzungen. Im Hinblick auf die statische Codeanalyse ermöglicht das richtige Tool Teams, den Entwicklungszyklus zu beschleunigen, die Fehlerquote zu senken und den Code kontinuierlich zu verbessern.
Um herauszufinden, welches Tool für Ihre Anforderungen am besten geeignet ist, beginnen Sie einfach mit der Basissprache des Quellcodes. Wir bieten C/C++-Lösungen und Unterstützung Java mit Jtest und der .NET-Sprache mit dotTEST.
Unser KI-gestützte statische Analyselösungen Beschleunigen Sie den Korrekturprozess durch die optionale Integration mit verschiedenen LLM-Anbietern wie OpenAI, Azure OpenAI und Copilot, um Codekorrekturen vorzuschlagen.
Warum sollten Sie mehr Arbeit erledigen als nötig, wenn Sie den Prozess beschleunigen und bessere Ergebnisse erzielen können?
„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.