Parasoft-Logo

Bereitstellen statischer Analysen und Komponententests in containerisierten Umgebungen, Teil 1

By Miroslaw Zielinski 6. Juni 2023 11 min gelesen

Sind Sie neugierig auf Containerumgebungen? Erfahren Sie, was sie sind, warum Ihr Team sie verwenden sollte und welche Best Practices es gibt. Anschließend erfahren Sie, wie Sie den Parasoft C/C++-Test für containerisierte Entwicklungsumgebungen konfigurieren.

Bereitstellen statischer Analysen und Komponententests in containerisierten Umgebungen, Teil 1

By Miroslaw Zielinski 6. Juni 2023 11 min gelesen

Sind Sie neugierig auf Containerumgebungen? Erfahren Sie, was sie sind, warum Ihr Team sie verwenden sollte und welche Best Practices es gibt. Anschließend erfahren Sie, wie Sie den Parasoft C/C++-Test für containerisierte Entwicklungsumgebungen konfigurieren.

Containerisierte Umgebungen verstehen

Containerisierte Umgebungen haben in den letzten Jahren aufgrund ihrer Fähigkeit, die Bereitstellung und Verwaltung von Anwendungen zu rationalisieren, erheblich an Popularität gewonnen. Ein Container ist ein leichtes, eigenständiges Paket, das alles enthält, was zum Ausführen einer Anwendung erforderlich ist, einschließlich Code, Laufzeit, Systemtools und Bibliotheken. Es kapselt die Anwendung und ihre Abhängigkeiten und bietet so eine konsistente und isolierte Umgebung über verschiedene Plattformen und Betriebssysteme hinweg.

Das Verständnis von Containerumgebungen ist für Softwareentwickler von entscheidender Bedeutung, da es die Art und Weise, wie Anwendungen erstellt und bereitgestellt werden, revolutioniert. Einer der Hauptvorteile der Containerisierung ist ihre Portabilität.

Container kapseln die gesamte Laufzeitumgebung, einschließlich Anwendungscode, Bibliotheken und Konfigurationen. Dadurch können Entwickler ein Container-Image einmal erstellen und es auf jedem System ausführen, das Containerisierung unterstützt, wie z. B. Docker oder Kubernetes. Das Problem „Es funktioniert auf meinem Rechner“ wird dadurch eliminiert, da der Container in Entwicklungs-, Test- und Produktionsumgebungen konsistent ausgeführt wird. Diese Portabilität vereinfacht den Bereitstellungsprozess erheblich und erleichtert das Verschieben von Anwendungen zwischen verschiedenen Hosting-Umgebungen sowie deren Skalierung nach Bedarf.

Ein weiterer Vorteil der Containerisierung ist die Möglichkeit, Anwendungen und ihre Abhängigkeiten zu isolieren. Container nutzen die Virtualisierung auf Betriebssystemebene, um isolierte Instanzen zu erstellen, die dasselbe Host-Betriebssystem verwenden. Durch diese Isolierung wird sichergestellt, dass Anwendungen, die in einem Container ausgeführt werden, Anwendungen in anderen Containern nicht beeinträchtigen oder beeinträchtigen, wodurch eine sicherere und stabilere Umgebung entsteht. Entwickler können getrost mit verschiedenen Bibliotheken, Frameworks und Konfigurationen experimentieren, ohne sich Gedanken über Konflikte oder Beeinträchtigungen der Stabilität des Gesamtsystems machen zu müssen.

Was ist eine containerisierte Entwicklungsumgebung?

Unter einer containerisierten Entwicklungsumgebung versteht man die Verwendung von Containern zur Kapselung und Verwaltung der Softwareentwicklungsumgebung. Dabei geht es darum, eine eigenständige, isolierte Umgebung zu erstellen, die alle notwendigen Tools, Abhängigkeiten und Konfigurationen umfasst, die für die Entwicklung einer Anwendung erforderlich sind.

