Manual:Pre-commit checklist/cs

From Linux Web Expert

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Toto je pokus o vytvoření seznamu kontrol, který se použije před odevzdáním. Některé z nich duplikují to, co je v konvencích kódování, ale mají formu rychlých kontrol. Tento kontrolní seznam je ve stejném duchu jako The Checklist Manifesto. Některé z nich se mohou zdát hloupé (např. zeptat se lékaře "umyl sis ruce?"), ale jejich účelem je vyhnout se problémům, které lze přehlédnout.

Back-end (PHP) (server)

  • Spustil se váš kód pod E_STRICT bez chyb?[1]
  • Porušil váš kód některý z testů jednotek? Podívejte se na stránku Příručka:Testování PHP kódu .
  • Otestovali jste všechny výstupní body z vašeho kódu?
  • Použili jste k odsazení tabulátory místo mezer?
  • Odstranili jste nadbytečný, komentovaný ladicí kód? (např. #var_dump( $array ); a/nebo #die();)
  • Pokud jste vytvořili novou funkci, zadokumentovali jste parametry funkce a co vrací pomocí Doxygen?
  • Vytvořili jste nějaké identifikátory, které nepoužívaly camelCase (tj. podtržítka)?
  • Je testována každá výjimka?
  • Pokud máte více návratových bodů, jsou testovány?
  • Existuje každá zpráva , kterou jste vytvořili v languages/i18n/en.json, máte dokumentaci ke zprávě v languages/i18n/qqq.json?
  • Je každé použití fopen(), fread() atd. zkontrolováno na chyby nebo problémy?
  • Použili jste příznaky t nebo b na fopen(), abyste zajistili kompatibilitu Windows?
  • Použili jste správné výstupní funkce? echo by se neměl téměř nikdy používat.
  • Použili jste správné ukončovací funkce? exit by se neměl téměř nikdy používat.
  • Použili jste tam, kde je to vhodné, funkce obalu MediaWiki místo jejich ekvivalentů PHP?
  • Pokud jste k parserTests.txt přidali nový test, dali jste mu nový název?
  • Pokud jste přidali nový háček, zdokumentovali jste to ?

Testování

Při přidávání funkcí je důležité ověřit, zda jste neporušili stávající funkce. Máme tři druhy testů, které můžete pro backendový kód napsat:

  • Parser tests - Otestujte výstup analyzátoru pro wikitext (viz tests/parser/parserTests.php). Zkuste spustit php tests/parser/parserTests.php --quick --quiet a uvidíte, jak to funguje. Vše by mělo teoreticky projít. Můžete přidat nové testy nebo opravit stávající úpravou tests/parser/parserTests.txt.
  • Testy jednotek (PHPUnit) - Nachází se v adresáři tests/phpunit. Obvykle se spouštějí pomocí příkazu composer phpunit:entrypoint vyvolaného z adresáře MediaWiki. Tyto testy také zahrnují běžné testy analyzátoru, ačkoli parserTests.php pravděpodobně funguje rychleji. Přečtěte si Příručka:Testování jednotek PHP pro více informací o tom, jak nastavit PHPUnit a další podrobnosti o tom, jak se používá v MediaWiki.
  • Selenium - testy jsou v adresáři tests/selenium.

Každopádně, pokud nemůžete napsat automatický test, proveďte ruční testování. Pokud způsobujete rozbití příliš často, lidé se na vás budou zlobit.

Front-end (klient)

  • Testováno ve skutečném prohlížeči? Nejmenší změny by mohly rozbít věci, které nejsou zřejmé. Otevřete prohlížeč, procházejte se, možná proveďte úpravy, přihlaste se, přidejte stránku do seznamu sledovaných.
  • Porušil váš kód některý z testů jednotek? Podívejte se na stránku Příručka:Testování jednotek JavaScriptu
  • Bude to fungovat alespoň v prohlížečích, které podporujeme pro funkce třídy A (zkontrolujte Compatibility#Browsers )?
  • Existují nějaké implikované globální hodnoty jiné než jQuery nebo mediaWiki? Nemělo by tam být (ani ne $)

Automatické testování

Když jsou změny odeslány do Gerrit a schváleny, provádí Jenkins některé testy na většině úložišť. Před provedením opravy byste měli tyto testy spustit lokálně. Mnoho rozšíření implementuje standardní Průběžná integrace/vstupní body , takže před potvrzením můžete spustit npm test a grunt test.

Ve skutečnosti nebudete vždy ručně testovat každou změnu. Záleží na tom, jak velké selhání může být a zda pro změnu existují dobré jednotkové testy.

  • Ověřuje to (nebo jste to alespoň spustili) JSHint nebo JSLint? (check recommended settings )
  • Unit testy (QUnit): Nachází se v adresáři tests/qunit. Obvykle se spouštějí z prohlížeče prostřednictvím Special:JavaScriptTest/qunit. Přečtěte si Příručka:Testování jednotek JavaScriptu pro více informací o tom, jak to povolit, jak to funguje a různé možnosti, které jsou k dispozici.


Poznámky pod čarou

  1. Vložte error_reporting(-1); do vstupního souboru. Více na stránce Příručka:Jak řešit chyby .