- Suche nach toten Funktionen im Projekt - Doppelklick auf Funktion öffnet die Datei mit der Deklaration
48 lines
1.6 KiB
C++
48 lines
1.6 KiB
C++
#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);
|
||
};
|