In einer containerisierten Entwicklungsumgebung werden die Entwicklungstools, Programmiersprachen, Bibliotheken und andere Abhängigkeiten in ein Container-Image gepackt. Dieses Bild dient als tragbare und reproduzierbare Darstellung der Entwicklungsumgebung. Entwickler können diese Container-Images erstellen, ändern und freigeben, um Konsistenz sicherzustellen und die Zusammenarbeit zwischen Teammitgliedern zu erleichtern.

Mithilfe von Containerisierungstechnologien wie Docker können Entwickler leichte, eigenständige Container erstellen, die vom Hostsystem und anderen Containern isoliert sind. Jeder Container bietet eine konsistente und einheitliche Umgebung, unabhängig vom zugrunde liegenden Host-Betriebssystem oder der Maschinenkonfiguration.

Containerisierte Entwicklungsumgebungen bieten mehrere Vorteile, wie z. B. die Sicherstellung der Konsistenz zwischen Teammitgliedern auf verschiedenen Maschinen, insbesondere im Entwicklungsumgebung für eingebettete Softwaresysteme, was sehr komplex sein kann. Eine Containerumgebung ermöglicht es Entwicklern, mit demselben Software-Stack, denselben Bibliotheken und Konfigurationen zu arbeiten, wodurch Kompatibilitätsprobleme vermieden und der Zeitaufwand für die Einrichtung der Umgebung reduziert werden.

Mit anderen Worten: Containerumgebungen ermöglichen eine einfache Einrichtung und Reproduzierbarkeit. Entwickler können ihre Anwendungen zusammen mit allen erforderlichen Abhängigkeiten in ein Container-Image packen. Dieses Image kann geteilt werden, sodass andere schnell dieselbe Entwicklungsumgebung einrichten können. Dadurch wird sichergestellt, dass sich die Anwendung in verschiedenen Umgebungen konsistent verhält, was die Zusammenarbeit und Bereitstellungsprozesse erleichtert.

Ein weiterer Vorteil von containerisierten Entwicklungsumgebungen besteht darin, dass sie Flexibilität bieten. Entwickler können ohne Konflikte zwischen Projekten oder verschiedenen Softwareversionen wechseln. Jedes Projekt kann über einen eigenen Container verfügen, der seine Abhängigkeiten und Konfigurationen isoliert. Diese Flexibilität ermöglicht eine parallele Entwicklung und Softwaretests. Es ermöglicht einen leistungsstarken CI/CD-Workflow Automatisierung der statischen Analyse und Unit-Tests für jeden Entwickler nach einem erfolgreichen Code-Build. Dieser Workflow ermöglicht qualitativ hochwertigen Code, indem er Fehler findet, bevor der Code in das Master-Repository übertragen wird.

Darüber hinaus verbessert die Containerisierung die Skalierbarkeit und Ressourceneffizienz. Container sind leichtgewichtig und haben einen minimalen Overhead, sodass Entwickler die Systemressourcen effizient nutzen können. Auf einem einzigen Host-Rechner können mehrere Container ausgeführt werden, was eine parallele Entwicklung und Tests ermöglicht. Diese Skalierbarkeit ist bei der Arbeit an großen Projekten oder verteilten Systemen von Vorteil.

Warum eine Container-Entwicklungsumgebung verwenden?

