Coverage Profiler

Co je to?

Coverage Profiler je nástroj pro zpracování logovacího souboru, vytvořeného příkazem SET COVERAGE TO, do "čitelnější" podoby. Zpracované údaje se ukládají do vlastního souboru s příponou "cvp". Po zpracování se lze na výsledek dívat z hlediska buď zdrojů nebo průběhu. Kritické body lze vyhledávat dle času náročnosti nebo počtu průběhu na proceduru a řádek.

Uživatelské grafické rozhraní (GUI) - základ

Zpracování log souboru

Nejdříve se vygenerovaný soubor musí zpracovat. K tomu a slouží volba "Soubor->Nový..." Po výběru log, nebo txt, souboru dojde k jeho zpracování. Postupně se načítají řádky, registrují se jednotlivé zdroje. Po zpracování dochází ke kontrole zdrojů, tedy zda vůbec existují - chybějící zdroje lze určit dodatečně, a následně se načítá jejich zdrojový kód - jen ten který doopravdy proběhl.

Záložka "Zdroje"

Tato záložka slouží především pro sumarizovaný náhled na průběhy. Ve stromové hierarchii jsou zdroje rozděleny dle typů (programy, vcx knihovny, formuláře, atd.) na jednotlivé soubory. VCX knihovny se rozpadají na třídy, objekty a metody; formuláře na objekty a metody; programy na procedury, třídy, objekty a metody.
Rozbalovací seznam "Voláno z" obsahuje seznam metod odkud je aktuálně vybraná metoda volána. Je-li však metoda volána z více míst je jako první záznam "Globální pohled". Při jeho vybrání je v mřížce zobrazen kód za všechny průběhy. Po výběru konkrétní nadřazené metody se povolí číselník (spinner) umístění vpravo od rozbalovacího seznamu, ten umožňuje přepínat jednotlivé průběhy. Vlastní zdrojový kód zobrazuje mřížka - v prvním sloupci je číslo řádku, ve druhém počet průběhů daného řádku, ve třetím první strávený čas na řádku, ve čtvrtém průměrný strávený čas na řádku a v posledním sloupci je zobrazen obsah řádku.
Po mřížkou jsou ještě tři údaje:
Čas trvání celé M/P
Celkový čas trvání metody/procedury. U vnořených M/P se zobrazují celkem tři údaje; čas na řádku z nadřazené M/P, čas M/P a jejich rozdíl.
Čas trvání vybraných řádků
Celkový čas vybraných řádků
Procentuální podíl
Procentuální podíl času M/P vůči celkému času sledování
Jednotlivé řádky v mříce se dají označit pomocí klávesy [spacebar], nebo pomocí voleb v nabídce "Úpravy"; Označit řádek, Odznačit všechny řádky a Invertovat označení řádků.

Záložka "Hierarchie dle průběhu"

Strom zobrazuje průběh kódu v závislosti na čase, tedy přesně tak jak proběhl. Mřížka vedle zobrazuje zdrojový kód stejným způsobem jako mřížka na záložce "Zdroje". Při pohybu v mřížce se dá pohybovat i vertikálním směrem - klávesou "Enter" se vnořuje do další úrovně, na řádku se žlutým podkladem, a klávesou "BackSpace" je vynoření do nadřazené úrovně. V případě volání funkce ve smyče nebo více funkcí na řádku a přechodu do další úrovně se zobrazí dialog ve kterém je v rozbalovacím seznamu seznam volaných funkcí a v mřížce jednotlivá volání (čas a pořadí).

Záložka "Analýza"

Aby bylo možno najít kritické body rychleji a ve větším množství než jen pouhým procházením kódu, lze vyhledávání realizovat pomocí jednoduchých pravidel. Ta umožňují vyhledávat řádky nebo procedury, dle časové náročnosti nebo počtu průběhů, s definicí limitu - pod, nad a interval. V případě vyhledávání dle času lze nejdříve požadovat sumarizaci času řádky/metody (zaškrtávátko "Sumarizovat") a pak na tento výsledek aplikovat pravidlo. Výsledek této analýzi lze buď vytisknout nebo exportovat do XML.
KritériumPřesměrování
Řádek, čas vykonánízáložka "Hierarchie dle průběhu"
Řádek, čas vykonání, sumarizacezáložka "Zdroje"
Řádek, počet vykonánízáložka "Zdroje"
Metoda/procedura, čas vykonánízáložka "Hierarchie dle průběhu"
Metoda/procedura, čas vykonání, sumarizacezáložka "Zdroje"
Metoda/procedura, počet vykonánízáložka "Zdroje"

Záložka "Statistika"

Pokud chcete zjistit nějaké statistické informace, pak je zde tato záložka. Po kliknutí na tlačítko "Načíst" se zjišťují následné informace Tlačítko s modrou šipkou zajišťuje aktivaci příslušné záložky:
Přesměrování
Nejvíce volaný řádekzáložka "Zdroje"
Nejvíce časově náročný řádekzáložka "Hierarchie dle průběhu"
Nejvíce volaná metoda/procedurazáložka "Zdroje"
Nejvíce časově náročná metoda/procedurazáložka "Hierarchie dle průběhu"
Načtená data lze vytisknout nebo exportovat do XML souboru.

