170 likes | 390 Views
Generatory dokumentacji kodu źródłowego. Cel tworzenia dokumentacji Sposób dokumentowania Przegląd narzędzi. Po co dokumentować kod?. Prezentacja interfejsu Duże projekty, współpraca wielu programistów, łatwa kontrola Wielokrotne wykorzystanie tego samego kodu
E N D
Generatory dokumentacji kodu źródłowego Cel tworzenia dokumentacji Sposób dokumentowania Przegląd narzędzi
Po co dokumentować kod? • Prezentacja interfejsu • Duże projekty, współpraca wielu programistów, łatwa kontrola • Wielokrotne wykorzystanie tego samego kodu • Pomoc w wykrywaniu błędów w projekcie
Komentarze w kodzie • Informacja będąca w dwóch miejscach – z czasem będzie nieaktualna • Informację w kodzie źródłowym łatwiej utrzymać jako aktualną • Programiście łatwiej czytać (i umieszczać) komentarze w kodzie • Generator dokumentacji przetwarza ją na bardziej czytelny format dla innych
Rodzaje dokumentacji • Generowana na żądanie klienta • Statyczna – generowana co jakiś czas • Dostępna przez sieć (np. w formacie HTML) • W formacie do druku (np. ps, pdf) • Opisująca tylko strukturę (XML)
Działanie generatora • Wejście – kod źródłowy z odpowiednio sformatowanymi komentarzami (ew. bez komentarzy) • Wyjście – gotowa dokumentacja w odpowiednim formacie (formatach)
Budowa generatora Podział na: • Front-end (przód) • Back-end (tył) Doclets Rozne formaty, rozne jezyki
Komentarze typu JavaDoc /** * Tekst dokumentacji. */ /// Jednowierszowy Używane przez większość generatorów Odnoszą się do najbliższego następnego elementu
/** * Przykładowa klasa. * Pozwala wypisać Hello, world! */ class hello{ /** * Konstruktor */ function hello(){} /** * Metoda wypisująca tekst Hello, world! */ function wypisz(){ echo „Hello, world!”;} }
Formatowanie wizualne /** * <p>Tekst dokumentacji</p> */ Większość generatorów dopuszcza umieszczanie w DocBlock’ach niektórych tagów HTML, czasem innych(np. LaTeX)
Tagi /** * Jakaś funkcja. * @version 10.5 */ function bla(){} @identyfikator – nieobowiązkowy element DocBlock’u, przypisujący danemu atrybutowi wartość generatory mają listy rozpoznawanych tagów
Przykładowe tagi @version - wersja @author – kto jest autorem @param – opis parametrów funkcji @return – opis wartości zwracanej przez funkcje @see – link do dokumentacji innego elementu @link http://www.phpdoc.org - wstawienie linku @source – wstawienie kodu źródłowego funkcji @package – pakiet do którego należy dany element @abstract – określenie klasy abstrakcyjnej @access [public | private]
/** * Przykładowa klasa. * Pozwala wypisać Hello, world! * @link http://www.phpdoc.org * @version –1.33(3) ;-) * @author balon * @abstract */ class hello extends bazowa{ /// Konsturktor function hello(){} /** * Wypisuje tekst. * @return void */ function pisz(){} }
Narzędzia dla PHP • phpDocumentor (www.phpdoc.org) • phpxref (phpxref.sourceforge.net) • PHPDoc (www.phpdoc.de) • PHPDoc nakładka na JavaDoc’a (www.callowayprints.com/phpdoc) • PHPDocGen – napisany w perlu • PHPAutoDoc • PHPCodeDoc • BalonDoc ;-) – dokumentacja SSUL
„BalonDoc” ;-) (1) • Stworzony na potrzeby serwera SSUL • Wypluwa tylko HTML, ale podzielony na Front-end i Back-end • Generuje dokumentacje na żądanie – zawsze aktualną • Używa swojego parsera • Można mieszać kod obiektowy i strukturalny, niezależny od struktury plików • Brak komentarzy mu nie przeszkadza, ale nadmiarowe komentarze stwarzają problemy
„BalonDoc” ;-) (2) Komentarze: /********************* * NazwaKlasy * ********************* * Opis działania * * klasy. * ********************* * autor wersja * *********************/ /*********************** * Opis\n funkcji.<br> * ***********************/
Inne języki (narzędzia darmowe) • JavaDoc – część SDK • DOC++ • Doxygen • CppDoc I wiele innych – długa lista jest na stronie: http://www.stack.nl/~dimitri/doxygen/links.html