Der Einsatz einer containerisierten Entwicklungsumgebung bietet Softwareentwicklungsteams mehrere Vorteile. Hier sind einige Gründe, warum Entwickler die Containerisierung nutzen sollten.

  1. Sorgt für Konsistenz. Container gewährleisten Konsistenz über verschiedene Entwicklungsumgebungen und Teammitglieder hinweg. Dank Containerisierung arbeiten alle mit demselben Software-Stack, denselben Bibliotheken und denselben Konfigurationen. Dies beseitigt das Problem „Es funktioniert auf meinem Rechner“ und reduziert Kompatibilitätsprobleme. Dies ermöglicht eine reibungslosere Zusammenarbeit und eine einfachere Einarbeitung neuer Teammitglieder.
  2. Erleichtert die Reproduzierbarkeit. Durch die Containerisierung können Entwickler ihre Anwendungen zusammen mit allen erforderlichen Abhängigkeiten in ein Container-Image packen. Dieses Bild kann mit anderen geteilt werden, um sicherzustellen, dass jeder über eine identische Entwicklungsumgebung verfügt. Es vereinfacht den Einrichtungsprozess und stellt sicher, dass sich die Anwendung in verschiedenen Umgebungen von der Entwicklung bis zur Produktion konsistent verhält.
  3. Sorgt für Flexibilität. Containerisierte Entwicklungsumgebungen bieten Flexibilität durch die Isolierung von Abhängigkeiten und Konfigurationen innerhalb von Containern. Entwickler können problemlos und konfliktfrei zwischen Projekten oder verschiedenen Softwareversionen wechseln. Jedes Projekt kann über einen eigenen Container verfügen, der eine parallele Entwicklung ermöglicht und das Experimentieren mit neuen Bibliotheken oder Tools erleichtert.
  4. Erleichtert Skalierbarkeit und Effizienz. Container sind leichtgewichtig und haben einen minimalen Overhead, was eine effiziente Nutzung der Systemressourcen ermöglicht. Auf einem einzigen Host-Rechner können mehrere Container ausgeführt werden, was parallele Entwicklung, Tests und Skalierbarkeit ermöglicht. Darüber hinaus können Container problemlos über verschiedene Maschinen oder Cloud-Infrastrukturen hinweg skaliert werden, was die Entwicklung verteilter Systeme erleichtert und die Produktivität verbessert.
  5. Verbessert die Zusammenarbeit. Die Containerisierung vereinfacht die Zusammenarbeit innerhalb von Entwicklungsteams. Container bieten eine portable und konsistente Umgebung und erleichtern die gemeinsame Nutzung von Entwicklungsumgebungen durch Teammitglieder. Dadurch wird sichergestellt, dass alle mit denselben Tools und Abhängigkeiten arbeiten, was eine reibungslosere Codeüberprüfung, Fehlerbehebung und Wissensweitergabe ermöglicht.
  6. Funktioniert gut mit Versionskontrolle. Die Containerisierung lässt sich gut in Versionskontrollsysteme integrieren. Entwickler können die Containerkonfigurationsdateien einbinden, z Docker-Dateien, in ihren Code-Repositorys. Dies ermöglicht die Versionierung und Verfolgung von Änderungen an der Entwicklungsumgebung, wodurch es einfacher wird, bestimmte Versionen der Anwendung zusammen mit ihrer Umgebung zu reproduzieren.
  7. Optimiert Sicherheit und Isolation. Container bieten erhöhte Sicherheit, indem sie Anwendungen und ihre Abhängigkeiten vom zugrunde liegenden Hostsystem isolieren. Jeder Container arbeitet in seiner eigenen isolierten Umgebung, wodurch die Auswirkungen potenzieller Sicherheitsverletzungen reduziert werden. Container-Images können außerdem auf Schwachstellen gescannt werden und Aktualisierungen können einfach angewendet werden, wodurch eine sicherere Entwicklungsumgebung gewährleistet wird.

Best Practices für eine Container-Entwicklungsumgebung

Wenn es um containerisierte Entwicklungsumgebungen geht, kann die Befolgung von Best Practices die Produktivität erheblich steigern und reibungslose Entwicklungsabläufe gewährleisten. Hier sind einige wichtige Richtlinien, die Sie beachten sollten.

Verwenden Sie eine Docker-Datei

Docker-Dateien sind für die Definition der Konfiguration und Abhängigkeiten Ihrer Containerumgebung unerlässlich. Anstatt Container manuell zu konfigurieren, verwenden Sie Dockerfiles, um den Prozess zu automatisieren. Beginnen Sie mit einem Basis-Image, geben Sie die erforderlichen Abhängigkeiten an und fügen Sie die Befehle zum Erstellen und Ausführen Ihrer Anwendung hinzu. Dieser Ansatz gewährleistet Konsistenz und Reproduzierbarkeit in verschiedenen Umgebungen.

Nutzen Sie die Container-Orchestrierung

