Warnungen wegen unbenutzter Parameter
Warnungen wegen unbenutzter Parameter
Hallo, in meinem Programm wird (seit kurzem = Umstieg auf Lazarus 3.4?) eine Menge Warnungen erzeugt wegen formal notwendiger aber ungenutzter Parameter.
Beispiel
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
Hier wird CloseAction angemeckert. Für andere Prozeduren aber selbst manchmal Sender.
Wie kann ich das elegant lösen? Ich möchte nicht so viel Output vom Compiler, sondern mich auf das Wesentliche konzentrieren. Und ja, solche Warnungen bezüglich definierter aber unbenutzter Variablen sollen sonst erhalten bleiben
Beispiel
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
Hier wird CloseAction angemeckert. Für andere Prozeduren aber selbst manchmal Sender.
Wie kann ich das elegant lösen? Ich möchte nicht so viel Output vom Compiler, sondern mich auf das Wesentliche konzentrieren. Und ja, solche Warnungen bezüglich definierter aber unbenutzter Variablen sollen sonst erhalten bleiben
-
- Lazarusforum e. V.
- Beiträge: 280
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: Warnungen wegen unbenutzter Parameter
ich hab' leider keine Antwort, aber mich stört das auch; ich möchte ja nicht die ganzen Meldungen weghaben, bei meinen eigenen Funktionen finde ich die ja recht nützlich.
Dazu paßt auch:
deprecated ist auch so ein Fall; bei meinen Funktionen wäre es wünschenswert, diese anzuzeigen, aber in externen Funktionen (hier Synapse) eher unnötig.
Dazu paßt auch:
Code: Alles auswählen
synautil.pas(609,51) Warning: Symbol "TimeSeparator" is deprecated
just my two Beer
- corpsman
- Lazarusforum e. V.
- Beiträge: 1619
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: Warnungen wegen unbenutzter Parameter

