Tworzenie automatycznej dokumentacji kodu

0

Cześć!

Czego używacie do tworzenia dokumentacji kodu, oraz generowania graficznej hierarchii? Sprawdziłem do tej pory kilka silników:

FPDoc Editor/Lazarus Documentation Editor - narzędzia zintegrowane z IDE (fajnie klika się po klasach w edytorze do zmiany kontekstu), lub zewnętrzne do tworzenia dokumentacji w XML, nie dodaje się nic do źródeł. Fajnie Lazarus to wyświetla w hintach po najechaniu na klasę - pełna integracja z IDE, ale nie widzę możliwości eksportu do html, pdf czy chm. Brak więc też możliwości generowania diagramów z kodu.

pasdoc - niestety narzędzie nie integruje się z Lazarusem i nie podpowiada hintów, ale za to generuje dokumentacje automatycznie z kodu, używa do tego znaczników, więc trzeba "zaśmiecić" kod znacznikami (nie wiem czy to minus, to po prostu fakt). Wygenerowana dokumentacja prezentuje się jako ładna strona HTML, posiada wyszukiwanie, zaimplementowane w JS. Obsługuje stylowanie. Generuje także strukturę klas i unitów na podstawie której GraphViz generuje schematy. pasdoc również osadza już awansem ścieżki do tych schematów w dokumentacji, więc po wygenerowaniu plików są dostępne na stronie internetowej dokumentacji.

screenshot-20200420064255.png

screenshot-20200420064317.png

Z tego powodu, że pasdoc generuje ładny, html, daje możliwość półautomatycznego generowania schematów, wspiera stylowanie oraz wyszukiwanie jest moim faworytem. Niemniej mam z nim jeden problem.

Mam klase

  TLclView = class(TInterfacedObject, IGOL_View) ...

oraz interfejs

IGOL_View = interface
    procedure UpdateView( ABoard : TViewBoard);
end;

Czyli dziedziczę po TInterfacedObject a implementuje interfejs IGOL_View. Niestety pasdoc nie pokazuje implementacji tylko, że dana klasa implementuje jakikolwiek interfejs w wyniku pierwszego dziedziczenia

screenshot-20200420063950.png

Znacie sposób, żeby w pasdoc wygenerować, jakie klasy implementują jakie interfejsy, lub znacie jakieś podobne narzędzie co to potrafi?

0
somedev napisał(a):

Znacie sposób, żeby w pasdoc wygenerować, jakie klasy implementują jakie interfejsy, lub znacie jakieś podobne narzędzie co to potrafi?

Znacie, ale nie dla Lazarusa, tylko dla Delphi.

Ale... Dawno temu używałem PasDoc'a i pamiętam, że radziliśmy sobie z takim problemem przy pomocy linków.
https://github.com/pasdoc/pasdoc/wiki/LinkTag

Nie jest to automat, ale da się.
A automat... no cóż, jak wszystko w Lazarusie i to możesz sobie dopisać :D

1

Dawno temu oglądałem prezentację frameworka Moose, do analizy i wizualizacji kodu napisanego w Delphi (i nie tylko). Oprócz renderowania grafów powiązań pomiędzy klasami (dziedziczenie), graficznie prezentował też informacje na temat liczby i złożoności klas oraz zawartych w nich metod (długość, złożoność cyklomatyczna). Sama wizualizacja może być w postaci płaskiego drzewa lub trójwymiarowej struktury (wykresu przestrzennego), ułatwiających utrzymanie i refaktoryzację kodu.

Ww. prezentacja jest tutaj:

Co prawda nie jest to narzędzie przeznaczone do dokumentowania kodu, ale na pewno warte uwagi w ogólnym rozumieniu utrzymywania kodu dużych projektów. No i problem w tym, że to stara prezentacja (z 2014 roku) i nie wiem na jakim etapie znajduje się ten projekt obecnie – nie wiem czy jest wsparcie dla Free Pascala. No i sam go nie używałem, więc moja wiedza na jego temat pochodzi raptem z jednej prezentacji.

W razie czego niech pozostanie jako ciekawostka, gdyby się nie przydał. ;)

1

@somedev: Zerknij jeszcze na ROBODoc
Wg info z netu, w FPDoc można wyeksportować HTML lub CHM

1 użytkowników online, w tym zalogowanych: 0, gości: 1