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

Integration der statischen Analyse in moderne Entwicklungsworkflows

Integration der statischen Analyse in moderne Entwicklungsworkflows Lesezeit: 8 Minuten

Erwartungen an das moderne statische Analysetool

Das beliebte Bild, das wir häufig bei unseren Kunden sehen, ist a Git-basierte Entwicklungsumgebung mit einem dynamischen Ansatz zum Verzweigen und Zusammenführen. Die Teams erwarten, dass sich statische Analysen nahtlos in diese Art von Workflows integrieren lassen.

Bei großen und komplexen Codebasen erwarten die Teams von modernen statischen Analysewerkzeugen Folgendes:

  • Eng in die CI / CD-Praktiken integrieren.
  • Helfen Sie ihnen, sich auf ihre tägliche Arbeit zu konzentrieren, und geben Sie schnelles Feedback ohne lange Verzögerungen.
  • Aktivieren Sie die Filterung bereits vorhandener Probleme und zeigen Sie nur neue und relevante Verstöße im Feature-Zweig an.
  • Aktivieren Sie das Teilen und Verwalten effektiver Unterdrückungen / Verzichtserklärungen.

Mit der Version 2020.2 haben wir eine Reihe von Verbesserungen für eingeführt Parasoft C / C ++ test das macht es noch besser für moderne Workflows geeignet. In diesem Beitrag werde ich einige der interessantesten Neuheiten hervorheben:

  • Automatische Anpassung des statischen Analysebereichs für eine schnellere Rückmeldung.
  • Die Konzentration auf relevante Probleme steigert die Produktivität.
  • Der bequeme Zugriff auf statische CI / CD-Analyseergebnisse ermöglicht eine schnellere Korrektur.
  • Verwalten von Unterdrückungen für einfaches Teilen.

Automatische Anpassung des statischen Analysebereichs für schnelleres Feedback

Statische Analysesitzungen, insbesondere in großen Codebasen, können langwierig sein. Dies ist problematisch für Entwickler, die an kleinen Schritten für die Funktionalität oder Fehlerbehebung arbeiten. Sie möchten schnelles Feedback zu den neuesten Dateien erhalten, die sie ändern und den Code korrigieren, wenn alles noch frisch in ihrem Speicher ist. Sie bevorzugen in dieser Phase die Analysegeschwindigkeit gegenüber der Genauigkeit.

In Parasoft C / C ++ Test 2020.2haben wir unsere Git-Integration verbessert. Der Umfang der Analyse kann jetzt automatisch angepasst werden, um sich nur auf die letzten Codeänderungen zu konzentrieren.

Entwickler können einen übergeordneten / Referenzzweig angeben, der mit ihrem aktuellen Entwicklungszweig verglichen werden soll. Der Parasoft C / C ++ - Test vergleicht und berechnet automatisch das Delta für die Analyse.

Infografik mit der Person am Arbeitsplatz, die Code eincheckt, Scans, SA-Ergebnisse und Anforderungsergebnisse abschließt
Abbildung 1: Vergleich von Elternzweigen und aktuellen Entwicklungszweigen

Anstatt die Analyse für das gesamte Projekt auszuführen, was viel Zeit oder sogar Stunden in Anspruch nehmen kann, führen wir sie mit der minimalen Anzahl von Dateien aus, die vom Tool automatisch ausgewählt werden. Dies kann die Dauer der Analysesitzung erheblich verkürzen.

Natürlich sind einige der Prüfer, die eine Ansicht des Projekts auf Systemebene erfordern, nicht 100% genau. Wir empfehlen, schnelle, eingeschränkte Läufe mit umfangreichen und vollständigen CI / CD-Scans zu kombinieren.

Führen Sie eine statische Analyse für den minimalen Satz von Dateien aus

Um diese Funktion zu aktivieren, müssen Benutzer zwei Optionen angeben. Im folgenden Screenshot finden Sie ein Beispiel für eine Datei "localettings" zur Verwendung in der C / C ++ - Test Standard Edition unter Verwendung des Befehlszeilenflags -localsettings für cpptestcli.

Screenshot des Codes für die lokale Testkonfiguration für die schnellen Scans
Abbildung 2: Localsettings-Datei