Uložení, otevření...

Uložení se provede pomocí volby "Soubor->Uložit..." a opětovné otevření pomocí volby "Soubor->Otevřít..." Krom souboru s příponou CVP lze otevřít i soubor s příponou CVI. Je to speciální indexový soubor vytvořený exportem který obsahuje číslo verze CVP souboru a unikátní identifikátor. Vlastní data jsou uloženy v externích souborech.

GUI - další volby

Hledání

Dialog pro hledání umožňuje hledat buď název metody či procedury nebo jakýkoliv text. Při hledání textu lze pomocí zaškrtávátka "Pouze řádky jež se vykonaly" eleminovat při hledání nevykonané řádky. Rozbalovací seznam "Kde" umožňuje vybrat v jakém otevřeném CVP souboru bude probíhat hledání. Pokud se hledá metoda/procedura (vyhledává se zleva), pak ve výsledném seznamu je pouze její název (i s objektovou cestou) a pořadí. Když se hledá text (obsaženo) pak ve výsledném seznamu je i číslo řádku a jeho obsah. Při poklepání na položku v seznamu dojde k aktivaci záložky "Zdroje" a aktivaci vybrané metody/procedury, v případě poklepání na položku reprezentující řádek, se v mřížce vybere i příslušný řádek.

Vlastnosti

Dialog "Vlastnosti" slouží pro zobrazení informací o CVP/CVI souboru. Krom verze CVP/CVI souboru je vidět použitý pakovací program, pak seznam tabulek jež se mohou uložit (jinak se generují při každém otevření CVP/CVI souboru) a seznam uložených tabulek. Tento seznam krom názvu souboru zobrazuje také: popis souboru (pro DBF), původní velikost souboru, příznak zpakování, velikost souboru po zpakování a účinnost pakování.

Možnosti

Naprosto běžný dialog pro nastavení chování aplikace.

Obecné

Na této záložce jsou volby ovlivňující samotné GUI.
Maximálně si pamatovat n otevřených souborů
Maximální počet otevřených souborů pro MRU.
Nabízet seznam n souborů
Počet položek v nabídce "Soubor" - MRU. Při překročení tohoto počtu dojde k vygenerování nabídky "Další soubory..."
Zobrazit maximálně n oken
Počet položek v nabídce "Okno". Při překročení tohoto počtu dojde k povolení nabídky "Další okna..."
Změna šířky sloupců v zobrazení zdrojového kódu
Pokud je vybrána volba "Ruční", uživatel si může sám měnit šířku sloupce zobrazující zdrojový kód řádku. Při volbě "Automatická" je šířka sloupce přizpůsobena šířce mřížky.

Zpracování LOG souboru

Log soubor zpracovat vždy...
LOG soubor lze zpracovat dvěma způsoby
  • Použít příkaz APPEND FROM
  • Použít LLF (Low Level Functions)
První případ je vhodný na na log soubory do velikosti 2 MB, při větších velikostech dochází enormnímu nárustu spotřeby volného místa na disku. Je to způsobeno tím, že pro názvy třídy, metod a souborů se používá položka C(254). Ve druhém případě se použijí funkce FOPEN() a FREADS() pro načtení log souboru.
Velikost log souboru n v MB pro automatickou detekci
Urční meze kdy se použije první nebo druhý způsob zpracování log souboru.
Pokud zdrojový soubor neexistuje pak
Někdy se stane, že soubor uvedený v log souboru neexistuje. Pokud je nastaveno "Otevři dialog", pak se po zpracování log souboru otevře dialog pro zadání správných umístění všech ztracených souborů.

Jazyk

CVP je lokalizován do 4 jazyků: češtiny, slovenštiny, angličtiny a francouštiny. Je však nutné aplikaci uzavřít a znovu spustit.

Systém

Asociovat LOG soubory
Provede se asociování/deasociování LOG souboru se shellem.
Asociovat CVP soubory
Provede se asociování/deasociování CVP souboru se shellem.
Asociovat CVI soubory
Provede se asociování/deasociování CVI souboru se shellem.
Hledané hodnoty - Vymazat seznam
Provede vymazání seznamu hledaných hodnot.
Zavaděč
Umístění a název zavaděče pro integraci s IDE. Jedná se o ten samý zavaděč použitý u PDM.
Integrovat s VFP IDE
Zajistí integraci s VFP IDE (automaticky generovaná podnabídka v nabídce "Tools/Nástroje" ) pomocí zavaděče.

Ukládání

Ukládat strom zdrojů
Uloží se tabulka zdrojů reprezentující data ve stromě na záložce "Zdroje"
Ukládat strom postupného volání
Uloží se tabulka callstacku reprezentující data ve stromě na záložce "Hierarchie dle průběhu"
Před uložením data zpakovat
Data před uložením do CVP souboru lze zpakovat pomocí externích programů. Momentálně jsou podporovány: BIX, BZIP, VFP a ZLIB. Pro malé soubory lze zvolit "Nepakovat".
Komprimovat soubory větší než n MB
V případě pakování souborů lze nastavit minimální velikost souboru, kterou musí dosáhnout aby byl zpakován. Tímto lez zamezit zbytečnému pakovaní malých souborů.

