Na navigaci | Klávesové zkratky

Nevěřím statistikám, které si sám nezfalšuji

Václav Novotný připravil infografiku porovnávající aktivitu vývojářů v Nette a Symfony. Rád a zvědavě se podívám, leč bez vysvětlení metriky umí být čísla krutě zrádná. S nadsázkou: při určitém workflow a naivním měření mohu ve statistikách vyjít jako autor 100 % kódu, aniž bych naprogramoval jedinou řádku.

I při přímočarých workflow je poměřování množství komitů zákeřné. Není komit jako komit. Pokud přidáte pětici důležitých komitů a zároveň deset lidí vám opraví překlepy v komentářích, jste co do počtu komitů autorem třetiny kódu. Což ale není pravda, jste autorem celého kódu, opravy překlepů se za autorství (jak ho obvykle vnímáme) nepovažují.

V GITu dále věc komplikují „merge-commits“. Pokud někdo připraví zajímavý komit a vy ho schválíte (tedy vznikne ještě merge-commit), jste autorem poloviny komitů. Ale jaký je vlastně skutečný podíl? Obvykle nulový, schválení je otázka jednoho kliknutí v GitHubu, byť někdy diskusí strávíte víc času, než kdybyste si kód napsal sám, ale neuděláte to, protože potřebujete vývojáře vychovávat.

Proto místo počtu komitů je vhodnější analyzovat jejich obsah. Nejjednodušší je brát v úvahu počet změněných řádek. Ale i to může být zavádějící: pokud vytvoříte 100 řádkovou třídu a někdo jiný soubor s ní jen přejmenuje (či rozdělí na dva), „změnil“ vlastně 200 řádků a opět jste autorem třetiny.

Pokud týden ladíte u sebe několik komitů a až potom je pošlete do repozitáře, jste v počtu změněných řádek v nevýhodě oproti tomu, kdo je pošle hned a teprve poté dolaďuje následujícími komity. Nebylo by tedy od věci analyzovat třeba až souhrny za celý den. Je třeba odfiltrovat i údržbové komity, zejména ty, které mění u všech souborů letopočet nebo verzi v hlavičce.

Do toho přicházejí ještě situace, kdy se automatizovaně kopírují komity z jedné větve do jiné, nebo do jiného repozitáře. Což de facto znemožňuje dělat jakékoliv globální statistiky.

Analýza jednoho projektu je věda, natož ta srovnávací. Docela mi to připomíná skvělý analytický kvíz od Honzy Tichého.


Související: Jak se počítá „Hall of fame“ na nette.org

Mohlo by vás zajímat

Komentáře

  1. David Grudl #1

    avatar

    Měření přidaných a smazaných řádků poskytuje GitHub (příklad). Nezahrnuje do toho merge commity vytvořené GitHubem, ale třeba přejmenovaný 100 řádkový soubor bere jako 200 změněných řádek.

    Další statistiky poskytuje třeba TortoiseGit (Show log / Statistics), zajímavá by byla „Percent of authorship“, ale nedohledal jsem, jak to počítají.

    před 11 lety
  2. Chemická tabulka #2

    avatar
    před 11 lety | reagoval [4] David Grudl
  3. Jirka #3

    Jedna část infografiky je podíl autorství, druhá pak rozdíl v počtu commitů – 4.125 vs 16.382. Opět předpokládám zkreslený kvůli rozdílným workflow.

    Rozdíl, jak rychle se dané frameworky vyvíjejí, by mě zajímal ještě víc. Tady by asi stačilo vzít počet řádků (vypustit komentáře a třeba i prázdné řádky) v čase A (nejbližší commit k tomuto datu), počet řádků v čase B a zanést do grafu. Třeba i vývoj kolik řádků kódu přibude každým rokem. A pak teda ještě absolutní počet tříd. Následně porovnat mezi jednotlivými PHP frameworky. Tohle absolutní porovnání řádků smaže nejrůznější bugfixy, opakovaný refactoring špatně navržených částí, atd.

    Je to jen nápad, jak by šlo porovnat, jak moc se za posledních X let daný framework vyvinul. A kolik funkcionality (zřejmě odvozené z počtu tříd nebo i absolutního počtu metod) přidal.

    před 11 lety
  4. David Grudl #4

    avatar

    #2 Chemická tabulka, Ten odkaz jsem do článku nedával, protože sice uvádí přesných 83 % versus 73 %, ale nikdo netušíme čeho procent 😉

    před 11 lety
  5. Václav Novotný #5

    avatar

    Davide, díky za reakci. Můj původní záměr byl ten, že ukáži pár základních čísel a nebudu je moc komentovat, aby to nevypadalo, že chci někomu stranit. Možná to nebylo úplně šťastné řešení.

    Já osobně jsem si výsledky interpretoval takto:

    1. Oba frameworky udělaly za poslední 4 roky hodně práce (ať už mergují nebo i commitují nějaký kód, obojí je pro mě hodnotná práce)
    2. Oba frameworky stojí na jednom leadrovi a moc komunity se trochu přeceňuje.
    3. Nette, na rozdíl od Symfony, rychleji inkrementuje verze.
    4. Symfony má několikanásobně větší základnu přispěvatelů.

    Víc v tom nevidím. Uznávám, že takto vržená čísla bez dalšího komentáře mohou vést k rychlým závěrům, ale osobně nepřemýšlím stylem „Symfony má 4× více kódu, takže je 4× lepší“.

    Jsem rád, že jsi nastínil, co dál změřit, abychom dostali více informací.

    před 11 lety

Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.


phpFashion © 2004, 2024 David Grudl | o blogu

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.