scope.scontrol.files.filtr.mode entscheidet, ob der Bereich für die Analyse basierend auf dem Zweigvergleich oder lokal geänderten Dateien berechnet werden soll. Um zwei Zweige zu vergleichen und die Analyse nur auf geänderte Dateien zu konzentrieren, müssen Benutzer mit der Option scope.scontrol.ref.branch einen Referenzzweig angeben.

Für C / C ++ Test Professional können Sie dieselbe lokale Einstellungsdatei verwenden, um diese Funktionalität zu konfigurieren. Die Datei mit den lokalen Einstellungen muss der Konfiguration des C / C ++ - Testprofis über das Menü Parasoft> Einstellungen> Parasoft> Erweiterte Einstellungen für den C / C ++ - Test> Einstellungsdatei hinzugefügt werden.

Diese neue Funktionalität verbessert die Produktivität der Entwickler, indem die Dauer der Analysesitzungen verkürzt und die Analyse nur auf geänderte Dateien konzentriert wird. Entwickler möchten ihre statische Analyse jedoch möglicherweise noch fokussierter gestalten. Lesen Sie weiter, um mehr zu erfahren!

Fokus auf relevante Probleme steigert die Produktivität

Teams müssen häufig mit Codebasen arbeiten, die ohne Berücksichtigung von Compliance entwickelt wurden. Es kann sich um nicht konformen Legacy-Code oder einen Prototyp handeln, der ohne Konformität entwickelt wurde. Der Versuch, in solchen Situationen einen Kodierungsstandard durchzusetzen, kann ein wahrer Albtraum sein.

Die Teams wissen, dass sauberer Code irgendwann ein Muss ist. Dies ist jedoch nicht ihr primäres Ziel. Erstens möchten sie sicherstellen, dass sie keine neuen Probleme einführen und die Compliance-Schulden nicht erhöhen.

Das Problem ist, dass es sehr zeitaufwändig ist, zwischen neuen und bereits bestehenden Verstößen zu unterscheiden. Selbst mit der Git-Integration und dem reduzierten Umfang der Analyse werden alle bereits vorhandenen Verstöße im Bericht angezeigt, sobald der Entwickler die Datei ändert, um neuen Code hinzuzufügen. Das Überprüfen dieser Probleme kann Stunden dauern.

Teams können diese problematische Situation beheben, indem sie die statischen Analyseergebnisse zugrunde legen. Die Version 2020.2 des C / C ++ - Tests bietet die Möglichkeit, den Referenzbericht mit dem vom Projekt akzeptierten Status anzugeben, wenn die Analysesitzung ausgeführt wird.

Der Referenzbericht vergleicht die vollständigen Ergebnisse der Analysesitzung. Es filtert bereits vorhandene Ergebnisse heraus und meldet nur die neuen Probleme.

Infografik mit Referenzergebnissen und aktuellen Ergebnissen, die zu neuen Ergebnissen zusammengeführt werden
Abbildung 3: Referenzergebnisse + Aktuelle Ergebnisse = Meine neuen Ergebnisse

Für Entwickler bedeutet dies, dass sie sich anstatt Hunderte von Verstößen zu überprüfen, auf diese drei konzentrieren können, die nach ihren Codeänderungen aufgetreten sind.

Aktivieren des Ergebnis-Baselining

Um Baselining für Ergebnisse zu aktivieren, müssen Benutzer zuerst den Referenzbericht erstellen.

Standard Edition

Führen Sie für den C / C ++ - Teststandard die folgenden Schritte aus, um den Referenzbericht zu erstellen.

  1. Führen Sie eine statische Analyse für den Referenzstatus der Codebasis durch (regulärer statischer Analyselauf). Suchen Sie die Datei results.xml im Berichtsordner Ihrer Wahl.
  2. Sie können den Referenzbericht in SCM speichern oder vom lokalen Laufwerk aus verwenden.
  3. Um nur neue Ergebnisse basierend auf neu hinzugefügtem Code anzuzeigen, führen Sie die Analyse in Ihrem aktuellen Zweig aus und geben Sie die beiden zusätzlichen Optionen in Ihrer lokalen Einstellungsdatei an (Flag -localsettings für cpptestcli):
Screenshot des Codes zur Verwendung des Berichts der vorherigen Version als Basis
Abbildung 4: Analyse ausführen

Professional Edition

