- Auslisten aller im Projekt definierten Funktionen
- Suche nach toten Funktionen im Projekt - Doppelklick auf Funktion öffnet die Datei mit der Deklaration
This commit is contained in:
47
src/editor/FunctionScanner.h
Normal file
47
src/editor/FunctionScanner.h
Normal file
@@ -0,0 +1,47 @@
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
#include <QList>
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// FunctionScanner – Scannt PHP-Dateien nach Funktionsdefinitionen.
|
||||
//
|
||||
// Liefert für jede gefundene Funktion:
|
||||
// - Name
|
||||
// - Parameter (vollständige Signatur)
|
||||
// - Dateipfad
|
||||
// - Zeilennummer
|
||||
//
|
||||
// Wird von FunctionListPanel (Anzeige) und DeadCodeAnalyzer (Stufe 1)
|
||||
// gemeinsam genutzt.
|
||||
// ---------------------------------------------------------------------------
|
||||
class FunctionScanner : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
struct FunctionInfo
|
||||
{
|
||||
QString name; // Funktionsname
|
||||
QString parameters; // Parameter wie definiert, z.B. "$id, $name = null"
|
||||
QString signature; // name(parameters) — fertig formatiert
|
||||
QString filePath; // Absoluter Pfad zur Datei
|
||||
int line = 0; // Zeilennummer der Definition
|
||||
QString className; // Klassen- oder Namespace-Kontext, leer = global
|
||||
};
|
||||
|
||||
explicit FunctionScanner(QObject *parent = nullptr);
|
||||
|
||||
// Synchroner Scan — für direkten Aufruf aus Threads
|
||||
QList<FunctionInfo> scanDirectory(const QString &rootPath,
|
||||
const QStringList &extensions = {"*.php"}) const;
|
||||
|
||||
// Scannt eine einzelne Datei
|
||||
QList<FunctionInfo> scanFile(const QString &filePath) const;
|
||||
|
||||
private:
|
||||
static QString extractParameters(const QString &line, int parenPos);
|
||||
static QString detectClassContext(const QStringList &lines, int functionLineIndex);
|
||||
};
|
||||
Reference in New Issue
Block a user