Autor Thema: percritic ist doof... ;)  (Gelesen 333 mal)

Offline amenomade

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5602
percritic ist doof... ;)
« 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.

« Letzte Änderung: 22 Mai 2020, 10:42:00 von amenomade »
FHEM 5.9 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Online Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1127
  • Maintainer von 12 Modulen + holiday-Files
    • Private Website
Antw:percritic ist doof... ;)
« Antwort #1 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).
« Letzte Änderung: 22 Mai 2020, 14:16:41 von Christoph Morrison »
Maintainer von:
holidays · 59_Twilight · contrib/sacha_gloor · Buienradar

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22328
Antw:percritic ist doof... ;)
« Antwort #2 am: 22 Mai 2020, 14:09:49 »
Zitat
          callback => sub($$$){ my ($err, $errcode) = @_;
Bevor das jemand kopiert: Callback wird mit ($hash, $err, $data) aufgerufen.

Offline amenomade

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5602
Antw:percritic ist doof... ;)
« Antwort #3 am: 22 Mai 2020, 17:51:50 »
Oops, danke! Jetzt verstehe ich etwas ;)
FHEM 5.9 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Offline amenomade

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5602
Antw:percritic ist doof... ;)
« Antwort #4 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
« Letzte Änderung: 22 Mai 2020, 18:35:23 von amenomade »
FHEM 5.9 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

 

decade-submarginal