Verwenden Sie für C / C ++ - Testprofis eine spezielle Option, um den Referenzbericht zu generieren.

  1. Generieren Sie den Referenzbericht, indem Sie eine statische Analyse des Referenzstatus der Codebasis ausführen. Geben Sie zum Generieren des Berichts eine zusätzliche Option in der Datei mit den erweiterten C / C ++ - Testeinstellungen an: Parasoft-Menü> Einstellungen> Parasoft> Erweiterte C / C ++ - Testeinstellungen> Einstellungsdatei.
Screenshot des Codes zum Generieren des Referenzberichts
Abbildung 5: Generieren Sie den Referenzbericht

2. Speichern Sie den Referenzbericht im SCM, wenn Sie ihn vom lokalen Laufwerk aus verwenden möchten.

3. Um nur die neuen Ergebnisse anzuzeigen, führen Sie die Analyse in Ihrem aktuellen Zweig mit zwei zusätzlichen Optionen in der Datei mit den erweiterten Einstellungen aus: Parasoft-Menü> Einstellungen> Parasoft> Erweiterte C / C ++ - Testeinstellungen> Einstellungsdatei.

Screenshot des Codes zur Verwendung des Berichts der vorherigen Version als Basis
Abbildung 6: Verwenden Sie den Bericht der vorherigen Version als Basis

In allen Beispielen der lokalen Einstellungsdatei mit der angegebenen Datei report.xml können Sie auch relative oder absolute Pfade angeben.

Bequemer Zugriff auf statische CI / CD-Analyseergebnisse ermöglicht eine schnellere Korrektur

Bei der Erörterung der Git-Integration und des reduzierten Analyseumfangs für ein schnelleres Feedback habe ich bereits erwähnt, dass diese reduzierten Scans durch die vollständigen und umfangreichen Scans in CI / CD ergänzt werden sollten.

Zugriff auf CI / CD-Ergebnisse

Bei diesem Ansatz stellt sich eine wichtige Frage: Wie aktiviert ein Benutzer CI / CD-Ergebnisse für Entwickler, damit diese Maßnahmen ergreifen und Abhilfe schaffen können? Es gibt verschiedene Möglichkeiten, die Ergebnisse verfügbar zu machen:

      • Über die Weboberfläche der CI / CD-Plattform.
      • Geteilt von der Parasoft DTP-Berichtsserver.
      • Wird direkt an die IDEs der Entwickler geliefert.

Die meisten Teams bevorzugen die letzte Option, da sie über die am häufigsten verwendete Schnittstelle auf die Ergebnisse zugreifen können - ihre IDE!

Zugriff auf statische Analyseergebnisse

Unsere neueste Version erweitert auch die Visual Studio Code-Erweiterung, indem sie das Herunterladen statischer Analyseergebnisse von DTP ermöglicht. Diese Funktionalität war in unseren Plugins für Eclipse und Visual Studio verfügbar.

Der Download der Ergebnisse ist unkompliziert. Benutzer rufen einen dedizierten Befehl aus der Befehlspalette auf: "C / C ++ - Test: Ergebnisse aus DTP laden ...".

Infografik mit der Person am Arbeitsplatz, die Code eincheckt, Scans, SA-Ergebnisse und Anforderungsergebnisse abschließt
Abbildung 7: Download der Ergebnisse

Die Erweiterung fragt nach dem Speicherort des DTP-Servers, gefolgt von Anmeldeinformationen und anschließend dem DTP-Projekt und -Filter.

Voila! Die Ergebnisse sind in der Ansicht Probleme verfügbar, da sie lokal generiert wurden.

Entwickler können auch auf die Verstoßmeldung klicken. Sie gelangen direkt zur Quellzeile, in der ein Fix erforderlich ist. Es ist unglaublich produktiv.

Verwalten von Unterdrückungen für die einfache Freigabe

Teams, die es ernst meinen mit der Integration statischer Analysen, wissen, dass die effektive Verwaltung von Unterdrückungen oder Verzichtserklärungen entscheidend für den Erfolg ist. Parasoft-Benutzer können Unterdrückungsinformationen in Form von Codekommentaren direkt im Quellcode speichern oder eine externe Datenbank wie Parasoft DTP oder TCM verwenden.

Das Speichern von Unterdrückungsinformationen in Form von Codekommentaren ist wahrscheinlich die effektivste Methode zum Verwalten dieser Ausnahmen. Viele Teams dürfen dies jedoch nicht, insbesondere wenn sie Code an einen externen Auftragnehmer liefern, der möglicherweise andere Tools verwendet. Oder vielleicht gibt es eine interne Richtlinie, die dies verbietet.