Container-Orchestrierungsplattformen wie Kubernetes bieten leistungsstarke Tools für die Verwaltung von Containeranwendungen im großen Maßstab. Sie ermöglichen Funktionen wie automatische Skalierung, Lastausgleich und Serviceerkennung. Die Nutzung der Container-Orchestrierung vereinfacht die Bereitstellung und Überwachung und erleichtert so die effektive Verwaltung und Skalierung Ihrer Anwendungen.

Optimieren Sie Containergröße und Leistung

Halten Sie Ihre Container-Images so klein wie möglich, indem Sie die Anzahl der Ebenen minimieren und unnötige Abhängigkeiten entfernen. Kleinere Images lassen sich schneller erstellen, übertragen und bereitstellen. Stellen Sie außerdem sicher, dass Ihre Container ordnungsgemäß für die Ressourcenverwaltung konfiguriert sind. Sie können Parasoft C/C++test verwenden, um den Prozess der Erstellung eines Container-Images zu vereinfachen. Verwenden C / C ++ - Test um Ressourcengrenzen und -anforderungen einfach und angemessen festzulegen, um zu verhindern, dass Container übermäßig viele Ressourcen verbrauchen und die Leistung anderer Container beeinträchtigen.

Automatisieren Sie die Einrichtung der Entwicklungsumgebung

Die manuelle Einrichtung von Entwicklungsumgebungen kann zeitaufwändig und fehleranfällig sein. Automatisieren Sie den Prozess stattdessen mit Konfigurationsmanagement-Tools wie GitHub oder Bereitstellungstools wie Vagrant. Mit der Automatisierung können Sie mit nur wenigen Befehlen containerisierte Entwicklungsumgebungen schnell hoch- oder herunterfahren, was die Einrichtungszeit verkürzt und die Konsistenz im gesamten Team gewährleistet.

Implementieren Sie Sicherheitspraktiken

Behälter sollten als kurzlebige, wegwerfbare Einheiten behandelt werden. Aktualisieren Sie Ihre Container-Images und Basis-Images regelmäßig, um die neuesten Sicherheitspatches aufzunehmen. Vermeiden Sie die Ausführung von Containern mit unnötigen Berechtigungen und setzen Sie strenge Zugriffskontrollen durch, um das Risiko eines unbefugten Zugriffs zu minimieren. Erwägen Sie außerdem, Container-Images mit Tools wie Clair oder Anchore auf Schwachstellen zu scannen.

Containerbilder zur Versionskontrolle

Behandeln Sie Containerbilder als Codeartefakte und nutzen Sie Versionskontrollsysteme, um sie zu verwalten. Durch die Pflege eines Versionsverlaufs Ihrer Container-Images können Sie bei Problemen problemlos auf einen früheren Zustand zurückgreifen. Darüber hinaus ermöglicht die Verwendung einer Container-Registrierung die einfache Verteilung und gemeinsame Nutzung von Container-Images in Ihrem Entwicklungsteam.

Während die Einhaltung dieser Best Practices effiziente und zuverlässige Container-Entwicklungsumgebungen gewährleisten kann, bleibt die Bereitstellung von Codequalität und -zuverlässigkeit in Container-Umgebungen ein wichtiges Anliegen für Entwickler. Bereitstellung statischer Analysen und Unit-Test in Containerumgebungen bietet eine leistungsstarke Lösung zur Bewältigung dieser Herausforderungen. Nachfolgend finden Sie eine detaillierte Erklärung, wie Entwickler ParasoftC/C++ nutzen können, um Docker-Container effizient zu nutzen.

So konfigurieren Sie den Parasoft C/C++-Test für containerisierte Entwicklungsumgebungen

Parasoft C / C ++ test ist einfach mit Docker-Containern zu verwenden. Ich führe Sie durch die Schritte zum Konfigurieren von C/C++test für die Arbeit in containerisierten Entwicklungsumgebungen.

Eingebettete Entwicklungsteams lieben Docker-Container

