Reverse Engineering von C++ Code

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Projekte und Code Engineering > Importieren von Quellcode >

Reverse Engineering von C++ Code

C++-Projekte sind in punkto Reverse Engineering sehr groß im Vergleich zu Java-, C#- oder VB.NET-Projekten. Im Allgemeinen wird empfohlen, die Reverse Engineering-Funktion nur für kleine bis mittelgroße C++-Projekte zu verwenden. Bei großen C++-Projekten würde der Import sehr lange dauern (z.B. 15 Minuten und länger).

 

Verwenden Sie den Menübefehl Projekt | Quellprojekt importieren, um C++-Projekte in UModel zu importieren.

um_cpp_code_import

Um in einer anderen IDE als Visual Studio erstellte C++-Projekte zu importieren, verwenden Sie den Menübefehl Projekt | Quellverzeichnis importieren anstelle von Projekt | Quellprojekt importieren. Für solche Projekte müssen Sie über das Importdialogfeld Angaben bzgl. Vorverarbeitung machen sowie Pfade und Compiler-Einstellungen definieren, siehe Optionen für den Code-Import.

 

Die zu inkludierenden Verzeichnisse, die vom Parser durchsucht werden sollen, können entweder auf Projektebene über die Optionen für den Code-Import oder global definiert werden. Um zu inkludierende Verzeichnisse global hinzuzufügen, setzen Sie die Umgebungsvariable UMODEL_CPP_INCLUDE auf eine Liste von Verzeichnissen, die durch ";" getrennt werden. So können Sie z.B. den Include-Pfad "C:\example\include" folgendermaßen hinzufügen:

 

1.Rufen Sie die Systemsteuerung auf und geben Sie in das Suchfeld die ersten Buchstaben von "Umgebungsvariablen" ein.
2.Klicken Sie auf Systemumgebungsvariablen bearbeiten.
3.Klicken Sie auf Umgebungsvariablen.
4.Klicken Sie auf Neu und fügen Sie eine neue Variable mit dem Namen UMODEL_CPP_INCLUDE und dem Wert C:\example\include hinzu.
5.Klicken Sie auf OK, um alle Dialogfelder zu schließen.
6.Starten Sie UModel neu.

 

Bei mit Visual Studio erstellten C++-Projekten werden die Angaben zur Vorverarbeitung und Inkludierung von Pfaden automatisch anhand der .vcproj-Dateien eruiert. Die Kompatibilität mit dem Microsoft Visual C++ Compiler wird von Visual Studio 6.0 bis Visual Studio 2015 unterstützt (Beachten Sie, dass sich diese Kompatibilität auf den in den .cpp-Quelldateien verwendeten Codedialekt bezieht; Ihr Visual Studio-Projekt muss mit Visual Studio 2010, 2012, 2013 oder 2015 gespeichert worden sein, damit es importiert werden kann).

 

Beachten Sie die folgenden Punkte:

 

Wenn UModel beim Import einen unbekannten Datentyp findet, wird im Fenster "Meldungen" eine Warnung angezeigt und der Typ wird im Modell als int angezeigt. Im Gegensatz dazu werden unbekannte Typen bei C# oder Java in das Paket "Unbekannte externe Elemente" importiert.
Wenn Sie C++-Code im UModel importieren, wird automatisch ein vordefiniertes UModel-Profil für C++ zum Projekt hinzugefügt. Das Profil enthält die grundlegenden C++Datentypen und -Stereotype, die für das Code Engineering benötigt werden und ähnelt Profilen für andere Sprachen.
Die Unterstützung von C++-Attributen ist eingeschränkt. Es werden nur vordefinierte Standardattribute wie [[noreturn]], [[carries_dependency]], [[deprecated]] erkannt. Benutzerdefinierte Attribute werden ignoriert.

 

Nachdem der C++-Code in UModel importiert wurde, können Sie über das Modell Änderungen daran vornehmen und diese Änderungen anschließend wieder in den Code überführen (Round-Trip Engineering). Wie bei anderen Code Engineering-Sprachen bleibt die ursprüngliche Quellcodeimplementierung (z.B. Methodenkörper) nach dem Round-Trip Engineering unverändert. Datentypen oder Member-Namen, die Sie im Modell geändert haben (z.B. umbenannte Klassen) werden jedoch im Code übernommen. Nähere Informationen dazu finden Sie unter Beispiel: Generieren von C++-Code und Synchronisieren von Modell und Quellcode.


© 2019 Altova GmbH