ich glaube nicht dass die IDE das so allgemein selbst entscheiden kann, ich finde Warnung im Allgemeinen immer gut.
Eine Lösung könnte aber sein, dass die IDE sich Pro Projekt merkt welche Warnungen OK (= unterdrückt werden können) sind. Bei Reviews wird das ja auch so gemacht.
=> Daraus ergibt sich dann der Feature Request dass man das "verstecken" von Warnungen individuell im Projekt mit hinterlegen kann.
Quasi die Erweiterung zu dem hier
--
Just try it
Just try it
Re: Warnungen wegen unbenutzter Parameter
Es wird immer wieder von Warnungen gesprochen, das bei "FormClose" ist aber ein Hint (Hinweis).
Das sollte man schon unterscheiden.
Hints sind meistens nur "Geplapper".
Diese Hinweise kann man ja projektbezogen abschalten. Complilereinstellungen -> Ausführlichkeit.
Die ernsteren Warnungen bekommt man dann trotzdem.
Ich ignoriere die einfach.
Das sollte man schon unterscheiden.
Code: Alles auswählen
unit1.pas(15,46) Hint: Parameter "CloseAction" not used
Diese Hinweise kann man ja projektbezogen abschalten. Complilereinstellungen -> Ausführlichkeit.
Die ernsteren Warnungen bekommt man dann trotzdem.
Ich ignoriere die einfach.
-
- Beiträge: 607
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Warnungen wegen unbenutzter Parameter
Hallo,
du hast auch noch die Möglichkeit einen Rechtsklick auf den Hinweis zumachen. Es öffnet sich dann ein Popup dort kannst du auswählen wie du den Hinweis unterdrücken möchtest.
Viele Grüße
Bernd
du hast auch noch die Möglichkeit einen Rechtsklick auf den Hinweis zumachen. Es öffnet sich dann ein Popup dort kannst du auswählen wie du den Hinweis unterdrücken möchtest.
Viele Grüße
Bernd
Re: Warnungen wegen unbenutzter Parameter
Wie man das auf Ebene einer Unit oder eines Projekts aus der IDE heraus machen kann, ist ja jetzt schon erklärt. Gerade für Meldungen, die ich grundsätzlich nicht zu sehen brauche, gibt es aber noch einen praktischen weiteren Weg und zwar den Parameter '-vmXXX' , den man beliebig oft in seiner .fpc.cfg verwenden kann.
Das schöne ist, dass ich das dann nicht in jeder meiner IDEs machen muss, sondern nur einmal in meiner .fpc.cfg, die sich alle meine IDEs teilen.
Und falls ihr wissen wollt, welche Compiler-Ausgabe mit welcher Nummer unterdrückt wird, hilft die Datei "fpcsrc/compiler/msgtxt.inc", denn da sind die allesamt aufgelistet:
Code: Alles auswählen
# ...
# Display Info, Warnings and Notes
-viwn
# Suppress unnecessary hints, notes and warnings
-vm5025 # Suppress "Local variable xxx not used"
-vm5026 # Suppress "Value parameter xxx is assigned but never used"
# ...
Und falls ihr wissen wollt, welche Compiler-Ausgabe mit welcher Nummer unterdrückt wird, hilft die Datei "fpcsrc/compiler/msgtxt.inc", denn da sind die allesamt aufgelistet:
Code: Alles auswählen
...
'05023_H_Unit "$1" not used ','in $2'#000+
'05024_H_Parameter "$1" not used'#000+
'05025_N_Local variable "$1" not used'#000+
'05026_H_Value parameter "$1" is assigned but never used'#000+
'05027_N_Local variable "$1" is assigned but never used'#000+
'05028_H_Local $1 "$2" is not used'#000+
'05029_N_Private fiel','d "$1.$2" is never used'#000+
'05030_N_Private field "$1.$2" is assigned but never used'#000+
...
Re: Warnungen wegen unbenutzter Parameter
Vielen Dank für eure Antworten. Am besten für mich erscheint mir, die Hints auszublenden. Ich fürchte zwar, daß ich mir da selbst bestimmt wieder zu viele Hints wegnehme und dann irgendwann mal was Nützliches übersehe, aber so in dieser Masse nervt mich zB dieser Hint mit dem Parameter. Die Prozedur hat nicht zufällig eine überlagerte (heißt das so?) ohne den CloseAction... Nein war nur Spaß.
Nur zur Rückfrage, dieses Ausblenden mache ich dann auf Projektebene. oder? Wenn ich es in Projekt 1 ausblende, ist der Hint generell in Projekt 2 wieder da oder nicht?
Nur zur Rückfrage, dieses Ausblenden mache ich dann auf Projektebene. oder? Wenn ich es in Projekt 1 ausblende, ist der Hint generell in Projekt 2 wieder da oder nicht?
Re: Warnungen wegen unbenutzter Parameter
Ja, wie gesagt: es sei denn, du machst es in den globalen Compiler-Einstellungen der Lazarus-Umgebung oder eben in der Datei .fpc.cfg in Deinem Home-Verzeichnis (bzw. dem jeweiligen Basis-Verzeichnis deiner fpcupdeluxe-Installationen)...Nur zur Rückfrage, dieses Ausblenden mache ich dann auf Projektebene. oder? Wenn ich es in Projekt 1 ausblende, ist der Hint generell in Projekt 2 wieder da oder nicht?
- af0815
- Lazarusforum e. V.
- Beiträge: 6771
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Warnungen wegen unbenutzter Parameter
Ich blende Hints generell nicht aus (bis auf eine Ausnahme - mit dem inlining) sondern lasse die mit {%H-} bewusst an der Stelle unterdrücken. Damit sehe ich auch, ob das gewollt oder nicht ist.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 54
- Registriert: Do 25. Jan 2024, 08:33
- OS, Lazarus, FPC: Win/macOS (L trunk FPC trunk)
- CPU-Target: 32+64
Re: Warnungen wegen unbenutzter Parameter
So sehe ich das auch!
Manchmal habe ich einfach nur schon eine Methode angelegt, aber noch nicht fertig implementiert, dann hilft dieser Hinweis, dieses Übersehen wiederzufinden.
Leider funktioniert {%H-} nicht für LazBuild, sondern nur die IDE, aber immerhin
Manchmal habe ich einfach nur schon eine Methode angelegt, aber noch nicht fertig implementiert, dann hilft dieser Hinweis, dieses Übersehen wiederzufinden.
Leider funktioniert {%H-} nicht für LazBuild, sondern nur die IDE, aber immerhin

Re: Warnungen wegen unbenutzter Parameter
Ja gut, aber die von mir verwendeten Methoden, wo der Sender oder CloseAction als unbenutzt "erwähnt" werden, sind Systemmethoden und keine eigenen. Ich würde diese Meldungen jetzt nur nicht bei jedem Compile sehen wollen müssen. Aber gut, mit dem Ausblenden kann ich mir jetzt helfen.CCRDudeLaz hat geschrieben: Di 16. Jul 2024, 12:09 So sehe ich das auch!
Manchmal habe ich einfach nur schon eine Methode angelegt, aber noch nicht fertig implementiert, dann hilft dieser Hinweis, dieses Übersehen wiederzufinden.
Leider funktioniert {%H-} nicht für LazBuild, sondern nur die IDE, aber immerhin![]()