Containergesteuerte Bereitstellungen von Entwicklungstools werden zum Kernstück eingebetteter Entwicklungsteams. Obwohl Container ursprünglich entwickelt wurden, um Probleme bei der Bereitstellung von Microservices und webbasierten Anwendungen zu lösen, wurden sie kürzlich bei eingebetteten Teams immer beliebter - insbesondere bei großen Teams, die Container zur Verwaltung komplexer Toolchains verwenden.

Bei der Verwaltung komplexer Entwicklungsumgebungen, insbesondere im sicherheitskritischen Bereich, haben Teams normalerweise mit den folgenden Herausforderungen zu kämpfen:

  • Synchronisieren von Upgrades für das gesamte Team auf eine neue Version eines Tools wie eines Compilers, Erstellen einer Toolchain usw.
  • Dynamische Reaktion auf einen neuen Sicherheitspatch für die Bibliothek oder das Software Development Kit (SDK) und dergleichen.
  • Sicherstellung der Konsistenz der Toolchain für alle Teammitglieder und der automatisierten Infrastruktur (CI / CD).
  • Fähigkeit, die Entwicklungsumgebung zu versionieren und sie so wiederherzustellen, dass sie die ältere Version des Produkts bedient, die mit der spezifischen Toolchain zertifiziert wurde.
  • Onboarding und Einrichtung neuer Entwickler.

All diese Probleme lassen sich mit Containern leicht lösen. Kein Wunder, dass Teams Container lieben! Schauen wir uns an, wie man C/C++test für die Verwendung in einer Containerumgebung konfiguriert.

Verwenden von Parasoft C / C ++ Test Professional Mit einer Containerized Compilation Toolchain

Es ist einfach, Parasoft C / C ++ test Professional so zu konfigurieren, dass es mit einer Kompilierungs-Toolchain und der in Containern bereitgestellten Ausführungsumgebung funktioniert. Wir unterstützen Bereitstellungen, die auf Linux- und Docker-Containern basieren. Hier ist eine allgemeine Übersicht darüber, wie diese Art der Einrichtung aussieht:

Allgemeiner Überblick über die Einrichtung von Parasoft C/C++test Professional mit einer containerisierten Kompilierungs-Toolchain.

Wie Sie sehen können, greift der C / C ++ - Test auf den containerisierten Compiler (GNU GCC) und die Laufzeitumgebungen zu. In diesem speziellen Setup gibt es zwei separate Docker-Container:

  • Eine für den Compiler und Build-Tools
  • Eine andere für die Ausführungsumgebung (z. B. abgespeckte Version von Embedded Linux)

Lassen Sie uns sehen, wie Sie C / C ++ test Professional für die Arbeit mit einer In-Container-Kompilierungs-Toolchain und einer Ausführungsumgebung konfigurieren. Im Beispiel verwenden wir die neueste GCC Container-Image über den Docker-Hub verfügbar.

Lassen Sie uns sehen, wie Sie C / C ++ test Professional für die Arbeit mit einer In-Container-Kompilierungs-Toolchain und einer Ausführungsumgebung konfigurieren. Im Beispiel verwenden wir die neueste GCC Container-Image über den Docker-Hub verfügbar.

Die folgenden Anweisungen setzen voraus, dass Sie eine haben Dockermotor korrekt in Ihrer Umgebung installiert und konfiguriert ist. Und das Gleiche gilt für C/C++test Professional.

Schritt 1: Starten Sie den Parasoft C / C ++ - Test

  1. Stellen Sie sicher, dass Ihr Docker funktioniert. Beginnen wir mit einem kurzen Test und geben die Versionsnummer des GCC-Compilers aus, der im „neuesten“ Image des GCC-Containers enthalten ist.
  2. Bevor wir den Parasoft C / C ++ - Test starten, Legen Sie eine dedizierte Umgebungsvariable fest CPPTEST_CONTAINER_NAME auf den Namen des Containers. Dies ist eine einfache Möglichkeit, dem C / C ++ - Test mitzuteilen, welcher Container zum Aufrufen des Compilers oder Linkers verwendet werden soll. Es funktioniert gut mit Jenkins Jobs.
  3. Außerdem empfehle ich Ihnen Setzen Sie die Variable CPPTEST_INSTALL um auf das C / C ++ - Testinstallationsverzeichnis zu verweisen. Dies ermöglicht eine einfache Einrichtung. Sobald die Variablen festgelegt sind, können wir den C / C ++ - Test starten.
  4. Wählen Sie für Ihren Arbeitsbereich einen Standort aus irgendwo im HOME-Verzeichnis (dazu später mehr).