Wir haben eine neue dritte Methode zur Unterdrückung von Verstößen eingeführt, bei der keine Änderungen an der Codedatei erforderlich sind. Dadurch wird vermieden, dass die Quelldateien mit Unterdrückungsinformationen verschmutzt werden.

Speichern von Unterdrückungen im Klartext

Mit dieser neuen Unterdrückungsmethode können Unterdrückungen in einer Nur-Text-Datei gespeichert werden. Es gibt eine Unterdrückungsdatei pro Quellcodeordner. Unterdrückungsdateien haben einen standardisierten Namen: parasoft.suppress. Ab der Version 2020.2 alle Statische Analysetools von Parasoft sind vorkonfiguriert, um parasoft.suppress-Dateien in die Analyse einzubeziehen. Es ist keine zusätzliche Konfiguration erforderlich, um diese Funktionalität zu aktivieren.

Benutzer können parasoft.suppress neue Unterdrückungseinträge hinzufügen, indem sie entweder eine dedizierte UI-Aktion verwenden oder diese Einträge manuell hinzufügen. Die Benutzeroberflächen des Eclipse-Plugins, des Visual Studio-Plugins und der Visual Studio-Erweiterung werden erweitert, um den neuen Unterdrückungstyp zu unterstützen.

Der Unterdrückungseintrag ist nur einfacher Text und enthält eine Sammlung von Attributen, die die zu unterdrückenden Verstöße identifizieren. Der Screenshot zeigt ein Beispiel für einen Unterdrückungseintrag und eine Liste aller Attribute, die in Unterdrückungseinträgen unterstützt werden.

Screenshot mit den Eingabezeilen für die Unterdrückung von Code
Abbildung 8: Unterdrückungseintrag

Entwickler können grundlegende reguläre Ausdrücke ('*', '?') Für das Nachrichtenattribut verwenden, wodurch mehrere Verstöße mit einem Unterdrückungseintrag unterdrückt werden können. Zum Beispiel, wenn eine Nachricht einen Parameternamen enthält.

Bei Bedarf kann ein einzelner Unterdrückungseintrag mehrere Verstöße unterdrücken. Die Informationen zu jedem einzelnen unterdrückten Verstoß sind jedoch auch in den generierten Berichten verfügbar. Und wenn dafür konfiguriert, wird es auf den DTP-Server übertragen.

Infografik und Screenshot zeigen das Zusammenführen von Code
Abbildung 9: Zusammenführen

Unterdrückungsdateien (parasoft.suppress) sollen im SCM gespeichert werden. Wenn ein Zweig erstellt wird, sind Unterdrückungsinformationen ein Teil davon. Durch Hinzufügen eines neuen Eintrags zur Unterdrückungsdatei wird dieser im Codeüberprüfungsprozess sichtbar, und die Datei durchläuft die Genehmigungskette. Nach dem Zusammenführen des Codes werden Unterdrückungsdateien genau wie der Quellcode Teil dieses Vorgangs. Schlicht und einfach.

Putting It All Together

Moderne Entwicklungsworkflows standardisieren sich basierend auf Git SCM und konzentrieren sich auf CI / CD. Große Codebasen und eine hohe Verzweigungshäufigkeit erfordern die Bereitstellung statischer Analysetools, mit denen die für die aktuelle Arbeit des Entwicklers relevanten Ergebnisse automatisch fokussiert und erzeugt werden können.

Aufgrund von Open Source-, Legacy- und Prototyp-Quellcode, mit dem Projekte häufig arbeiten müssen, müssen Teams ihr eigenes Tempo bestimmen und ihre eigenen Pläne erstellen, um die Einhaltung der Codierungsstandards zu erreichen. Das Baselining der Ergebnisse hilft dabei, eine strenge Richtlinie für den neuen Code und einen Plan zur schnellen und effizienten Behebung bereits bestehender Probleme festzulegen.

Was ist neu im Parasoft C / C ++ - Test 2020.2? Release: Sehen Sie sich das Webinar an

Geschrieben von

Miroslaw Zielinski

Zu den Spezialitäten von Miroslaw, dem Produktmanager für die eingebetteten Testlösungen von Parasoft, gehören C / C ++, RTOS, statische Code-Analyse, Komponententests, Verwaltung der Softwarequalität für sicherheitskritische Anwendungen und Einhaltung der Sicherheitsstandards durch die Software.

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