FHEM Forum

FHEM - Entwicklung => FHEM Development => Perl Ecke => Thema gestartet von: amenomade am 22 Mai 2020, 10:34:42

Titel: percritic ist doof... ;)
Beitrag von: amenomade am 22 Mai 2020, 10:34:42
Always unpack @_ first at line 248, column 1.  See page 178 of PBP.  (Severity: 4)

Zeile 248:
sub freeairconnect_Set
{
  my ($hash, $name, $command, $parm0) = @_;



Aber nur weil später folgendes kommt, meckert er:
        HttpUtils_NonblockingGet({
          url => $url,
          noshutdown => 1,
          hash => $hash,
          method => 'POST',
          data => $postdata,
          header => $header,
          callback => sub($$$){ my ($err, $errcode) = @_;
                                Log3 $name, 5,"ERR:$err DATA:".length($errcode);
                                $errcode =~ s/\r|\n//gx;
                                if ($errcode ne "1") {
                                  Log3 $name, 3, " Error POST ".$errcode;
                                } else {
                                  Log3 $name, 5, "Posted successfully";
                                }
                              } ,
        });

obwohl da auch in der callback sub, @_ ordentlich entpackt wird.
Er sieht @_ irgendwo in der sub, und glaubt, es wäre die Benutzung vom selben @_.

Kommentiere ich diese HttpUtils Zeilen aus, sagt er nichts mehr.

Titel: Antw:percritic ist doof... ;)
Beitrag von: Christoph Morrison am 22 Mai 2020, 13:31:25
Viel "besser" finde ich ja, dass du zwar den nutzlosen Prototypen aus der Doku kopiert hast, aber dann nur zwei der drei Parameter überhaupt benutzt. Nutzlos kann man wohl doch steigern kann ;-)

Finde das Konstrukt mit der anonymen Subroutine nur wenig leserlich.

Mit ## no critic (...) kann man Fehlmeldungen gezielt abschalten (und mit ## use critic wieder anschalten).
Titel: Antw:percritic ist doof... ;)
Beitrag von: rudolfkoenig am 22 Mai 2020, 14:09:49
Zitatcallback => sub($$$){ my ($err, $errcode) = @_;
Bevor das jemand kopiert: Callback wird mit ($hash, $err, $data) aufgerufen.
Titel: Antw:percritic ist doof... ;)
Beitrag von: amenomade am 22 Mai 2020, 17:51:50
Oops, danke! Jetzt verstehe ich etwas ;)
Titel: Antw:percritic ist doof... ;)
Beitrag von: amenomade am 22 Mai 2020, 18:27:17
Aha! Interessant. Jetzt habe ich den Prototyp der callback Funktion (ja, Prototyp aus der Doku... genauer gesagt, aus dem Modul selbst) Zeile 298 und Zeile 340 weggenommen (und die 3 Parameter richtig entpackt) .

Und er meckert nicht mehr wegen Zeile 248 (ohne no critic). Das heisst, er meckert ggf zurecht, aber dann an der falschen Stelle