Coverage profiler

CVP is an utility for working with LOG file created by Foxpro command SET COVERAGE TO ... and for display appropriate source code.

You can display even compiled APP and EXE files, if they have linked source code in appropriate file (if not, so very important information about source code lines are missing in generated log file). The source code files must be presented somewhere on the disc, to read it. Not have to be that, if APP or EXE files had some backdoors, to make possible do a copy of internal source code to disc. Source code can be display according to:

  • type of source
    • VCX library
    • form code snippets
    • procedural files stored in DBC container
  • or by separate process

Processing result can be stored to file with CVP extension. That file you whenever can open and display

  • What's new
  • History
  • What it works
  • What's about
  • Starting problems
  • FAQ
  • BIX Archiver
  • BZIP2 Archiver
  • ZLib Archiver
  • Registers, keys and values
  • INI file


Coverage Profiler 1.17.054

New:
Integration with Loader from PDM.
Fixed:
Random C0000005, I hope...
Don't displaying source code anytime and error messages "Alias is not found", "Object is not found".
Faster generating treeview - in callstack if you have more calling sub-function/method (10000) in one function/method.
Associating files CVP,CVI,LOG.
Error message "VCX library not exist." at quiting CVP running from IDE.
Error message "Access violation..." at running CVP from IDE and own bar.
Bad MRU if "Remember most n open files" equal with "Offer list n files".
Bad localized (technology) reports.
Don't delete working files frx and frt.


Acknowledgements

První podìkování patøí Michalu Tvrdému jako nejaktivnìjšímu testerovi a autorovi mnoha návrhù nových funkcí, rok po zpøístupnìní CVP okolnímu svìtu (tìsnì po VFP Devconu v Praze 2001). Po nìm Jánu Koreèkovi za hlášení chyb a nìkolik návrhù. Další patøí Clausu Schusterovi, Walterovi Wurditsovi a Thomasu Ganssovi jejichž návrhy jsem realizoval ve verzi 1.17.05 (a taky spoustu chyb opravil).
Popis chyby a návrhù ve verzi 1.17.051 pocházejí od Jerakeena.
A nakonec ještì musím podìkovat Milanu Pavlikovi za pøeklad do Angliètiny a Jánu Koreèkovi a Janu Brndiárovi do Slovenštiny.


History

Version 1.0.9 Version 1.0.10 Version 1.0.11 Version 1.0.12 Version 1.0.13 Version 1.0.14 Version 1.15.14 Version 1.16.04 Version 1.16.07 Version 1.17.00 Version 1.17.03 Version 1.17.05 Version 1.17.051 Version 1.17.052 Version 1.17.053

Version 1.0.9

New:
Possibility to change item width in tree display.
Repaired Bugs:
Log file processing - reading source code.
Log file reading for files larger than 2 MB.

Version 1.0.10

New:
Reading source code from DBC container stored procedures.
Repaired Bugs:
Multiple display of an identical methods in class.

Version 1.0.11

New:
New button on pageframe "Sources" for activation program branch on pageframe "Process hierarchy".
Masked bitmap in toolbar buttons.
Menu standard options now have the hotkeys (New, Open, Save).

Version 1.0.12

New:
Menu for switching between displayed windows.
Repaired Bugs:
Retrieving source code from VCX and SCX files is doing via external working files, to prevent processing this files in application internally.
Erase of window caption in case that user interrupted saving to disc.
Grids diplayed source code now correctly show even tabulators.
Reading and displaying passed code was speed-up now.

Version 1.0.13

New:
New button on pageframe "Sources" for activation superior method/procedure and appropriate line of source code.
On pageframe "Process hierarchy"
  • New time counter for displaying persistency time of method/procedure - named "Time from superior line/time in this code - (time difference value)"
  • The lines, whose display calling methods/procedures, are highlighted by yellow color now.
  • Doubleclick on highlighted yellow line activate the apporiated branch on displayed tree.
Repaired Bugs:
Retrieving source code from VCX library (collision between any class and something other object, if they had the same names).

Version 1.0.14

New:
V gridech pro zobrazení zdrojového kódu pøibyl sloupec "Øádek" urèující èíslo øádku ve zdrojovém kódu.
V menu "Soubor" pøibyla volba "Možnosti" pro nastavení aplikace.
V menu "Soubor" pøibyl seznam naposled otevøených souborù + volba "Další soubory...".
Pøibyla možnost zmìny jazyka (Czech/English/Slovak). Anglická Version má z vìtší èásti lokalizované menu, formuláøe jsou jen tak pokusnì (prosím, nekamenovat, i èeštinu zvládám jen s obtížemi :-) ). Slovenská Version je kompletní kromì helpu.
Pokud se pøi zpracování log souboru nepodaøí najít soubor se zdrojovými kódy, pak se Ignoruje/Otevøe dialog pro nalezení konkrétního souboru se zdrojovými kódy.
Pøi naèítání log souboru se detekují APP/EXE.
V panelu 'Standardní nabídka' pøibyl button pro aktivaci nápovìdy.
Do hlavního menu pøibyla nabídna 'Nápovìda'.
Karta "Zdroje"
  • je-li zobrazena metoda/procedura coby "Globální pohled", pak "Prùbìh" urèuje celkový poèet volání metody/procedury
Karta "Hierarchie dle prùbìhu"
  • jako ekvivalentní událost pro DblClick() na gridu pøibyl stisk klávesy Enter v gridu
  • událost DblClick() na gridu byla rozšíøena o výbìr volaných metod/procedur z popupu , pøípadnì jejího (jejích) n-tého volání z téžeho øádku
  • pod seznamem pøibyl textbox zobrazující èas vykonání metody/procedury
Karta "Analýza"
  • Vyhlédání lze omezit hodnotou "pod","nad" nebo "intervalem" a lze hledat dle:
    • ztráveného èasu na øádku
    • spuštìní øádku n-krát
    • ztráveného èasu v metodì/proceduøe
    • spítìní metody/procedury n-krát
  • Pøi dvojitém kliku na záznam ve výsledném seznamu se aktivuje pøi hledání:
    • dle 1. nebo 3. pøíslušný záznam ve stromì na kartì "Hierarchie dle prùbìhu"
    • dle 2. nebo 4. pøíslušný záznam ve stromì na kartì "Zdroje"
Repaired Bugs:
Testování velikosti log souboru a volného místa na disku (pøi malém log souboru se zobrazila hláška o malém místu na disku pro pracovní soubory).
Naètení jednotlivého zdrojového kódu za metodu/proceduru (za urèitých podmínek docházelo k naèítání summárního zobrazení).
Špatná indikace v kombu "Voláno z" na kartì "Zdroje".
Generování dat pro "Strom postupného volání" (A tím byla opravena spousta dalších chyb napø.: pokud byl zachycen prùbìh více událostí - KeyPress(),KeyPress(),KeyPress(),KeyPress() .... ).
Zobrazení èasu na kartì "Hierarchie dle prùbìhu" (nejvýše postavené procedury/metody zobrazují kladný èas a byla tam pøidána jednotka (s)).
Pohyb v gridu ve sloupci zobrazující zdrojový kód.
Pøechod z karty "Zdroje" na kartu "Hierarchie dle prùbìhu" pomocí buttonù (pøi pøechodu na kartu "Hier..." a zpìt na kartu "Zdroje" se pøi pohybu v gridu zobrazily nepatøièné øádky).
Událost DblClick() na gridu na kartì "Hierarchie dle prùbìhu" (provádìl se odskok i na øádcích které nevolaly další metody/procedury).
Zkratkové menu formuláøe (Ukonèit - funkèní, Pomoc - funkèní).
Zablokováno hlášení "Range 1-x" pøi ruèním zadávání prùbìhu na kartì "Zdroje".

Version 1.15.14

New:
V oknì "Možnosti" pøibyla karta Systém pro zaregistrování typù souborù LOG a CVP.
Aplikaci lze spustit s jedním parametrem:
  • Název a umístìní log souboru
  • Název a umístìní cvp souboru
  • --R (provede obnovení všech potøebných informací v registry (kompletní))
  • --D (provede zlikvidování pøíslušných informací v registry)
Na kartì Hierarchie dle prùbìhu je v gridu možnost skoèit do nadøazené metody/procedury pomocí klávesy.
V gridech na zobrazení zdrojového kódu pøibyla možnost pomocí klávesy oznaèit/odznaèit aktuální øádek, pøièemž se automaticky poèítá strávený èas na vybraných øádkách.
V gridech na zobrazení zdrojového kódu pøibyla možnost pomocí kláves a se pohybovat na zaèátek a konec zdrojového kódu.
Pøibyla karta Statistika. Na ní jsou tyto údaje:
  • Celkový
    • poèet typù zdrojù dat
    • poèet tøíd
    • poèet èlenù
    • poèet metod
  • Poèáteèní úroveò vnoøení , Maximální úroveò vnoøení
  • Nejvíce
    • volaný øádek (který,M/P)
    • èasovì nároèný øádek (který, M/P)
    • volaná M/P
    • èasovì nároèná M/P
  • Celkový èas strávený sledováním
