Suchen von unbenutzen Variablen im Source?
Suchen von unbenutzen Variablen im Source?
Hallo zusammen,
kennt jemand ein tool, mit dem ich mir definierte, aber niemals benutzte Variablen, Arrays, Listen usw. in einem Sourcecode anzeigen lassen kann?
Oder kann das PB schon selbst?
__________________________________________________
Dieser Thread wurde in den Anfänger-Bereich verschoben
(RSBasic)
kennt jemand ein tool, mit dem ich mir definierte, aber niemals benutzte Variablen, Arrays, Listen usw. in einem Sourcecode anzeigen lassen kann?
Oder kann das PB schon selbst?
__________________________________________________
Dieser Thread wurde in den Anfänger-Bereich verschoben
(RSBasic)
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
@RSBasic
das meint Kurzer nicht.
Minicode:
nun soll das Tool ausgeben, dass Var2 zwar deklariert,
aber nicht benutzt wird.
@Kurzer: Solch ein Tool ist mir leider nicht bekannt.
Grüße ... Kiffi
das meint Kurzer nicht.
Minicode:
Code: Alles auswählen
Define Var1.l
Define Var2.l
Var1 = 123
Debug Var1
aber nicht benutzt wird.
@Kurzer: Solch ein Tool ist mir leider nicht bekannt.
Grüße ... Kiffi
a²+b²=mc²
Ja, diese Liste kenne ich auch, aber Sie zeigt mir nicht an welche Variablen ich definiert bzw. globalisiert habe, aber letzendlich doch nicht im Source benutze.
Ich habe mich vermutlich mißverständlich ausgedrückt.
Ich habe einen größren Source, an dem ich einige Dinge umbaue. Da ich mit EnableExplizit arbeite, habe ich jede Variable am Beginn des Main-files definiert bzw. globalisiert.
Nun kann es aber sein, daß einige der Variablen durch die Umbauarbeiten überflüssig geworden sind, weil sie nicht mehr benutzt werden.
Und dafür suche ich ein Tool. Eines, daß mir sagt: "Variable CountRow.l wurde definiert, aber nie benutzt."
[edit]: Jo, Kiffi kam mir zuvor... (blöd, wenn man während des Beitrag tippens mal wohin muß
)
Ich habe mich vermutlich mißverständlich ausgedrückt.

Ich habe einen größren Source, an dem ich einige Dinge umbaue. Da ich mit EnableExplizit arbeite, habe ich jede Variable am Beginn des Main-files definiert bzw. globalisiert.
Nun kann es aber sein, daß einige der Variablen durch die Umbauarbeiten überflüssig geworden sind, weil sie nicht mehr benutzt werden.
Und dafür suche ich ein Tool. Eines, daß mir sagt: "Variable CountRow.l wurde definiert, aber nie benutzt."
[edit]: Jo, Kiffi kam mir zuvor... (blöd, wenn man während des Beitrag tippens mal wohin muß

"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
So hier das sollte erstmal alle definierten Variabeln auflisten:
Gruß
Scarabol
PS:
Ich weiß das geht noch sicherer und besser, aber ich hoffe einfach mal auf Kurzer's guten Programmierstil
Code: Alles auswählen
CodeFile$ = "C:\test.pb"
If ReadFile(1, CodeFile$)
While Eof(1) = 0
Code$+ReadString(1)+Chr(10)
Wend
Else
Debug "Error 1"
End
EndIf
If Code$ = ""
Debug "Error 2"
End
EndIf
NewList Var.s()
Repeat
f = FindString(LCase(Code$), "define", pos)
If f
e = FindString(Code$, Chr(10), pos)
AddElement(Var())
Var() = Mid(Code$, pos, e-f)
pos+(e-f)+2
EndIf
Until f = 0
ForEach Var()
Debug Var()
Next
Scarabol
PS:
Ich weiß das geht noch sicherer und besser, aber ich hoffe einfach mal auf Kurzer's guten Programmierstil

Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Hallo Scarabol,
danke für Deinen Codeschnipsel - aber ganz so einfach ist es natürlich nicht.
Zum einen nutze ich Includes, die auch untersucht werden müssen. Zum anderen gibt es außer "Define" auch andere Schlüsselwörter, die etwas "initialisieren", was später evtl. doch nicht genutzt wird (Global, Dim, NewList...).
Und dann gibt es noch die Spezialfälle: Z.B. "Global Test$" -> die Varaible Test$ ist globalisiert, wird aber angenommen nirgendwo benutzt. Wenn nun aber in einer Procedure mit "Protected Test$" dummerweise die gleiche Variable lokal deklariert (und auch benutzt) wird, dann muß man das beachten. Das bedeutet, daß die Globale Test$ trotzdem nicht genutzt wird.
Also nix für mal in 5 Minuten gemacht.
danke für Deinen Codeschnipsel - aber ganz so einfach ist es natürlich nicht.
Zum einen nutze ich Includes, die auch untersucht werden müssen. Zum anderen gibt es außer "Define" auch andere Schlüsselwörter, die etwas "initialisieren", was später evtl. doch nicht genutzt wird (Global, Dim, NewList...).
Und dann gibt es noch die Spezialfälle: Z.B. "Global Test$" -> die Varaible Test$ ist globalisiert, wird aber angenommen nirgendwo benutzt. Wenn nun aber in einer Procedure mit "Protected Test$" dummerweise die gleiche Variable lokal deklariert (und auch benutzt) wird, dann muß man das beachten. Das bedeutet, daß die Globale Test$ trotzdem nicht genutzt wird.
Also nix für mal in 5 Minuten gemacht.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Schon klar, hehe
Hier noch ein Code mit dem du OnTheFly den Text aus dem Editor von PB lesen kannst...
Gruß
Scarabol
Hier noch ein Code mit dem du OnTheFly den Text aus dem Editor von PB lesen kannst...
Code: Alles auswählen
buffer = AllocateMemory(1024)
parent = FindWindow_(0, "Purebasic")
Debug parent
child = FindWindowEx_(parent, 0, "Scintilla", 0)
Debug child
SendMessage_(child, #WM_GETTEXT, 4000, buffer)
Debug PeekS(buffer)
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Sind es viele deklarierte Variablen?
Notfalls einfach eine Deklaration nach der anderen rauswerfen und schauen,
ob sich PureBasic mit EnableExplicit beim Kompilieren beschwert, dass
irgendwo etwas nicht deklariert wurde.
Zugegeben eine blöde Idee, aber du brauchst dafür auch nur eine Laufzeit
von O(n), wobei n die Anzahl deklarierter Variablen ist.
Notfalls einfach eine Deklaration nach der anderen rauswerfen und schauen,
ob sich PureBasic mit EnableExplicit beim Kompilieren beschwert, dass
irgendwo etwas nicht deklariert wurde.

Zugegeben eine blöde Idee, aber du brauchst dafür auch nur eine Laufzeit
von O(n), wobei n die Anzahl deklarierter Variablen ist.