DefineExtractor ist ein C++-Kommandozeilenprogramm für Windows, das Quellcode nach folgenden Mustern durchsucht:
#define-Makros in.h- und.cpp-Dateienapp.xyz-Aufrufe in.py-Dateien
Das Tool unterstützt Mehrfach-Threads und kann große Codebasen effizient durchsuchen. Es hilft dabei, schnell die relevanten Stellen für bestimmte Defines oder Python-Parameter zu finden.
-
Automatische Header-Erkennung
- Findet
locale_inc.h(Client) sowieservice.h/commondefines.h(Server) durch Durchsuchen einschlägiger Unterordner.
- Findet
-
Makro-Listing
- Zeigt alle definierten Makros aus den erkannten Headern an, um gezielt nach einem bestimmten
#definezu suchen.
- Zeigt alle definierten Makros aus den erkannten Headern an, um gezielt nach einem bestimmten
-
Python-Parameter
- Ermittelt alle Aufrufe im Format
app.xyzinnerhalb von.py-Dateien und listet diese übersichtlich auf.
- Ermittelt alle Aufrufe im Format
-
Ausgabedateien in
Output/- Für jedes gescannte Makro bzw. jeden Python-Parameter erzeugt das Tool zwei Textdateien:
*_DEFINE.txt: Fundstellen für#if <DEFINE>-Blöcke bzw.if app.xyz*_FUNC.txt: Funktionen oder Methoden, in denen das Define bzw. der Parameter auftaucht
- Für jedes gescannte Makro bzw. jeden Python-Parameter erzeugt das Tool zwei Textdateien:
-
Multithreading
- Dank gleichzeitiger Verarbeitung mehrerer Dateien kann die Suche in großen Projekten deutlich beschleunigt werden.
- Parallele Verarbeitung: Das Tool verteilt die zu durchsuchenden Dateien auf mehrere Threads (abhängig von der CPU-Anzahl).
- Regex-gestütztes Parsing:
#if-Blöcke, Funktionsköpfe sowie Python-if-Statements werden über reguläre Ausdrücke erkannt. Dies funktioniert in den meisten konventionellen Code-Stilen zuverlässig. - Statusanzeige: Während der Suche wird eine Fortschrittsleiste im Terminal angezeigt, die den aktuellen Fortschritt (in %) darstellt.
- Ergebnisstruktur: Pro Suchlauf entstehen zwei Kategorien von Ausgaben (für Blöcke und für Funktionen). Ein Überblick der betroffenen Dateien wird am Ende jeder Ausgabedatei angehängt.
-
Programmdatei
- Nach erfolgreichem Build (siehe HowTo.md) erhältst du eine ausführbare Datei (z.B.
DefineExtractor.exe). - Platziere sie in einer für dich sinnvollen Ordnerstruktur, in der du Zugriff auf deine Client-, Server- oder Python-Verzeichnisse hast.
- Nach erfolgreichem Build (siehe HowTo.md) erhältst du eine ausführbare Datei (z.B.
-
Client-, Server-, Python-Verzeichnisse
- Idealerweise liegen diese Ordner auf derselben Ebene wie das Build-Verzeichnis:
C:\MeineProjekte\ ├─ DefineExtractor\ (enthält EXE) ├─ MeinClient\ ├─ MeinServer\ └─ PythonStuff\ - So kann das Tool leicht die relevanten Pfade durchsuchen.
- Idealerweise liegen diese Ordner auf derselben Ebene wie das Build-Verzeichnis:
-
Ausführung
- Starte die Anwendung per Doppelklick oder über eine Kommandozeile (CMD/PowerShell).
- Wähle zunächst in einem Menü die Pfade für Client, Server und Python Root.
- Anschließend im Hauptmenü die gewünschte Option (Client/Server/Python) auswählen und ein Makro bzw. einen Parameter scannen.
- Regex-Grenzen
Bei sehr unkonventionellen Code-Stilen (z.B. stark verschachtelte Makros) kann die Erkennung fehlschlagen oder versehentlich zu viel mit erfassen. - Nur Windows optimiert
Zwar basiert das Projekt weitgehend auf C++17 und könnte unter Linux kompiliert werden, jedoch ist das Hauptaugenmerk auf Windows/Visual Studio gerichtet. - Keine tiefe Python-Analyse
Die Python-Suche beschränkt sich aufif app.xyz-Blöcke und deren Einrückung sowie Funktionsdefinitionen (def). Komplexere Strukturen (z.B. Klassen) werden nicht gesondert behandelt.
- Dieses Projekt enthält keine spezifische Lizenz. Gerne kannst du selbst eine hinzufügen (z.B. MIT, Apache 2.0 etc.).
- Die Nutzung erfolgt auf eigene Verantwortung. Es wird keine Haftung für mögliche Schäden oder Datenverluste übernommen.
- Bug Reports & Feature Requests: Bitte im zugehörigen Repository ein Issue erstellen.
- Pull Requests sind immer willkommen.
- Weitere Fragen: Siehe HowTo.md für Einrichtungsdetails oder kontaktiere den Autor direkt.
DefineExtractor is a Windows-oriented C++ command-line tool that searches source code for:
#definemacros in.hand.cppfilesapp.xyzreferences in.pyfiles
It employs multithreading for faster scanning of large codebases, making it easy to locate relevant lines or blocks tied to specific features (defines or Python parameters).
-
Automatic Header Detection
- Finds
locale_inc.h(Client) andservice.h/commondefines.h(Server) by scanning typical subfolders.
- Finds
-
Macro Listing
- Displays all macros defined in the discovered headers, allowing targeted searches for a particular
#define.
- Displays all macros defined in the discovered headers, allowing targeted searches for a particular
-
Python Parameter Discovery
- Looks for
app.xyzcalls within.pyfiles, listing them systematically.
- Looks for
-
Output Files in
Output/- For each scanned macro or Python parameter, the tool produces two text files:
*_DEFINE.txt: Contains relevant#if <DEFINE>orif app.xyzblocks*_FUNC.txt: Contains functions/methods referencing that define or parameter
- For each scanned macro or Python parameter, the tool produces two text files:
-
Multithreading
- Uses multiple threads to quickly process large file sets on multi-core CPUs.
- Parallel File Processing: Distributes work across available CPU cores (thread count typically matches hardware concurrency).
- Regex-Based Parsing: Identifies
#ifblocks, function declarations, and Pythonif app.xyzstatements via regular expressions. - Progress Display: A progress bar in the console shows the scanning progress in real time.
- Result Structure: Each search yields two categories of output (blocks vs. functions). A summary of affected files is appended at the end of each output file.
-
Executable
- After a successful build (see HowTo.md), you’ll have
DefineExtractor.exe. - Place it in a convenient directory that can access your Client, Server, or Python source folders.
- After a successful build (see HowTo.md), you’ll have
-
Client, Server, and Python Folders
- Typically, these folders sit in the same root as the build directory:
C:\MyProjects\ ├─ DefineExtractor\ (contains the .exe) ├─ MyClient\ ├─ MyServer\ └─ PythonStuff\ - This layout makes scanning easier.
- Typically, these folders sit in the same root as the build directory:
-
Execution
- Double-click the .exe or run it from a command prompt (CMD/PowerShell).
- Choose your Client path, Server path, and Python Root in the path setup menu.
- Then, from the main menu, pick Client/Server/Python and select a macro or parameter to scan.
- Regex Boundaries
With highly unconventional or macro-heavy code, there is a risk of missing or over-including certain lines. - Windows Focus
Although it uses standard C++17, the primary focus is Windows + Visual Studio. - Limited Python Analysis
The Python search only targetsif app.xyzblocks (with indentation) and function definitions (def). It doesn’t handle classes or more complex structures in detail.
- No specific license is included by default. Feel free to add one (e.g., MIT, Apache 2.0).
- Use at your own risk. We assume no liability for any damage or data loss.
- Bug Reports & Feature Requests: Please file an Issue in the repository.
- Pull Requests are welcome.
- Further Questions: Refer to HowTo.md for setup instructions or contact the author directly.