Screenshot des Setups zum Starten des C/C++-Tests im Docker-Container
Schritt 2: Erstellen Sie ein Demo-Projekt

Um die Erstellung eines Demoprojekts ganz einfach zu gestalten, erstellen wir das Standardprojekt „HelloWorld“ mithilfe des Standardassistenten „Neues Projekt“.

  1. Wählen Sie Dateimenü > Neu > C++-Projekt und wählen Sie dann „Hello World C++-Projekt“.
  2. Geben Sie den Namen Ihrer Wahl für Ihr Projekt ein. Es sollte mehr oder weniger wie im folgenden Screenshot aussehen.
  3. Klicke Farbe um das Standardprojekt für unser Beispiel zu erstellen.

C/C++test-Demoprojekt im Docker-Container
Schritt 3: Ändern Sie die Compiler-Einstellungen

Ändern Sie nach dem Erstellen des Projekts einige Elemente in den Build-Einstellungen des C / C ++ - Tests.

  1. Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie Eigenschaften und dann Parasoft>C/C++test>Build-Einstellungen.
  2. Ändern Sie im Bereich "Build-Einstellungen" zwei Elemente im Abschnitt "Compiler-Einstellungen":
    • Familie. Passen Sie die Konfiguration an den im Container installierten Compiler an. Zum Zeitpunkt der Erstellung dieses Blogs enthielt das neueste „gcc“-Image den GNU GCC 9.2-Compiler. Daher wurde die Compilerkonfiguration „GNU GCC 9.x (x86_64)“ ausgewählt.
    • Standardmäßige ausführbare Compiler-Dateien. Die standardmäßigen ausführbaren Dateien für den Compiler müssen durch spezielle Wrapper ersetzt werden, um den In-Container-Compiler anstelle des regulären Compilers aufzurufen, der direkt im Host-Betriebssystem installiert ist. Diese Wrapper, remote-gcc und remote-g ++, werden in der C/C++-Testdistribution ausgeliefert. Im Screenshot unten verwende ich eine Hilfsumgebungsvariable für das C/C++test-Installationsverzeichnis. Sie können entweder eine ähnliche Variable für Ihre Umgebung festlegen oder vollständige Pfade verwenden, um die Wrapping-Skripte zu finden.

Beispiel-Demoprojekt in C/C++test
Schritt 4: Überprüfen Sie, ob der Container ausgeführt wird

Stellen Sie sicher, dass der Container mit Ihrer Kompilierungs-Toolchain betriebsbereit ist, bevor Sie den Parasoft C / C ++ - Test verwenden.

Die Compiler-Wrapper, die wir im vorherigen Schritt eingerichtet haben, sind so konzipiert, dass sie die Compiler-Befehle im laufenden Container ausführen. Dies ist schneller als das Starten des Containers bei jedem Aufruf.

Für CI / CD-BereitstellungenDas Starten des Containers vor und das Stoppen nach dem C/C++-Testlauf kann Teil des Jenkins-Jobs sein. In diesem Beispiel gehen wir von einer GUI-basierten Ausführung aus. Wir können hierfür Eclipse-Run-Konfigurationen erstellen. Ich schlage vor, zwei Konfigurationen vom Typ „C/C++-Anwendung“ zu erstellen und sie wie folgt zu benennen:

  • "gcc-Container starten"
  • „GCC-Container stoppen“
  1. Wählen Sie Menü Ausführen> Konfigurationen ausführen….
  2. Erstellen Sie zwei Ausführungskonfigurationen mit den Namen „GCC-Container starten“ und „GCC-Container stoppen“.
  3. Geben Sie auf der Registerkarte „Haupt“ für beide Konfigurationen Ihren Pfad zu Docker als „C/C++-Anwendung“ ein, wie unten gezeigt:

"Stoppen Sie den GCC-Container

  1. Für "gcc-Container starten"Geben Sie auf der Registerkarte Argumente den folgenden Befehl ein:

Stil="padding-left: 40px;">Führen Sie –rm -d -it –name gcc -v $ {env_var: HOME} aus: $ {env_var: HOME}
-v
$ {env_var: CPPTEST_INSTALL}: $ {env_var: CPPTEST_INSTALL} gcc

Wie im folgenden Screenshot gezeigt:

"GCC-Container starten
Der interessante Teil dieses Befehls sind die Optionen -v, die zum Zuordnen von Volumes verwendet werden.

Die erste Option -v ordnet das lokale HOME-Verzeichnis dem Container-Dateisystem zu. Hier soll der Zugriff auf den Quellcode für den im Container arbeitenden Compiler sowie für den Parasoft C / C ++ - Test ermöglicht werden, der im Host-Betriebssystem ausgeführt wird.

In meinem Beispiel verwende ich der Einfachheit halber HOME, da ich meinen Arbeitsbereich direkt in HOME platziert habe.

Bei realen Setups können Sie nur den Teil des Dateisystems, der den Quellbaum und den Eclipse-Arbeitsbereich enthält, strikt dem Projekt zuordnen.

Die zweite Option -v ordnet den Speicherort des C / C ++ - Testinstallationsverzeichnisses zu, um den Zugriff auf C / C ++ - Testheaderdateien im Container zu ermöglichen.

  1. Für „GCC-Container stoppen“Geben Sie auf der Registerkarte Argumente den folgenden Befehl ein, wie in der folgenden Abbildung dargestellt:

gcc stoppen

"Stoppen Sie den GCC-Container

  1. Verwenden wir die Ausführungskonfiguration „GCC-Container starten“, um den Container auszuführen.

Die Eclipse-Konsole sollte Ihnen den Hash des Containers anzeigen. Um sicherzustellen, dass alles in Ordnung ist, können Sie zur Befehlszeile wechseln und den folgenden Befehl aufrufen:

Screenshot von Eclipse, der den Hash eines Containerprojekts zeigt.

Wenn Sie unseren „gcc“-Container in der Liste sehen, können Sie mit der Verwendung von C/C++test zum Testen Ihres Codes beginnen.

  1. Lassen Sie uns das Projekt im Navigator auswählen. Wählen Sie im Parasoft-Menü Test Using> Builtin> Unit Testing> Generate Unit Tests.

Sie sollten in Ihrem Projekt ein neues Verzeichnis „Tests“ mit einem einzelnen Unit-Test für die Funktion „Main“ sehen.

  1. Sobald die Testfälle generiert wurden, können Sie sie ausführen. Wählen Sie für die Ausführung im Container Test mit> Eingebaut> Komponententest> Komponententests ausführen aus.

Der C / C ++ - Test sollte eine Sammlung von Kompilierungen im Container und das Verknüpfen von Befehlszeilen aufrufen und mit der Erstellung und Ausführung einer Testbinärdatei im Container enden.

Das ist es! Mit diesen Schritten haben Sie den Parasoft C / C ++ - Test vorbereitet, um Testaktivitäten mithilfe der In-Container-Kompilierungs-Toolchain durchzuführen.

Wenn Sie den Compiler für ein Projekt ändern oder etwas in der Laufzeitausführungsumgebung ändern müssen, können Sie entweder das Container-Image aktualisieren oder es in eine andere Version ändern. (Denken Sie daran, die Variable CPPTEST_CONTAINER_NAME zu aktualisieren.)

Möchten Sie mehr erfahren? Lesen Sie Teil 2 Hier erkläre ich, wie man statische Analysen und Unit-Tests mit Parasoft C/C++test Standard in einem Docker-Container bereitstellt.

Sehen Sie, wie Container und Parasoft C/C++test in Ihre CI/CD-Pipeline passen und die Produktivität steigern.
Fordern Sie eine benutzerdefinierte Demo an