ich vermisse einen Warning [gelöst]

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
siro
Beiträge: 732
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

ich vermisse einen Warning [gelöst]

Beitrag von siro »

Hallo zusammen,

beim Umsetzen eines C-Codes nach Pascal ist mir grade etwas aufgefallen,
Ist der Rückkabewert einer Funktion evtl. undefiniert, gibt es keinen Warning.

Folgender Code ist eindeutig und es gibt auch den Warning:

Code: Alles auswählen

function Test(x:Integer):Integer;
begin
end; 
Warning: Function result does not seem to be set

Bei folgendem Code kann das Ergebnis jedoch undefiniert sein,
da bekomme ich keine Rückmeldung.
Könnte das der Compiler überhaupt feststellen ? (statische Code Analyse)

Code: Alles auswählen

function Test(x:Integer):Integer;
begin
  if x = 13 then result:=1;
end;
Bei den Projekt Einstellungen "Meldungen" habe ich ALLE eingeschaltet.
Tests ergaben, dass das result dann 0 ist.
Ist das zufällig oder generell so ?

Lazarus 2.2.0 (rev lazarus_2_2_0) FPC 3.2.2 x86_64-win64-win32/win64
Zuletzt geändert von siro am Mi 20. Dez 2023, 06:56, insgesamt 3-mal geändert.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

wp_xyz
Beiträge: 4893
Registriert: Fr 8. Apr 2011, 09:01

Re: ich vermisse einen Warning

Beitrag von wp_xyz »

Ja, ich kann das bestätigen. Das wundert mich schon sehr, denn normalerweise ist der Compiler sehr pingelig und meckert schon fast zu viel. Aber gerade dieser kapitale Bock geht ihm durch die Lappen? Vielleicht kann PascalDragon etwas dazu sagen. Oder du schreibst einen FPC-Bug-Report.

PascalDragon
Beiträge: 834
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: ich vermisse einen Warning

Beitrag von PascalDragon »

wp_xyz hat geschrieben:
Fr 15. Dez 2023, 11:40
Ja, ich kann das bestätigen. Das wundert mich schon sehr, denn normalerweise ist der Compiler sehr pingelig und meckert schon fast zu viel. Aber gerade dieser kapitale Bock geht ihm durch die Lappen?
Weil das zu einer der komplexeren Disziplinen in der Compilerentwicklung gehört.
wp_xyz hat geschrieben:
Fr 15. Dez 2023, 11:40
Vielleicht kann PascalDragon etwas dazu sagen. Oder du schreibst einen FPC-Bug-Report.
Kompiliere mit -Oodfa, was die Data Flow Analysis einschaltet. Dann bekommt man für das genannte Beispiel eine Warnung. Da die DFA teuer ist (ein Großteil des Real World Codes besteht eben nicht nur aus einer so einfachen If-Bedingung), ist sie nur als Teil von -O3 aktiviert.

Es kann aber auch noch Situationen geben, wo die DFA etwas nicht korrekt findet. Sowas sollte dann als Bug gemeldet werden.
FPC Compiler Entwickler

siro
Beiträge: 732
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: ich vermisse einen Warning [gelöst]

Beitrag von siro »

Ersteinmal Danke für das Testen wp_xyz

und natürlich Dank an PascalDragon:
Allein die Projekteinstellungen Optimierung O3 löst tatsächlich schon das Problem:
Warning: Function result variable does not seem to be initialized

Ich würd sowas auch nicht als Bug bezeichnen, sondern als "nice to have"
Den Bug hab ich ja verzapft, wenn ich solchen Code schreibe... :wink:
Ist natürlich super wenn der Compiler mich darauf hinweist.

Ich musste erstmal gucken wo ich diese Option finde: OoDFA
hier:

Projekteinstellungen
OoDFA.png
OoDFA.png (74.95 KiB) 4186 mal betrachtet
Problem gelöst, Vielen Dank.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Antworten