Nyní dochází na kartì Zdroje k rozlišení Tøídy a Èlenu tøídy/objektu. Na kartì Statistika je to vidìt v seznamu "Seznam a poèet zdrojù".
Repaired Bugs:
Po uložení zpracovaného log souboru/uložit jako se zobrazuje jeden øádek místo zdrojového kódu.
V oknì "O aplikaci" se místo verze aplikace, zobrazil text "Pouze v Runtime verzi".
Pøi odskoku do podøazené metody/procedury byl seznam volaných metod/procedur seøazen dle abecedy místo dle fyzického prùbìhu.
Opraveno využívání teplomìru.
Pokud byla metoda/procedura vyvolána jako událost na úrovni READ EVENTS, pak se zobrazuje špatnì poèet volání (Prùbìh).
Pøi otevírání souboru byla kontrola názvu souboru Case sensitive - to znamená, že se tentýž soubor zaregistroval vícekrát.
Pøi zmìnì poètu viditelných, èi zapamatovatelných souborù na formuláøi "Možnosti" v Obecných nastavení se nepøedefinovávalo pøíslušné menu.
Pøi ativaci vìtve ve stromu s názvem "Pomocný item" došlo k zobrazení chybové VFP hlášky "Function name is missing)."
Pøi ukonèování formuláøe se ve stromech hlavní nody nemažou, ale jen se zbalí.
Pokud byl LOG soubor vytvoøen pod VFP 5.0, pak se špatnì vygeneroval pracovní soubor pro zobrazení Hierarchie dle prùbìhu (strom byl prázdný). Pøi pokusu o skok z karty Zdroje na metodu/proceduru na kartì Hierarchie dle prùbìhu docházelo k zacyklení.

Version 1.16.04

New:
MEMO pole se alokují po jednom byte, takže uložený CVP soubor je menší (je to znát tam, kde je spousta zdrojových kódù).
Na kartì Statistika pøibylo tlaèítko "Naèti" na naètení statistických údajù (místo aktivace karty samotné).
Do modulu Výstupní okno byly pøesmìrovány chybové hlášky pøi otevírání a ukládání CVP souboru.
Pøibyl modul Vlastnosti CVP souboru na zobrazení vlastností CVP souboru.
V modulu "Možnosti" pøibyla karta Ukládání pro nastavení ukládání zpracovaného LOG souboru.
Repaired Bugs:
Na kartì Hierarchie dle prùbìhu a Zdroje se pøi zmìnì šíøky stromu neposouval popisek a hodnota "Èas trvání vybraných øádkù"
Na kartì Hierarchie dle prùbìhu v seznamu zdrojového kódu pøi prùchodu do podøazené metody/procedury je upraveno zobrazení popupu podøazených M/P.
Pøi obèerstvování karty Statistika mohlo dojít k vyvolání chybového VFP dialogu (takový ten nádherný dialog s teèkou) a nevyplnìní jednotlivých textboxù.
Modul Výstupní okno opìt ukazuje chyby pøi zpracování LOG souboru.
Pøi "Pøímém" zpracování LOG souboru z VFP 5.0 (i pokud bylo nastaveno "Automatické" a program se rozhodl pro "Pøímé" zpracování ) docházelo k nekorektnímu naèítání názvu souboru se zdrojovým kódem. To zpùsobilo, že se nic nezobrazovalo.

Version 1.16.07

New:
Pøi otevírání VCX/SCX/DBC souborù a následnému selhání se ve Výstupním oknì zobrazí èíslo a popis VFP chyby.
Po zpracování LOG souboru je ve Výstupním oknì zobrazena drobná statistika jak, která èást dlouho trvala.
Pøibyl modul Hledání pro hledání názvu metod a procedur v seznamu zdrojù a nebo textu ve zdrojovém kódu.
Ve Výstupním oknì lze skoèit na zaèátek a konec pomocí kláves CTRL+HOME a CTRL+END.
Pøi startu programu dochází k detekci potøebných OCX knihoven. Pokud se nepodaøí inicializovat nejvyšší verzi knihovny, pak se program pokouší inicializovat nižší verze.
Textboxy na stránce Hierarchie dle prùbìhu a Zdroje se nyní rozšiøují automaticky dle šíøky stránky.
Nyní je možné zobrazit a skrýt toolbary.
CVP si pamatuje pozici a velikost okna Hledání, Výstupního okna a toolbarù.
CVP si vytváøí seznam (snad) všech pracovních souborù i tìch, které automaticky vytvoøí RT VFP. Pokud dojde k pádu, pak pøi dalším spuštìní se ztracené pracovní soubory smažou.
Pøibyla možnost dodìlat doplòkový modul na kompresi a dekompresi souborù (nyní lze použít i komponentu BZip2.EXE, ZLib.DLL a funkce OS).
Na modulu Vlastnosti CVP souboru v seznamu souborù pøibyl sloupec "Úèinnost" indikující index úèinnosti pakování.
Cesty k lokalizovaným knihovnám, helpùm a pakovacím komponentám lze definovat i pomocí promìnných prostøedí systémových (%WINDIR%, %PATH%), èi vlastních.
Na formuláøi "O aplikaci" pøibyl odkaz na domovskou WWW stránku.
Na formuláøi "Možnosti" na kartì Systém pøibylo tlaèítko pro vymazání seznamu hledaných hodnot.
Pokud je rozpoznán LOG soubor z VFP 5.0, pak dojde automaticky k jeho pøevodu na LOG soubor z VFP 6.0.
Repaired Bugs:
Po naètení zdrojových kódù z VCX/SCX souborù se zobrazovala VFP chybová hláška "File access denied", pokud byly VCX/SCX soubory Read Only.
Ve formuláøi Vlastnosti CVP souboru lze klávesou ESC ukonèit dialog.
Z formuláøe Vlastnosti CVP souboru se po stisku klávesy F1 zobrazí pøíslušná nápovìda.
Pøi dalších stisknutí tlaèítka èíst na kartì Statistika se objevovaly chybové hlášky.
Na kartì Analýza se po zvìtšení šíøky sloupce v seznamu a následné zmìnì šíøky formuláøe se objevovaly chybové hlášky.
Pøi naèítání zdrojových kódù z tøídy ve VCX knihovnì nebyly nalezeny metody objektù 4 a vyšší úrovnì.
Pokud nìkdo nemìl nainstalovaný help, pak to pøi startu øvalo "File does not exist." .
Neukládalo se do Registry nastavení FileSource.
Po otevøení CVP souboru (po zpracování LOG souboru jsem netestoval) a pøepnutí na stránku Statistika a naètení hodnot, nedošlo k naètení názvù metod/procedur a po kliknutí na button se šipkou nedošlo k pøepnutí na stránku Hierarchie dle prùbìhu nebo Zdroje.
Na stránce Statistika se tlaèítka pro pøechod na metody/procedury povolí až po naètení.
Snad už se nestane, aby v seznamu zdrojových kódù byl zobrazen jeden a tentýž øádek nìkolikrát (pokud tomu tak bude, ozvìte se).
Po uložení souboru pod novým názvem a opìtovným "uložením jako", se v dialogu pro výbìr souboru objevil název pùvodního CVP souboru pøed prvním "uložením jako".
Formuláø "O aplikaci" se neukonèoval stiskem klávesy Esc.
Na formuláøi "Možnosti" na kartì Ukládání nefungovalo zavolání helpu.
Po ukonèení Výstupního okna pomocí kombinace kláves CTRL+F4, zùstala volba v menu zaškrtnutá.
Opìt tam byla chybièka pøi zpracování LOG souboru (z VFP 5.0), nenašel kód objektù ve tøídì.
Dialog volaný pro výbìr modulu z Seznamu modulù už nemá popisek "Projekt", ale je dle koncovky souboru.
Pokud byl tøetí øádek LOG souboru prázdný, pak se zobrazila chybová hláška: "Máš holt smùlu. Máš málo místa na disku pro pracovní soubory. Potøebuješ ******************** B na disku D:"
Pøi spuštìní pod RT VFP 7.0 to zaøvalo "Property hwnd is ReadOnly".
Changed:
Na modulu "Možnosti" kartì Ukládání se jeden checkbox (Pøed uložením zkomprimovat) zmìnil na kombobox - výbìr pakovací komponenty.

Version 1.17.00

New:
Pro každý soubor se ve Výstupním oknì vypíše øádek s èasem, jak dlouho naèítání zdrojových kódu dlouho trvalo.
Pøibyla podpora pro reporty a labely.
Na modulu "Možnosti" kartì Ukládání je možno nastavit jaká má být minimální velikost souboru, aby se pøed uložením zkomprimoval.
Pøibyla možnost zobrazit si detail øádku - graf prùbìhu øádku.
Pøibyla možnost zobrazit si grafem:
  • detail øádku, grafem vyjádøená èasová nároènost øádku, vhodné pro sledování øádkù ve smyèce.
  • globální pohled na metodu/proceduru, grafem vyjádøená èasová nároènost jednotlivých prùbìhù metody/procedury.
  • detail metody/procedury, grafem vyjádøená èasová nároènost metody/procedury.
Repaired Bugs:
Opraveno naèítání zdrojového kódu metody/procedury, pokud má více pøíslušných øádkù v LOG souboru.
Opraveno ztrácení zdrojového kódu v zobrazení.
Opraveno chybné testování, zda soubor uvedený v LOG souboru existuje.
Byl-li poslán text do Výstupního okna nedocházelo k posunutí, takže text byl skryt.
Opraveno vyhledávání objektù a metod ve VCX knihovnì pro LOG soubor z VFP 5.0. Nyní by to mìlo fungovat na 99%.
Opraveno duplicitní generování názvù metod ve stromì na kartì Zdroje.
Pøi otevírání CVP souboru se kontroluje, zda existuje potøebné místo na disku.
Changed:
Urychleno pøímé zpracování LOG souboru až o 10%.
Urychleno zpracování zdrojových kódù, u rozsáhlých PRG souborù a uložených procedur až o 80%.
Urychleno vyhlédávání (analýza) metod/procedur.
Urychleno zjištìní nejpomalejší a nejvícekráte spuštìné metody/procedury.
Urychleno zobrazování zdrojového kódu.

Version 1.17.03

New:
"Export" option - export of CVP file to separated DBF files.
"Create LOG file" option - remaking apporiate LOG file.
Changed:
A generating some internal files was speed-up.
Seeking of subordinary methods/procedures and his successive selection was speed-up.
Adjusted a dialog List of files.

Version 1.17.05

New:
Option "CallStack Export" - export CallStack to XML file.
Help is converted to chm.
English help localisation.
(French complete localisation in progress)
Possible to open CVI file instead of CVP file.
Tisk nebo export do XML výsledku analýzy.
Tisk nebo export do XML výsledku statistiky a opìtovné otevøení.
Seznam výsledku analýzy nebo hledání lze tøídit.
Na stránce Analýzy lze nastavit setøídìní a omezit poèet nalezených hodnot.
Pøidána podpora pro spouštìní reportovacích enginù tøetích stran.
Pøibyla možnost oznaèit øádek zdrojového kódu kliknutím na první sloupec.
Pøibylo procentuální vyjádøení nároènosti metody/procedury vùèi celému èasu sledování.
Nová volba pro opravu stromu prùbìhu.
Chyby:
Špatná hodnota pøi prvním prùchodu øádku v seznamu.
Špatná hodnota "Nejvíce èasovì nároèného øádku" ve statistice.
Nekorektnì generovaný strom prùbìhu.
Nekorektnì generovaný strom zdrojù.
Nekorektnì generovaný seznam pracovních souborù.

Version 1.17.051

New:
It can be skip to Process Hierarchy from Row detail.
New column "Order" in grid at window Row detail.
It can be skip to Process Hierarchy from Global view of method/procedure.
Fixed:
Window Method/procedure detail don't view data if was run from Sources and was select concrete method/procedure.

Version 1.17.052

Changed:
Window Method/procedure detail don't view corectly average values and under VFP 8.0 weren't view.

Version 1.17.053

New:
Are buttons on modules Row detail, Global view of method/procedure and Method/procedure detail for change graph type.
For modules Row detail, Global view of method/procedure, Method/procedure detail, Searching and Output window is possible use docking under VFP 9.0.
Support for log files created by COM DLL.
In module Method/procedure detail it can be select row of method/procedure with by means of doubleclick in listbox or graph.
Changed:
Better EFRX interface.


How it works

CVP create 4 working files and 5 temporary files.
  • Working files:
    • Log table
      Reduced version of log file, where text is replaced by ID, and refered to a next tables.
    • Type of sources table
      List of libraries, forms, procedure files and DBC containers.
    • Object table
      List of all passed methods and procedures.
    • Source code table
      Source code of passed method and procedures.
  • Temporary files :
    • Table for tree display of source type
    • Table for tree display of process hierarchy
During saving files are working files (and temporary, if set) stored to CVP file. If no temporary files are stored to CVP file, they will be generated each time CVP file is open, and when you browse a tree.
LOG file process technique:
  • Reading and processing log file:
    If log file length is smaller then 2MB, file is read by the command APPEND FROM ... and processed, in other case is file opened by lowlewel functions, and processed directly. During the process is generated table content for "Log table", "Type of sources table" and "Object table".
  • Repairing "Object table":
    Method names and path to objects are repaired, especially for class methods.
  • Reading "Source code table":
    The table "Type of sources" is passed through, and simultaneously all related "objects" from the "Object table" too. To all of this "object" is opened appopriate source code, and stored to the table "Source code table".
  • Displaying source code on page Sources:
    In this phase the application detect, how many times was every method/procedure called, and from where. If the method/procedure was called from more other methods/procedures, or many times from one of them, the option "Global view" will be added to combobox. "Process" spinner is used for specification of appopriate process. When you select "Call from..." and "process", concrete source code will be generated and displayed.
  • Displaying source code on page Process hierarchy:
    After click on branch of tree will be generated and displayed a source code for this process.
LOG file processing specialities:
During a LOG file reading are detected all used application and exe files. If any row with this one was found, the dialog List of projects will be displayed for locating appopriate projects. If the dialog was terminated by an Escape key, or if location of any project was not be specified, may become a dialog List of modules will have great number of "lost" files, which no one of them was found on disc. Application during processing LOG file search projects on specified path only, do not search all directory on all local drives for any project file! Before reading source code will be tested, if specified files exists on specified path. If so, a dialog List of modules will be displayed for determining location of appopriated files. If the dialog was terminated by Escape key, or if location of any module not be specified, source codes for this files will not be available.


Whats about ...

This little utilities is programmed in Visual FoxPro 6.0 by Microsoft ®

Notice:
For correct running of this application it is necessary to have VFP 6.0 runtime installed with SP 3 and Microsoft Common Controls ActiveX Control (COMCTL32.ocx nebo MSComctl.ocx).


Application start problems

During Coverage Profiler start any errors can be detected. Erorrs are not localised, but have its number in brackets. They are:
  • (1) - Cannot activate basic API function.
  • (2) - Cannot activate a component for work with Registry.
  • (3) - Cannot activate library CVP.fll.
  • (4) - Cannot activate supplementary API function.
  • (5) - Cannot iniciate OCX library (COMCTL).

(1) - Cannot activate basic API function.

From any mysterious reason a initialisation of basic API function fail for any of these function:
GetDriveType
GetLogicalDriveStrings
RemoveDirectory
DeleteFile
CreateDirectory
CopyFile
GetTempPath
GetSystemDirectory
PathRelativePathTo
PathSkipRoot
GetPrivateProfileString
WritePrivateProfileString
SetWindowPos
SystemParametersInfo
MoveWindow
GetActiveWindow
GetWindowRect
WinExec
Sleep
GetLastError
SetLastError
GetPrivateProfileInt
PathIsRelative

(2) - Cannot activate a component for work with Registry.

From any mysterious reason fails an initalisation of API functions for work with Registry for any of these function:
RegQueryValueEx
RegSetValueEx
RegCreateKeyEx
RegOpenKeyEx
RegEnumKeyEx
RegDeleteKey
RegDeleteValue
RegEnumValue
ExpandEnvironmentStrings

(3) - Cannot activate library CVP.fll.

That's a FLL library for some needed function (for instance icon animation, or so).

(4) - Cannot activate supplementary API function.

Concerned with thirteen API functions:
GetCaretPos
ScreenToClient
ClientToScreen
GetWindowRect
SetCursorPos
SetActiveWindow
SetParent
SHChangeNotify
CreateProcess
WaitForSingleObject
CloseHandle
SetFileAttributes
GetExitCodeProcess

(5) - Cannot iniciate OCX library (COMCTL).

Program was tested, if needed OCX classes TreeView, ListView and ImageList are functional. This classes are included in library named Microsoft Common Controls ActiveX Control (COMCTL32.ocx - VS 5.0 nebo MSComctl.ocx - VS 6.0). If application display this error, an initialisation of these needed clases fails.


FAQ

1) At processing of LOG file is displayed a dialog for file localisation. But in list there are nonsense name of files - numbers or so...
1) At processing of LOG file is displayed a dialog for file localisation. But in list there are nonsense name of files - numbers or so...
That's an error in generated LOG file specifically for "eastern" OS localisations. An item determined time of processed row use "," as decimal point, instead ".". In processing of that case, any section after "," is considered as other item (class name). You must repair LOG file so that all decimal point was ".". Or before generating LOG file you can set a decimal point to "." ;o).


Main menu

File menu

Choice | Description
New... | Call a dialog for opening LOG file
Open... | Call a dialog for opening CVP file
Open other | Make possible to open other files
Close | Call a dialog for closing LOG file
Save | Call a dialog for saving CVP file
Save as... | Call a dialog for saving CVP file as a new name
Save all | Call a dialog all open LOG and CVP files for storing changes
Options | Call a dialog General/LOG file processing/Language/System/Saving for application setting
Properties | Call a dialog CVP file properties
Printing | Printing
Exports | Some exports
Next files... | Call a dialog List of files for open required file
Exit | End Coverage Profiler application
Volba | Popis
Open Analyse export | Open export Analyse to XML file
Volba | Popis
Analyse print | Analyse print
Statistic print | Statistic print
Choice | Description
Export... | Six main files will be exported to a destination directory
Create LOG souboru | Create basic LOG file again
Call Stack export | Save Call Stack as XML file
Analyse export | Analyse export to XML file
Statistic export | Statistic export to XML file

Edit Menu

Choice | Description
Undo | Undo changes
Redo | Redo changes
Cut | Cut a block to clipboard
Copy | Copy a block to clipboard
Paste | Paste block from clipboard
Select all | Select all to a block
Find... | Call a dialog for searching
Select a row | Select actual row in source code
Deselect all rows | Deselect all rows in source code
Invert row selection | Invert row selection in source code

Display Menu

Choice | Description
Output window | Call Output window for displaying various mesages
Standard panel | Display/hide Standard panel
Browse panel | Display/hide Browse panel
Row detail... | Display Row detail
Global view of method/procedure... | Display Global view of method/procedure
Method/procedure detail... | Display Method/procedure detail

Jump menu

Choice | Description
To the parent method/procedure | Jump to the parent method/procedure
To the actual method/procedure | Jump to the actual method/procedure
To the child method/procedure | Jump to the child method/procedure
On the begining of source code | Jump on the begining of source code
On the end of source code | Jump on the end of source code

Tools

Volba | Popis
Repair callstack | Opraví strom prùbìhu

Window Menu

Choice | Description
Arrange all | Rearrange all MDI windows
Cycle | Next MDI window
Next windows... | Display the dialog List of windows for window activation

Help Menu

Choice | Description
Help for 'Coverage profiler' | Display Help for concrete window
Contents and Index | Display Help contents and index for 'Coverage profiler'
About 'Coverage profiler' | Display version information for this 'Coverage profiler' aplication


Standard panel

Panel is used to acces most frequently used program functions.
Button | Description
 | New document
 | Open document
 | Close document
 | Find
 | Save document
 | Save document as ...
 | Save all documents
 | Display row detail
 | Display global view to a method/procedure
 | Display detail of method/procedure
 | Display help


Browse panel

Panel is used for enabling function for movement between M/P.
Choice | Description
 | Jump to the parent method/procedure
 | Jump to the actual method/procedure
 | Jump to the child method/procedure
 | Jump on the begining of source code
 | Jump on the end of source code


Application hotkeys

File menu

Keys | Description
CTRL+N | Call a dialog for LOG file opening
CTRL+O | Call a dialog for CVP file opening
CTRL+F4 | Call a dialog for LOG file opening
CTRL+S | Call a dialog for CVP file saving
ALT+F4 | Exit Coverage profiler

Edit menu

Keys | Description
CTRL+Z | Undo changes
CTRL+R | Redo changes
CTRL+X | Cut a block to clipboard
CTRL+C | Copy a block to clipboard
CTRL+V | Paste a block to clipboard
CTRL+A | Select all to a block
CTRL+F | Searching ...
SPACE | Select actual row in source code

Jump menu

Keys | Description
BackSpace | Jump to the parent method/procedure
Enter | Jump to the actual method/procedure
Home | Jump on the begining of method/procedure source code
End | Jump on the end of method/procedure source code

Help menu

Keys | Description
F1 | Display 'Coverage Profiler' help


LOG file conversion

New LOG file processing

Created LOG file can be processed by selecting option "New" or by pressing button [image]. Dialog for choosing LOG file from disc will be displayed. If you select any file, application open it and start the file processing.

Storing LOG file after processing

Processed LOG file can be stored by option "Save" or by pressing button [image]. If you do it, application display a dialog for saving generated LOG file.
Notice:
VFP file is allways saved as the highest installed version.

CVP/CVI file open

Any CVP file can be opened by option "Open" or by pressing button [image]. If you do it, application display a dialog for opening CVP/CVI file.


List of windows

This window is used for choosing an open document. All open documents are displayed in. Number of windows displayed in list is defined in dialog General options.


List of files

This window is used for choosing and opening a documents remembered by the application as previously used, opened or stored. Number of documents remembered by application is defined in dialog General options. You can sign some files and open this files en bloc. If before the name of file is a icon [image], this file not exist on disc. That's only an information from LOG file.
Delete all signed files from list.
Delete from list all files, which not exist on disc.


List of projects

List of projects will be displayed if any identified rows of running code (in application or exe module) will be found during processing LOG file. It is necessary to identify this projects, for automatical appending the path of other files. If the projects will not be specified, a dialog List of modules will evidently contained very much of items. When the dialog "List of projects" is confirmed, program check if project on specified path really exist, and when not, listing will be activated with concrete row.

In the case, when application or exe modul have the same path as the project, a path will be displayed on the box. Project path can be specified by an entry or by button at the third column.


List of modules

List of modules is displayed in the case, when any appopriate file(s) with source code, don't exist on specified path. When this dialog is confirmed, program check if module on specified path really exist, and when not, listing will be displayed with specific row.

Module path can be specified by an entry or by button at the third column.


CVP file properties

Objects | Description
Version | Display a version number of CVP file.
Packing | Specified, if data will be packed before the storage.
List of stored tables | You can select, which ones from generated files can be stored.
List of stored files | List of all stored files - Filename, Description, Unpacked lenght, Packing attribute, Packed file length and Packing effectivity in %.


Searching

This window is used for searching any name of method/procedure in source listing, or for finding an arbitrary text in source code. You can use this windows in multiple access. Searching is not case-sensitive. In list of finding items is a value of item in first column, and lenght of item is displayed in second column.
New window will be allways displayed in position and size of last closed searching window. All new values scheduled in other window will be also displayed in new window.
Objects | Descriptions
What | Determine, what will be searched. In case, if will be searched any method/procedure, any preliminary or terminal spaces of entering value will be automatically removed. If you select the text, all entering values will be used as is.
Where | Determine, what CVP file will be used for searching assigned value.
Only executed rows | This option is allowed only if you search text. If this option is checked, in result will be displayed only that source code rows, which was executed to this moment.
Notice:
Listing of momentally searched values can be deleted in module "Properties" on page System.


Output window

This window is used for displaying eventual error or working messages during a application runtime.


Row detail

Used for displaying a row time delay graph. That's useful for row tracing in any loop. Blue horizontal line is calculated average value. V gridu jsou dva sloupce, poøadí volání øádku a èas trvání.

Vertical line in graph is a reached time, and horizontal line is concrete value for any row. This window can be started from Process Hierarchy, or from Sources. V pøípadì spuštìní ze Sources jsou øádky patøící do rùzných metod/procedur odlišeny barvou kde se støídají barvy pozadí bílá a šedivá v prvním sloupci. Pøi poklepání na øádek nebo stiskem klávesy Enter na øádku dojde k aktivaci konkrétní metody/procedury a pøesun na konkrétní øádek v Process Hierarchy.

Tlaèítka:

Ikona | Popis
 | Zvìtšení grafu. Dojde pouze k oøezaní výchozí hodnoty o nejmenší hodnotu pøi zachování výšky zobrazení.
 | Klasický èárový graf
 | Èárový graf, ale zobrazí se pouze hodnoty pøesahující prùmìrnou hodnotu
 | Teèkový graf. Hodnota je zobrazena dvou pixelovou èárkou.


Global view of method/procedure

Used for displaying a single process time delay graph of method/procedure. Blue horizontal line is calculated average value. Vertical line in graph is a reached time, and horizontal line is concrete value for any process of method/procedure. This window can be started only from Sources. Pøi poklepání na øádek nebo stiskem klávesy Enter na øádku dojde k aktivaci konkrétní metody/procedury v Process Hierarchy.

Tlaèítka:

Ikona | Popis
 | Zvìtšení grafu. Dojde pouze k oøezaní výchozí hodnoty o nejmenší hodnotu pøi zachování výšky zobrazení.
 | Klasický èárový graf
 | Èárový graf, ale zobrazí se pouze hodnoty pøesahující prùmìrnou hodnotu
 | Teèkový graf. Hodnota je zobrazena dvou pixelovou èárkou.


Method/procedure detail

Used for displaying a method/procedure time delay graph. Blue horizontal line is calculated average value. Vertical line in graph is a reached time, and horizontal line is concrete value for any row. This window can be started from Process Hierarchy, or from Sources. Poklepáním v seznamu nebo v grafu dojde k vybrání pøíslušného øádku v seznamu na hlavním formuláøi.

Tlaèítka:

Ikona | Popis
 | Zvìtšení grafu. Dojde pouze k oøezaní výchozí hodnoty o nejmenší hodnotu pøi zachování výšky zobrazení.
 | Klasický èárový graf
 | Èárový graf, ale zobrazí se pouze hodnoty pøesahující prùmìrnou hodnotu
 | Teèkový graf. Hodnota je zobrazena dvou pixelovou èárkou.


Analysis

This page is used for finding critical point in source code. Critical points can be find on row level, or on procedure level, and detect either spend time on execution or number of repetititons. Searching can be determined under or over the interval value. Výsledný seznam hodnot lze tøídit poklepáním na pøíslušný sloupec v seznamu.

Seznam sloupcù:

Metoda/Procedura | Název metody/procedury
Poèet | Poèet øádkù
Èas | Doba vykonání kódu
Prùm. èas | Prùmìrná doba vykonávání kódu
% | Doba vykonání kódu v procentech
Èíslo øádku | Èíslo øádku
Øádek | Obsah øádku
Poø. | Celkové poøadí v seznamu

If you doubleclick on row in list, application activate according to your searching appopriate line on:

  • if you are searching for time execution in a tree on page Process hierarchy
  • if you are searching for count execution in a tree on page Sources
Poèet/Èas vykonání
Urèení intervalu výbìru dle èasu nebo poètu:
  • pod
  • nad
  • mezi
Setøídìní
Urèuje zpùsob setøídìní dat:
  • vzestupnì
  • sestupnì
Summarizovat
Pøi zatrhnutí této volby je èas nedøíve sumarizován a potom jsou aplikovány podmínky výbìru. Pro Øádek je èas sumarizován za konkrétní prùbìh metody/procedury, pro Metodu/Proceduru je èas sumarizován za metodu/proceduru.
Prvních...
Definuje zda se mají vybrat všechny odpovídající záznamy nebo n prvních.
Výsledek analýzy lze buï vytiskout [image] nebo uložit jako XML soubor [image] jehož struktura je popsána zde.

Is it OK, Claus? :-))


Browse CVP file from a running code aspect

In left area of window is a tree displaying the application process. Po vytvoøení je každá vìtev zobrazena ikonou [image] pokud má nìjaké podøazené vìtve nebo [image] pokud nemá podøazené vìtve. Po rozbalení vìtve s podvìtvemi dojde ke zmìnì ikony na [image]. Pokud jsou vìtve generovány pøechodem z Zdrojù pak nadøazená vìtev má ikonu [image] dokud nejsou naèteny všechny podvìtve. In right area is a grid displayed passed code. That's not a cumulative display, that's only display concrete running code in appropriate method/procedure.
The rows started any other method/procedure, will be displayed in grid with yellow background. After a doubleclick to an yellow row application either jump to the first called method/procedure, or display list of called methods and procedures, including his own "instances" if that method or procedure was called more than once (appropriate row is in loop, or so...).
Øádky, u nichž je první sloupec modrý, jsou oznaèené øádky.
Èas trvání celé M/P
Pro metody/procedury v nejvyší úrovni se zobrazuje èas sesèítaný ze všech øádkù metody/procedury. Pro metody/procedury v ostatních úrovní se jako první zobrazuje èas z øádku nadøazené metody/procedury pak sesèítaný èas z aktuální metody/procedury a pak jejich rozdíl.
Èas trvání vybraných øádkù
Souèet èásù vybraných øádkù.
Procentuální podíl
Procentuální podíl trvání metody/procedury vùèi celému sledování.


Browse CVP file from source code aspect

Left area

In left area is a tree displaying the list of sources, in which is included all passed running code. Sources are six basic type:
Icon | Description
 | VCX library
 | VCX library is subdivided to a single classes [image] , and the classes to items [image] and methods [image] .
 | Form
 | Form is subdivided to a single objects [image] , and the objects to items [image] and methods [image] .
 | Program/procedure file
 | Program is subdivided to a classes [image] and procedures [image] . Classes are subdivided to an objects [image] and methods [image] .
 | Database container (stored procedures)
 | Database container is subdivided to a stored procedures [image] .
 | Report
 | If a DataEnvironment is used in a report, the report is subdivided to a DataEnvironment [image] , single cursors [image] and methods [image] .
 | Label
 | If a DataEnvironment is used in a label, the label is subdivided to a DataEnvironment [image] , single cursors [image] and methods [image] .

If unable to open appopriate source code file, the icons look as:

Icon | Description
 | VCX library
 | Form
 | Program/procedure file
 | Database container (stored procedures)
 | Report
 | Label
If unable to find appopriate procedure or method, their icon looks like this [image].

Right area

In right area is a grid, where is source code is displaying both cummulative, and as single process. Above the grid is combobox for choice a calling point, from which was a method/procedure called, and a spinner for selection of concrete call. Below the grid is a row displayed a persistency time of method/procedure (if a "Global view" is choosed, in the row is displayed a cumulative time for corresponding method/procedure). A rows, in which a first column have the blue background, are the signed rows.

If a method/procedure is called n-times from one point, in combobox will be displayed only that single point, and combobox will be denied.

If a method/procedure is called n-times from more points, in combobox will display a text "Global view", and spinner displays total number of calls.

Èas trvání celé M/P
Èas trvání metody/procedury (pokud je vybráno "Globální pohled", pak se zobrazí èas za všechna volání dané metody/procedury).
Èas trvání vybraných øádkù
Souèet èásù vybraných øádkù.
Procentuální podíl
Procentuální podíl trvání metody/procedury vùèi celému sledování.


Statistics

This page is used for displaying statistical data evaluation (count/maximum) from LOG file.
List and number of sources
In list you can see this sources:
Icon | Description
 | VCX library
 | Form
 | Program/procedure file
 | Database container (stored procedures)
 | Report
 | Label
In other case you can see this items:
Icon | Description
 | Class
 | Member of class/object
 | Method/Procedure
The first level of nesting
Display approximately a minimum nesting level.
Maximum level of nesting
Display maximum nesting level.
Total time spend for watching
...any comment?
The most calling row
Display source code for most calling row in code, number of call, and name of his method/procedure. The button [image] is used for display row on page Sources.
The most time-consuming row
Display source code for most time spending row in code, time in second and name of his method/procedure. The button [image] is used for display row on page Process hierarchy.
The most calling method/procedure
Display name of most calling method/procedure and number of call. The button [image] is used for display method/procedure on page Sources.
The most time-consuming method/procedure
Display name of most time spending method/procedure and time in second. The button [image] is used for display row on page Process hierarchy.
Statistiku lze buï vytiskout [image] nebo uložit jako XML soubor [image] jehož struktura je popsána zde.


General options

Remember most ... open files
Dertermine, how many open/stored documents must the application keep in memory.
Offer list ... files
Choice to display/hide a list of last open/stored files. If number of momentally opened files will be bigger then this limit, application display a choice "More files...". This choice consequently displays a window, from which you can open a file, that is not in list.
Display most ... windows
This choice limited number of items in list of open windows. If number of subsequently opened windows will be bigger then this limit, application diplay a choice "More windows...". This choice consequently displays a window, from which you can open a application window, that is not in list.
Change width of column in a source code view
You can chhose Manual - user can manipulate column width (but not column order), or Authomatic - columns have a fixed width and column which display source code will have maximum length depending on grid width.


LOG file processing

Log file processing is really sophisticated action. If you select bad method to process LOG file (for instance, the first ;-) ), you probably can be the cause of falling your OS down.

Log file can be processed in three user ways:

  • Rearrange all log data to a special working DBF table, and load from it.
  • Direct processing LOG file.
  • Automatic detection.
Rearrange all log data to a special working DBF table, and load from it
This technique need very much of disc space for their working files. For these reasons it's acceptable only for little LOG files. Acceptable file length on WIN-95/128MB/P200 is cca 1MB, and on WIN-NT/128MB/P200 cca 2MB. But this method is very handly and quick to use.
Direct processing LOG file
This technique is used if LOG file have great length, or if on disc have not enough the space for standard using previous processing method.
Automatic detection
This method is used as default. By choosing maximal lenght of LOG file you can use processing method. Under length n MB is used first processing method, and over other processing method.
If source file dosn't exist, then:
During processing LOG file can be happened, so file of source code is not presented on disc at the directory, as write in LOG file. That's a standard situation, if code is traced in APP or EXE. For this case you can select program behaviour:
  • Go to next file - processing of LOG file will be continued, source code for this file will not be displayed.
  • Open a dialog - a opening dialog for file selection will be displayed. If no file wil be selected, no any source code for this file will be displayed.


Language

Well, what say about.... This option set up a language in which the program will be communicate with you. Momentally must be the application closed and started again to apply a change.
I don't say, that it would not go by another way (at runtime), but who have to remember a great quantum of momentally opened data and retrieve all of them to a new application environment?


System

Associate LOG files
If this option is checked, LOG type of file will be registered in OS registry file for this aplication.
Associate CVP files
If this option is checked, CVP type of file will be registered in OS registry file for this aplication.
Associate CVI files
If this option is checked, CVI type of file will be registered in OS registry file for this aplication.
Clear the list
This will delete all searched values listing in all running searching forms.
Loader
Umístìní a název zavadìèe pro VFP IDE.
Integrate with VFP IDE
Pøíznak, zda se má PDM automaticky registrovat u zavadìèe. Pokud je tato volba zaškrtnuta, pak se provede registrace u Zavadìèe. To zpùsobí, že se pøi spuštìní IDE automaticky vytvoøí nová volba v menu _MTOOLS která aktivuje podnabídku se seznamem nástrojù. Pokud je volba odškrtnuta, pak se provede oderegistrace ze Zavadìèe.


Saving

Save tree of sources
If this option is checked, table "Tree of sources" will be stored to disc.
Save tree of history
If this option is checked, table "Tree of history" will be stored to disc.
Compress data before saving
Combo box contains list of applicable packing components and also the default choice No packing. If any of packing component is checked, files will be packed before they'll be stored to CVP file.
Compress files bigger than ... MB
This option define a minimum file length for compression. Comprimation process start only if length of the file is bigger then limit. If this option equals 0 (zero) all files will be comprimed before saving.


Enhanced Report

Report Engine
Seznam Reportovacích Enginů třetích stran. Posunem po seznamu se v textovém poli pod seznamem objeví cesta na kterých se nacházejí binární soubory reportovacího enginu.
Pole
Textové pole do kterého se zadává umístění binárních souborů reportovacího enginu. Pomocí tlačítka [image] lze tuto cestu vybrat přes standardní dialog VFP.
Uložit
Uloží cestu reportovacího enginu.
Version
Zavolá dialog pro zobrazení verze.


Enhanced Report - version

EFRX
Verze EFRX enginu.
EFRX Interface
Verze EFRX Interface pro konkrétní engine.
Host Interface
Verze vlastního enginu.


Exports

Export...

This basic export copy 6 main files wehich structure are described in document Export file structure. At the same time will be created CVI file which contain basic information for an other repeating open.

Creating LOG file

Will be created a LOG file which is equivalent with LOG file created by VFP. Structutre of this file is described in document Structure of exported LOG file.

Call Stack Export

Will be created a XML and XSD file. This files display program running, and their structure is described in document CallStack Structure stored as XML.


Print

Engine
Umožňuje vybrat engine pro zpracování reportu.
Výstup
Dle druhu enginu lze vybrat buď tiskárnu nebo druh výstupu reportu (DOC/PDF/XLS/atd.) dle to co nabízí daný engine.
Od stránky
Počáteční stránka pro tisk/export.
Do stránky
Konečná stránka pro tisk/export.
Počet kopií
Počet kopíí pro tisk.
Řazení kopií
Způsob řazení stránek při tisku.
Orientace
Specifikuje orientace papíru reportu.
Soubor
Umístění a název souboru pro export.
Auto open
Zda se má po uložení reportu do souboru vytvořený soubor automaticky otevřít.


Method/procedure selection

This serve for choice method/procedure from called row. The combobox is used for selecting any procedural method and the grid for the sequence selection of calling method/procedure. Grid má dva sloupce - èas trvání øádku a poøadí volání.


Components

CVP používá rùzné komponenty pro svou práci.
  • List of used components for compress and decompress files:
    • BIX
    • BZIP2
    • ZLib
  • Enhanced Report, Engine for calling Third Party Report Engines


BIX Archiver 1.00 Beta 4

File compression and decompression.
Author: | Igor Pavlov
E-mail: | igorp@geocities.com
WWW:
http://compress.da.ru
http://compression.hypermart.net
FTP:
ftp://ftp.elf.stuba.sk/pub/pc/pack/bix*.zip


BZIP2 Archiver

File compression and decompression.
Author: | Julian Seward
E-mail: | jseward@acm.org
WWW:
http://sources.redhat.com/bzip2/index.html


ZLib Archiver

File compression and decompression.
Autor: | Jean-Loup Gailly and Mark Adler
E-mail: | zlib@gzip.org
WWW:
http://www.ctan.org/tex-archive/tools/zip/info-zip/zlib/
http://www.info-zip.org/pub/infozip/zlib/
http://www.winimage.com/zLibDll/


Enhanced Report

Enhanced Report je univerzální objektové rozhraní pro volání reportovacích enginù tøetích stran. Tyto enginy umožòují automatický pøevod reportu do rùzných formátù jako jsou DOC, RTF, PDF, XLS atd. Nastavení umístìní enginù se provádí na formuláøi "Možnosti" na stránce Enhanced Report.

Enhanced Report nyní podporuje tyto enginy:

Mind's Eye Report Engine
Univerzální engin pro pøevod reportu do PDF, pøímého tisku nebo zobrazení náhledu. Obsahuje také jádro pro generování PDF dokumentù. Generování PDF nebo zobrazení náhledu lze využít i v jiných programovacích jazycích (VB, VC++, atd.)
FRX2Any
Univerzální engin pro pøevod reportu do PDF, DOC, XLS, XML atd. Také obsahuje vlastní náhled reportu. Ke své práci potøebuje minimálnì Word 97. Jako jediný umožòuje definovat subreporty.
FRX2Word (alter)
Univerzální engin pro pøevod reportu do HTML, DOC a RTF. Ke své práci potøebuje minimálnì Word 97 a je to jediný nekomerèní engine.
Upozornìní:
Pro správnou funkci se musí k VCX knihovnì msoexp.vcx nakopírovat VCX knihovna frx2word.vcx z adresáøe efrx\frx2word.
XFRX
Univerzální engin pro pøevod reportu do HTML, DOC, PDF a XLS a obsahuje vlastní náhled reportu. Ke své práci potøebuje minimálnì Office 2000.
eReports
Univerzální engin pro pøevod reportu do HTML a PDF .
Upozornìní:
Pro správnou funkci se musí nastavit licenèní klíè pomocí speciálního klíèe v registry EFRX\EREPORTS_KEY.
Notice:
Pokud používáte Visual Report pak mùžete použít tento engine.


INI File

In CVP.ini file are stored two type of information:
Language mutation list
Compression and decompresion componets list

List of language mutation

In [LANGUAGE] section is stored list of language mutation. Count key determine momentally used number of mutations. Every language mutation have a key Languagen, where n is a index, for instance: Language1. This key value identify a section name, in which is stored other information about language mutation necessary for its using.
Count | = | 3
Language1 | = | CZECH
Language2 | = | ENGLISH
Language3 | = | SLOVAK
For instance: section [CZECH] contain an information about Czech language mutation. Following keys contained:
Collate = CZECH
This key determine language sorting for find operation.
Caption = Czech
This key determine base description, when localised library cannot be find.
Library = lang\Czech\cvp.app
This key determine name and location of localised library.
Help = lang\Czech\cvp.hlp
This key determine name and location of localised help.

List of compression and decompresion componets

In [PACKUTILS] section is stored list of compression and decompresion componets. Count key determine momentally used number of components. Every component have a key PackUtilsn where n is an index, for instance: PackUtils1. Key value consists of four part, divided by comma: se skládá ze ètyø èástí oddìlených èárkou: Packutils1 = BIX,bix.exe,bix.exe,bix.fxp
  • Compression and decompresion utility code
  • Compression utility name and location
  • Decompression utility name and location
  • LOcation and name of VFP module, which is used for compress and decompress
Notice:
All of these files can be defined via relative path or by environment variable (%WINDIR%, %PATH%). If CVP cannot find this files on defined path, search them on the standard system path.


System registry, keys and values

Keys and values are stored at HKEY_CURRENT_USER\Software\MJ\CVP\1.0.
  • Root Key
  • Options Key
  • RecentFiles Key
  • FindValues Key
  • EFRX Key

Root key

Directly in a root are stored size and position values of main application window:
Name | Description | Type | Values
Height | Height of window | DWORD
Width | Width of window | DWORD
Left | Left position | DWORD
Top | Top position | DWORD
WindowState Window status DWORD
0 | normal window
1 | minimized to an icon
2 | maximized (enlarged to fill the screen)
XXF012 | Position and size of Output window | BINNARY | Binnary value 20 bytes length
XXF070 | Position and size of Find window | BINNARY | Binnary value 20 bytes length
XXTool_1 | Position and size of Standard panel | BINNARY | Binnary value 20 bytes length
XXTool_2 | Position and size of Movement Panel | BINNARY | Binnary value 20 bytes length
Notice:
Form binnary value:
Position | Registry type | Description | Type
1-4 | character | Left position | DWORD
5-8 | character | Top position | DWORD
9-12 | character | Width size | DWORD
13-16 | character | Height size | DWORD
17-20 | character | WindowState property | DWORD
Toolbars binnary value:
Position | Registry type | Description | Type
1-4 | character | Left position | DWORD
5-8 | character | Top position | DWORD
9-12 | character | Width size | DWORD
13-16 | character | Height size | DWORD
17-20 | character | DockPosition property | DWORD

Options key

Application defaults:
Name | Description
Type | Values | Default value
DefPathNew | Path to last processed LOG file
String | Path to Coverage profiler directory
DefPathOpen | Path to last open CVP file
String | Path to Coverage profiler directory
Language | Language mutation ID
String
ENGLISH | English
CZECH | Czech
SLOVAK | Slovak
 CZECH
LogFile | LOG file processed type
DWORD
1 | Processing via DBF working table
2 | Direct processing
3 | Automatic detection
 3
MaxFileCount | Max number of visible files in list
DWORD | 1 - 99 | 5
MaxLogSize | Max LOG file length for direct processing
String | 0.10 - 99.9 MB (decimal separator is allways a point) | 2
MaxWindowCount | Max number of visible windows in list
DWORD | 1 - 99 | 5
OutPut | A flag, determined if Output window is visible
DWORD
0 | No
1 | Yes
 0
RecentFile | A flag, determined if last open CVP files in menu is visible
DWORD
0 | No
1 | Yes
 0
RecentFileCount | Max number of last opened CVP files
DWORD | 1 - 99 | 5
SaveFile_PackU | A code for packing component to determine it for saving processed LOG file
String
BIX | BIX Archiver
BZIP2 | BZIP Archiver
VFP | VFP library
ZLIB | ZLib Archiver
 Empty string
SaveFile_XXT500 | A flag, determined if the table used for displaying Source code tree, can be stored to processed LOG file.
DWORD
0 | No
1 | Yes
 0
SaveFile_XXT505 | A flag, determined if the table used for displaying Process hierarchy tree, can be stored to processed LOG file.
DWORD
0 | No
1 | Yes
 0
SizeGrid | A flag, determined if user can change column width in grids displaying source code
DWORD
1 | Handly
2 | Automatic
 2
FileSource | A flag, determined what CVP application do, if at processing LOG file the source code will not be found on disc
DWORD
1 | Go to next file
2 | Open dialog
 2
AnimatedIcon | A flag, determined if an animated icon will be displayed (in case when animated icon for finding or saving do problems, you can switch it out)
DWORD
0 | No
1 | Yes
 1
XXTool_1 | A flag, determined if Standard panel is displayed
DWORD
0 | No
1 | Yes
 0
XXTool_2 | A flag, determined if Movement panel is displayed
DWORD
0 | No
1 | Yes
 0
PackMinSize | Min length of file for comprimation before saving
String | 0.00 - 99.99 MB (decimal separator is allways a point) | 0.10
Loader | Umístìní a název zavadìèe pro VFP IDE
String | Empty string
IntegrateIDE | Pøíznak, zda se má CVP zaregistrovat u Loaderu
DWORD
0 | No
1 | Yes
 0

RecentFiles Key

List of last opened CVP files. It can look for instance:

File1="D:\TEMP\CVP\CH2.CVP"
File2="D:\TEMP\CVP\CH1.CVP"
File3="D:\TEMP\CVP\CH0.CVP"
...
File99="D:\TEMP\CVP\CH99.CVP"

Values are String type. Items in menu are displayed in order from max to min. Number of items is specified by value of MaxFileCount.

FindValues Key

List of last searched values. It can look for instance:

Value1="if "
Value2="if "
Value3="endif"
...
Value99="TYPE("

Values are String type.

EFRX Key

Seznam umístìní binárních souborù reportovacích enginù tøetích stran:
MERE="c:\MindsEyeReportEngine\"
EREPORTS="c:\program files\ereports\"
VREP="c:\vrep\"
...
Hodnoty jsou typu String.


CVP file structure

CVP file is normal DBF file format version VFP 3.0.

Structure

Item | Type | Size | Description
XX000 | Char | 11 | Control code
XX001 | Char | 1 | Control subcode
XX002 | Char binnary | 254 | Data

Control codes

Control code | Control subcode | Data | Description
VERSION 0
1.00
1.01
1.02
1.03
1.04
1.05
1.06
Version of stored CVP file
PACK_CLIENT 0
BIX | BIX Archiver
BZIP2 | BZIP2 Archiver
VFP | DLL knihovny dodávané s VFP pro instalaci
ZLIB | ZLib Archiver
Packing client code. If no any name of client here, data will not be packed.
FILES 0 XXT100.DBF,13,66905,P,8266,
XXT100.DBF | Name of stored file
13 | Number of record in which are stored first data
66905 | Size of file before packing
P | Packed file flag. If this value is empty, file is not packed.
8266 | Size of file after packing
 List of stored files. All of stored files have his own record.
FILES | 1 | End of File list | End of Stored file list.
XXT100.DBF | 0 | BZh91AY&SYt²ëx | Stored data.....

A "FILES" section

In this section is extended list of stored files. Except DBF files are stored FPT file too, and all of this files have his own table record. If setting is set to store all files, there's 10 records in this section (without last - ending record). List of files is in this case: XXT100.DBF,XXT200.DBF, XXT300.DBF, XXT300.FPT, XXT400.DBF, XXT400.FPT, XXT500.DBF, XXT505.DBF, XXT505.FPT. Every files is cutted to piece of 254 bytes. This code is used as control code for storing file.


Export file structure

At exporting time is created an information file with .CVI extension and separated files XXT100, XXT200, XXT300, XX400, XXT500 a XXT505. Their names are educed from name of CVI file.

List of exported files:

  • file.cvi - Information file
  • XXT100.DBF - Log table
  • XXT200.DBF - Type of source table
  • XXT300.DBF - Object table
  • XXT400.DBF - Source code table
  • XXT500.DBF - Table for displaying a tree according to type of sources
  • XXT505.DBF - Table for displaying a tree according to process

file.cvi - Information file

CVI file is an information file storing some info about - momentally only version number of CVP file. Do not change this data, please.

XXT100.DBF - LOG table

Item | Type | Description
XX100I | Integer | row ID/td>
XX200I | Integer | source ID
XX300I | Integer | object ID
XX100 | Number (11,6) | Time to row
XX101 | Integer | Row number
XX102 | Integer | Nesting level
XX505 | Integer | Process ID of method/procedure

XXT200.DBF - Type of Source table

Item | Type | Description | Values
XX200I | Integer | Source ID
XX201 | Char (254) | Source location
XX202 Char (1) Source type
P | Program
V | VCX library
S | Form
A | Aplication
E | EXE file
D | DBC container
R | Report
R | Label
 | Nonidentified source
XX203 Integer Bit flag
0 | Source not exist
1 | Source will be deleted

XXT300.DBF - Object table

Item | Type | Description | Values
XX300I | Integer | Object ID
XX200I | Integer | Source ID
XX301 | Memo | Object/class name
XX302 | Memo | Method/procedure name
XX303 Integer Bit flags
0 Source not exist
XX304 Number (2) Method/procedure type
3 | Procedure
4 | Method

XXT400.DBF - Source code table

Item | Type | Type | Description
XX300I | Integer | Object ID
XX101 | Integer | Row number
XX400 | Memo | Source code row
XX405 Integer Bit flags
0 From this row are called any other method/procedure

XXT500.DBF - Table for display a type of source tree

Item | Type | Description | Values
XX500IP | Integer | Parent node ID
XX500IM | Integer | Object node ID
XX501 Number (2) Object type
3 | Procedure
4 | Mthod
1 | Class
2 | Member of class/object
10 | Visual library
11 | Form
12 | Program/Procedure file
13 | Database container
14 | Unknown source
15 | System event
16 | Report
17 | Label
XX502 | Integer | Source ID/object ID
XX503 | Memo | Object description
XX510 Integer Bit flags
0 | Node still not be completely expanded
1 | Node is completely expanded

XXT505.DBF - Table for display a process tree

Item | Type | Description | Values
XX505IP | Integer | Parent node ID
XX505IM | Integer | Object node ID
XX501 Number (2) Object type
3 | Procedure
4 | Method
XX502 | Integer | Object ID
XX100I | Integer | LOG file row ID
XX510 Integer Bit flags
0 | Node still not be completely expanded
1 | Node is completely expanded


CallStack structure stored as XML

Scheme definition - XSD file

<?xml version="1.0" encoding="windows-1250" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:x-cvp:schemas:dokument:1.0"
xmlns="urn:x-cvp:schemas:dokument:1.0" elementFormDefault="qualified">
 <xs:complexType name="xmp">
  <xs:sequence>
    <xs:element name="mp" type="xmp"  minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
  <xs:attribute name="id" type="xs:int" use="required" />
  <xs:attribute name="pid" type="xs:int" use="required" />
  <xs:attribute name="level" type="xs:int" use="required" />
  <xs:attribute name="time" type="xs:float" use="required" />
  <xs:attribute name="percent" type="xs:float" use="required" />
  <xs:attribute name="lines" type="xs:int" use="required" />
  <xs:attribute name="name" type="xs:string" use="required" />
  <xs:attribute name="source" type="xs:string" use="required" />
 </xs:complexType>

 <xs:element name="callstack">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="mp" type="xmp" minOccurs="1" maxOccurs="unbounded" />
   </xs:sequence>
   <xs:attribute name="maxtime" type="xs:float" use="required" />
   <xs:attribute name="logfile" type="xs:string" use="required" />
   <xs:attribute name="exporttype" type="xs:string" use="required" />
   <xs:attribute name="cvpid" type="xs:string" use="required" />
  </xs:complexType>
 </xs:element>
</xs:schema>

List of attributes

Name | Type | Description
id | Integer | Process ID of method/procedure
pid | Integer | Process ID of superior method/procedure
level | Integer | Nesting level
time | Float | Maintenance time of method/procedure
percent | Float | Maintenance time of method/procedure in percent
lines | Integer | Number of processed row
name | String | Name of method/procedure
source | String | Path and name of file
maxtime | Float | Summary time spended by monitoring
logfile | String | Path and name of LOG file
exporttype | String | Typ exportu
cvpid | String | ID pracovaného LOG souboru


Structure of exported LOG file

Exported LOG file is an ASCII text file with column separator ",". Structure is the same as a standard LOG file created by SET COVERAGE TO..., but as last field in the row is added an ID of concrete method/procedure process. This identifier make you possible to identify a rows appopriated for method/procedure process, and you can compare various process.

Name | Type | Description
Time | Number (11,6) | Row performance time.
Class | Memo | Class name. If this value is empty, it's a procedure.
Method/Procedure | Memo | Name of method/procedure.
Row number | Integer | Number of passed row.
File | Char (254) | File name.
Level | Integer | Nesting level.
Process ID | Integer | Process ID of concrete method/procedure


Struktura souboru analýzi

Definice schéma - XSD soubor

<?xml version="1.0" encoding="windows-1250" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 targetNamespace="urn:x-cvp:schemas:dokument:1.0"
  xmlns="urn:x-cvp:schemas:dokument:1.0"
 elementFormDefault="qualified">

 <xs:complexType name="mptp">
  <xs:attribute name="key" type="xs:string" use="required" />
  <xs:attribute name="mp" type="xs:string" use="required" />
  <xs:attribute name="count" type="xs:int" use="required" />
  <xs:attribute name="time" type="xs:float" use="required" />
  <xs:attribute name="average" type="xs:float" use="required" />
  <xs:attribute name="percent" type="xs:float" use="required" />
  <xs:attribute name="id" type="xs:int" use="required" />
 </xs:complexType>

 <xs:complexType name="rtp">
  <xs:attribute name="key" type="xs:string" use="required" />
  <xs:attribute name="mp" type="xs:string" use="required" />
  <xs:attribute name="row" type="xs:string" use="required" />
  <xs:attribute name="rownumber" type="xs:int" use="required" />
  <xs:attribute name="count" type="xs:int" use="required" />
  <xs:attribute name="time" type="xs:float" use="required" />
  <xs:attribute name="percent" type="xs:float" use="required" />
  <xs:attribute name="average" type="xs:float" use="required" />
  <xs:attribute name="id" type="xs:int" use="required" />
 </xs:complexType>

 <xs:complexType name="rts">
  <xs:sequence>
   <xs:element name="rtp" type="rtp" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
  <xs:attribute name="run" type="xs:int" use="required" />
  <xs:attribute name="interval" type="xs:int" use="required" />
  <xs:attribute name="timefrom" type="xs:float" use="required" />
  <xs:attribute name="timeto" type="xs:float" use="required" />
  <xs:attribute name="sort" type="xs:int" use="required" />
  <xs:attribute name="first" type="xs:int" use="required" />
  <xs:attribute name="firstn" type="xs:int" use="required" />
  <xs:attribute name="sumarize" type="xs:int" use="required" />
 </xs:complexType>

 <xs:complexType name="rps">
  <xs:sequence>
   <xs:element name="rtp" type="rtp" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
  <xs:attribute name="run" type="xs:int" use="required" />
  <xs:attribute name="interval" type="xs:int" use="required" />
  <xs:attribute name="countfrom" type="xs:int" use="required" />
  <xs:attribute name="countto" type="xs:int" use="required" />
  <xs:attribute name="sort" type="xs:int" use="required" />
  <xs:attribute name="first" type="xs:int" use="required" />
  <xs:attribute name="firstn" type="xs:int" use="required" />
 </xs:complexType>

 <xs:complexType name="mpts">
  <xs:sequence>
   <xs:element name="mptp" type="mptp" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
  <xs:attribute name="run" type="xs:int" use="required" />
  <xs:attribute name="interval" type="xs:int" use="required" />
  <xs:attribute name="timefrom" type="xs:float" use="required" />
  <xs:attribute name="timeto" type="xs:float" use="required" />
  <xs:attribute name="sort" type="xs:int" use="required" />
  <xs:attribute name="first" type="xs:int" use="required" />
  <xs:attribute name="firstn" type="xs:int" use="required" />
  <xs:attribute name="sumarize" type="xs:int" use="required" />
 </xs:complexType>

 <xs:complexType name="mpps">
  <xs:sequence>
   <xs:element name="mptp" type="mptp" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
  <xs:attribute name="run" type="xs:int" use="required" />
  <xs:attribute name="interval" type="xs:int" use="required" />
  <xs:attribute name="countfrom" type="xs:int" use="required" />
  <xs:attribute name="countto" type="xs:int" use="required" />
  <xs:attribute name="sort" type="xs:int" use="required" />
  <xs:attribute name="first" type="xs:int" use="required" />
  <xs:attribute name="firstn" type="xs:int" use="required" />
 </xs:complexType>

 <xs:element name="analyze">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="rts" type="rts" minOccurs="1" maxOccurs="1" />
    <xs:element name="rps" type="rps" minOccurs="1" maxOccurs="1" />
    <xs:element name="mpts" type="mpts" minOccurs="1" maxOccurs="1" />
    <xs:element name="mpps" type="mpps" minOccurs="1" maxOccurs="1" />
   </xs:sequence>
   <xs:attribute name="logfile" type="xs:string" use="required" />
   <xs:attribute name="exporttype" type="xs:string" use="required" />
   <xs:attribute name="cvpid" type="xs:string" use="required" />
  </xs:complexType>
 </xs:element>
</xs:schema>

Seznam atributù

Název | Typ | Popis
key | String | Identifikaèní klíè
mp | String | Name of method/procedure
row | String | Obsah øádku
rownumber | Integer | Èíslo øádku
count | Integer | Poèet øádkù/metod
pid | Integer | Process ID of superior method/procedure
level | Integer | Nesting level
time | Float | Maintenance time of method/procedure
percent | Float | Èas trvání metody/procedury, øádku v procentech
average | Float | Prùmìrný èas trvání metody/procedury, øádku
id | Integer | ID záznamu v seznamu
run | Integer | Pøíznak, zda se byla spuštìna analýza pro daný blok
interval | Integer | Urèení intervalu (pod, nad, mezi)
countfrom | Integer | Poèáteèní mez intervalu - poèet
countto | Integer | Koneèná mez intervalu - poèet
sort | Integer | Tøídìní (vzestupnì,sestupnì)
first | Integer | Pøíznak výbìru prvních n záznamù
firstn | Integer | Prvních n záznamù
timefrom | Float | Poèateèní mez intervalu - èas
timeto | Float | Koneèná mez intervalu - èas
sumarize | Integer | Pøíznak sumarizace
logfile | String | Path and name of LOG file
exporttype | String | Typ exportu
cvpid | String | ID pracovaného LOG souboru

XML soubor

<?xml version="1.0" encoding="windows-1250" standalone="yes"?>
<cvp:analyze
xmlns:cvp="urn:x-cvp:schemas:dokument:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:x-cvp:schemas:dokument:1.0 XFRX8500_ANALYZE.XSD"
 logfile="D:\TEMP\XFRX8500.LOG" exporttype="Analyse"
 cvpid="{2730D62B-96D5-45A8-A03F-1F7D56B96BE1}" >
 <cvp:rts run="1" interval="1" timefrom="0.050000" timeto="1.000000" sort="2" first="1"
  firstn="10" sumarize="1" >
  <cvp:rtp key="RT_1" mp="xfscrollbar.bar.mousemove" row="loParent.Update(.NULL.)"
   rownumber="25" count="1" time="0.001104" average="0.001104" percent="33.083608" id="1" />
  <cvp:rtp key="RT_1" mp="xfscrollbar.bar.mousemove" row="loParent.Update(.NULL.)"
   rownumber="25" count="1" time="0.000874" average="0.000874" percent="26.191190" id="2" />
 </cvp:rts>
 <cvp:rps mp="RP2" run="1" interval="2" countfrom="1" countto="1" sort="2" first="1" firstn="10" >
  <cvp:rtp key="xfcont.updatepos" row="ENDIF" rownumber="4"
   count="2" time="0.000093" average="0.000047" percent="2.786934" id="11" />
  <cvp:rtp key="RP2" mp="xfcont.updatepos"
   row="STORE -hpos TO (IIF(tlVert,&quot;This.ActiveSheet.Top&quot;,&quot;This.ActiveSheet.Left&quot;))"
   rownumber="3" count="2" time="0.000696" average="0.000348" percent="20.857057" id="12" />
 </cvp:rps>
 <cvp:mpts run="1" interval="1" timefrom="0.050000" timeto="1.000000"
  sort="2" first="1" firstn="10" sumarize="1" >
  <cvp:mptp key="MTS1" mp="xfscrollbar.bar.mousemove" count="2" time="0.003337"
  average="0.001669" percent="100.000000" id="21" />
 </cvp:mpts>
 <cvp:mpps run="1" interval="2" countfrom="1" countto="1" sort="2" first="1" firstn="10" >
  <cvp:mptp key="MP1" mp="xfscrollbar.bar.mousemove" count="2" time="0.003337"
   average="0.001669" percent="100.000000" id="24" />
  <cvp:mptp key="MP2" mp="xfscrollbar.update" count="2" time="0.001564"
   average="0.000782" percent="46.868445" id="25" />
 </cvp:mpps>
</cvp:analyze>


Struktura souboru statistiky

Definice schéma - XSD soubor

<?xml version="1.0" encoding="windows-1252" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 targetNamespace="urn:x-cvp:schemas:dokument:1.0"
 xmlns="urn:x-cvp:schemas:dokument:1.0"
 elementFormDefault="qualified">

 <xs:complexType name="maxcallrow">
  <xs:attribute name="row" type="xs:string" use="required" />
  <xs:attribute name="mp" type="xs:string" use="required" />
  <xs:attribute name="count" type="xs:int" use="required" />
 </xs:complexType>

 <xs:complexType name="maxtimerow">
  <xs:attribute name="row" type="xs:string" use="required" />
  <xs:attribute name="mp" type="xs:string" use="required" />
  <xs:attribute name="time" type="xs:float" use="required" />
 </xs:complexType>

 <xs:complexType name="maxcallmp">
  <xs:attribute name="mp" type="xs:string" use="required" />
  <xs:attribute name="count" type="xs:int" use="required" />
 </xs:complexType>

 <xs:complexType name="maxtimemp">
  <xs:attribute name="mp" type="xs:string" use="required" />
  <xs:attribute name="time" type="xs:float" use="required" />
 </xs:complexType>

 <xs:complexType name="source">
  <xs:attribute name="sid" type="xs:int" use="required" />
  <xs:attribute name="caption" type="xs:string" use="required" />
  <xs:attribute name="count" type="xs:int" use="required" />
 </xs:complexType>

 <xs:complexType name="sources">
  <xs:sequence>
   <xs:element name="source" type="source" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
 </xs:complexType>

 <xs:element name="statistics">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="maxcallrow" type="maxcallrow" minOccurs="1" maxOccurs="1" />
    <xs:element name="maxtimerow" type="maxtimerow" minOccurs="1" maxOccurs="1" />
    <xs:element name="maxcallmp" type="maxcallmp" minOccurs="1" maxOccurs="1" />
    <xs:element name="maxtimemp" type="maxtimemp" minOccurs="1" maxOccurs="1" />
    <xs:element name="sources" type="sources" minOccurs="1" maxOccurs="1" />
   </xs:sequence>
   <xs:attribute name="minlevel" type="xs:int" use="required" />
   <xs:attribute name="maxlevel" type="xs:int" use="required" />
   <xs:attribute name="maxtime" type="xs:float" use="required" />
   <xs:attribute name="logfile" type="xs:string" use="required" />
   <xs:attribute name="exporttype" type="xs:string" use="required" />
   <xs:attribute name="cvpid" type="xs:string" use="required" />
  </xs:complexType>
 </xs:element>
</xs:schema>

Seznam atributù

Název | Typ | Popis
sid | Integer | ID typu zdroje
caption | String | Popis zdroje
count | Integer | Poèet
time | Float | Maintenance time of method/procedure
mp | String | Name of method/procedure
row | String | Obsah øádku
minlevel | Integer | Minimal nesting level
maxlevel | Integer | Maximal nesting level
maxtime | Float | Celkový èas sledování
logfile | String | Path and name of LOG file
exporttype | String | Typ exportu
cvpid | String | ID pracovaného LOG souboru

XML soubor

<?xml version="1.0" encoding="windows-1250" standalone="yes"?>
<cvp:statistics
xmlns:cvp="urn:x-cvp:schemas:dokument:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:x-cvp:schemas:dokument:1.0 XFRX8500_STATISTICS.XSD"
 minlevel="16" maxlevel="18" maxtime="0.003337"
 logfile="D:\TEMP\XFRX8500.LOG" exporttype="Statistics"
 cvpid="{2730D62B-96D5-45A8-A03F-1F7D56B96BE1}" >
 <cvp:maxcallrow row="LOCAL lii,loParent" mp="xfscrollbar.bar.mousemove" count="2" />
 <cvp:maxtimerow row="loParent.Update(.NULL.)" mp="xfscrollbar.bar.mousemove" time="0.001104" />
 <cvp:maxcallmp mp="xfscrollbar.bar.mousemove" count="2" />
 <cvp:maxtimemp mp="xfscrollbar.bar.mousemove" time="0.001812" />
 <cvp:sources>
  <cvp:source sid="1" caption="Class" count="2" />
  <cvp:source sid="2" caption="Member of class&#47;object" count="1" />
  <cvp:source sid="4" caption="Method" count="3" />
  <cvp:source sid="10" caption="VCX library" count="1" />
 </cvp:sources>
</cvp:statistics>


CVP and the future (The TODO)

- Poznámka na metodì/proceduøe èi øádku metody/proceduøy.
- Záložka na metodì/proceduøe èi øádku metody/proceduøy.