percritic ist doof... ;)

Begonnen von amenomade, 22 Mai 2020, 10:34:42

Vorheriges Thema - Nächstes Thema

amenomade

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.

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Christoph Morrison

#1
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).

rudolfkoenig

Zitatcallback => sub($$$){ my ($err, $errcode) = @_;
Bevor das jemand kopiert: Callback wird mit ($hash, $err, $data) aufgerufen.

amenomade

Oops, danke! Jetzt verstehe ich etwas ;)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

#4
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
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus