Emne på «Brukerdiskusjon:Jeblad»

Breakpoints i Lua-modulene

4
Sammendrag av Jeblad

Egentlig en diskusjon om mangel på skikkelig debugger for Lua.

Asav (diskusjonbidrag)

Jeg har ikke klart å finne ut av hvordan man kan sette breakpoints i modulene. Er det mulig, og hvordan gjør man det evt.? På forhånd takk!

Jeblad (diskusjonbidrag)

Du kan debugge Lua med breakpoints, men da må du sette opp et kjøremiljø på lokal maskin. Det er nokså knotete. Det er ikke-trivielt å sette opp et fullt utviklingsmiljø når du skal ha med både Commons, Wikibase repo, og en lokal Wikibase client. I praksis er det ingen som gjør det kun for å få til debugging.

(Istedenfor å spinne opp en brukerspesifikk debugger i en sandkasse valgte de å lobotomere Lua. Veldig smart.)

Alternativet er å debugge med mw.dumpObject() eventuelt mw.log() og mw.logObject(). Det funker på kall fra consol-linja, men ikke hvis du vil vise en side. Utviklingsmiljøet on-wiki er for å si det rett ut; helt rævva.

  • Det finnes ikke noen on-wiki debugger
  • Det finnes ingen (skikkelig) on-wiki linter
  • Det finnes ingen (skikkelig) on-wiki testmiljø
  • Det finnes ingen (fungerende) on-wiki dokumentgenerator

Legg til at dirty-marking av maler som bruker moduler bare fungerer sånn delvis, så endringer slår ikke gjennom. Bruk forhåndsvisning av aktuelle sider, og vær forberedt på å gjøre null-edit hvis du endrer en modul som andre moduler importerer via «require».

Det er lett å anta at systemmeldinger i Lua (mw.message.*()) fungerer som andre systemmeldinger, men veldig lite fungerer. Innfylling av argumenter fungerer, men det er alt. Funksjoner som plural og gender fungerer ikke.

Det er en hel masse fra Language-systemet til Mediawiki som mangler.

Asav (diskusjonbidrag)

Ja, jeg prøvde mw.log() m.m., både i selve koden og i det jeg antar skal være konsollen, men uten hell. Hvis det ikke funker med forhåndsvisning av sidene koden skal betjene, betyr det i praksis at det ikke funker i det hele tatt, antar jeg. Jeg har egentlig nok med å kode Python, som jeg ikke kan fordra, for Blender 3D, som jeg derimot er svært glad i, så det er egentlig begrenset hvor mye arbeide jeg vil legge i dette, ikke minst med tanke på at et svært høylydt mindretall ikke ønsker disse referansene fikset i det hele tatt. Jeg tror formateringsfeilen opptrer i Modul:Citation/CS1. Jeg la inn et nytt alias i Modul:TranslateTemplate/configuration/Cite web og gjorde et halvhjertet forsøk på å rette opp feilen i Modul:Citation/CS1/Sandkasse, men uten å lykkes; det er ikke så greit uten reelle debuggingmuligheter.

Jeblad (diskusjonbidrag)

Det er flere som er litt oppgitt over manglende debugging. Hadde loggen blitt vist når en gjør preview så hadde det vært en enorm hjelp. Det er et subsystem for å vise loginfo fra renderen, og om dette var slått på under preview fra Lua-siden så ville det vært en enorm hjelp. Da hadde en hott noe som lignet en debugger, men uten breakpoints. Isteden ville en hatt «reportpoints».

Et triks for å få til noe av det samme er å sette inn error(). Da kan en sende med data en vil undersøke nøyere, typisk ved noe ala

error('foo: '..mw.dumpObject(foo))

Dette vil gi en throw med variabelens innhold. Dette vil dukke opp ett eller flere steder på siden en gjør preview av, men ofte ikke verre enn at en finner ut hva variabelen inneholder. Ofte er det lurt å slenge på noen ekstra tester for å begrense mengden feilmeldinger.