E Report

CVP obsahuje dvě sestavy... jedna slouží k tisku výsledku anylýzi a druhá k tisku výsledku statistiky. Vzhledem k omezení výstupu sestav (před VFP 9.0) je zde možnost volat utility pro převod sestav do jiných formátů jako PDF, DOC, HTML a další. Výchozí instalace však potřebné konektory neobsahuje. Je nutné si stáhnout EFRX balík, který krom konektorů obsahuje i tři utility: FRX2Word, FRX2Any (demo) a XFXR.
Zde se tedy nastavuje cesta k vlastnímu balíku. Máte-li zakoupen balík FRX2Any, pak po aktivaci položky "FRX2Any" v listovacím seznamu lze nastavit cestu k plnému balíku a uložit pomocí tlačítka "Uložit". Totéž lze udělat pro eReports, Mere či XFRX.

Další exporty, otevření speciálních souborů

Export

Tato volba provede export CVP souboru do CVI souboru a několika přidružených souborů. Pokud vám nevadí až stovky MB zaplácanýho místa na disku výměnou na rychejší otevírání (neprovádí se rozpakování a či kopie) použijte tuto volbu.

Export LOG souboru

Pokud ztratíte původní log soubor, můžete si vygenerovat nový. V některých případech se může stát, že nebude 100% odpovídat tomu původnímu, protože po zpracování se provádí oprava objektové hierarchie.

Export CallStacku

Pokud se rádi rochníte pohledem na hierarchickou strukturu kudy program běžel, je tato volba přesně pro vás. Kromě pár interních atributů vás bude zajímat úroveň vnoření, čas, čas v %, číslo řádku, název procedury/metody a soubor.

Otevřít export analýzi

Výsledek anlýzi lze uložit jako XML... a tento výsledek lze opětovně otevřít pomocí volby "Otevřít ostatní->Otevřít export analýzi". CVP vám nedovolí otevřít k aktuálnímu CVP souboru nesprávny XML soubor, respektivě bude velmi protestovat.

GUI - detailní proklepávání kódu

CVP má tři dialogy pro grafické vyjádření časové náročnosti:
Globální pohled na metodu/proceduru
Tento dialog lze spustit pouze ze záložky "Zdroje" a zobrazuje časovou náročnost každého průběhu metodou/procedurou. Při poklepání v grafu dojde automaticky k výběru konkrétního průběhu metody/procedury.
Detailní pohled na metodu/proceduru
Tento dialog lze spustit ze záložek "Zdroje" a "Hierarchie dle průběhu" a zobrazuje časovou náročnost jednotlivých řádků metody/procedury. Při poklepání v grafu dojde automaticky k výběru konkrétního řádku metody/procedury.
Detailní pohled na řádek
Tento dialog lze spustit ze záložek "Zdroje" a "Hierarchie dle průběhu" a zobrazuje časovou náročnost konkrétního řádku, tedy všech jeho průběhů. V případě zobrazení globálního průběhu barevně odlišené části reprezentují jednotlivá volání z nadřazených metod/procedur.
Tyto tři dialogy mají shodné ovládání, modrá plná horizontální čára udává průměrnou hodnotu. Hodnoty v mřížce podbarvené červenou barvu jsou hodnoty vyšší než průměrné hodnoty. Ve vrchní části jsou čtyři butony. První slouží pro "zvětšení" grafu - dojde k ořezání nejmenší hodnoty. Další tři slouží pro změnu grafu, vychozí stav odpovídá druhému tlačítku, kdy hodnota je hodnota vykreslena plnou čarou červené barvy. Třetí tlačítko zapíná graf nadprůměrných hodnot, tj. jsou zobrazeny pouze nadprůměrné hodnoty. Čtvrté tlačítko zapíná graf bodových hodnot, tj. hodnota je zobrazena pouze pomocí bodu.

Alternativy

V této době existuje pouze jedna "alternativa" a to nástroj "Coverage Profiler" v instalaci VFP. Tento nástroj má jedno plus - lze jej rozšiřovat, nejen ve smlyslu úpravy zdrojového kódu (xsources.zip) ale hlavně v tom, že lze pro něj naprogramovat různé zásuvné moduly. Jeden dal volně k používání Markus Egger, další je v Solution v sekci o VFP 9.0. Na webu se dají najít informace o zásuvných modulech zobrazující grafy atd.
Jeho velké mínus je, že je v reálném provozu nepoužitelný na velké LOG soubory. Má také někdy problémy se zobrazením zdrojového kódu. I když umožňuje uložit zpracovaná data, uloží se pouze stav prošlých metod/procedur a výsledný soubor (dbf) nelze zpětně v Coverage Profileru otevřít. Také jeho další nevýhodou je to, že načítá celý zdrojový soubor i když z něj proběhlo jen pár řádek.