Javadoc. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar Utolsó módosítás: április 13.

Hasonló dokumentumok
Javadoc. Dokumentációs megjegyzés (2) Dokumentációs megjegyzés (1) Dokumentációs megjegyzés felépítése

Java II. I A Java programozási nyelv alapelemei

Programozási nyelvek JAVA EA+GY 1. gyakolat

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Programozási nyelv Java

Szoftvertechnolo gia gyakorlat

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

Java I. A Java programozási nyelv

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozási technológia I.

Saját Subversion tároló üzemeltetése i. Saját Subversion tároló üzemeltetése

Gyakorlati vizsgatevékenység A

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Java II. I A Java programozási nyelv alapelemei

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

OOP és UML Áttekintés

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Osztályok. 4. gyakorlat

Az R használata (tárgyalt R verzió: ) Jeszenszky Péter Debrecen Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu

Gyakorlati vizsgatevékenység B

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Java programozási nyelv 4. rész Osztályok II.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

A Java EE 5 plattform

Java programozási nyelv 6. rész Java a gyakorlatban

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Forráskód formázási szabályok

Regionális forduló november 19.

Regionális forduló november 19.

Bevezető. Servlet alapgondolatok

Abstract osztályok és interface-ek. 7-dik gyakorlat

RapidMiner telepítés i. RapidMiner telepítés

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Kommunikációs rendszerek teljesítőképesség-vizsgálata

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban

Viczián István IP Systems JUM XIX szeptember 18.

JAVA PROGRAMOZÁS 2.ELŐADÁS

A legfontosabb DOS parancsok

BASH SCRIPT SHELL JEGYZETEK

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

Pénzügyi algoritmusok

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

A PiFast program használata. Nagy Lajos

OOP: Java 8.Gy: Abstract osztályok, interfészek

Útmutató az OKM 2007 FIT-jelentés telepítéséhez

Java programozási nyelv 5. rész Osztályok III.

Java I. A Java programozási nyelv

A TERC VIP költségvetés-készítő program telepítése, Interneten keresztül, manuálisan

AWK programozás, minták, vezérlési szerkezetek

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

AWK programozás Bevezetés

TERC V.I.P. hardverkulcs regisztráció

Objektumorientált programozás C# nyelven

Alkalmazások fejlesztése A D O K U M E N T Á C I Ó F E L É P Í T É S E

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Aspektus-orientált nyelvek XML reprezentációja. Kincses Róbert Debreceni Egyetem, Informatikai Intézet

C++ fejlesztés az ECLIPSE környezetben

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

E-Freight beállítási segédlet

Java és web programozás

HTML é s wéblapféjlészté s

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

Web-technológia PHP-vel

Dokumentumformátumok Jelölő nyelvek XML XML. Sass Bálint Bevezetés a nyelvtechnológiába 2. gyakorlat szeptember 20.

Cekla. Készítette Doxygen Tue Sep :13:44

Collections. Összetett adatstruktúrák

Stateless Session Bean

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

A NYELV NEVE. Kezdetben: Oak. James Gosling. Java: Sun Mycrosystems védjegyev

Szervlet-JSP együttműködés

BASH script programozás II. Vezérlési szerkezetek

Segédanyag: Java alkalmazások gyakorlat

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Címkék és ágak kezelése i. Címkék és ágak kezelése

AWK programozás, minták, vezérlési szerkezetek

Közösség, projektek, IDE

2017/01/27 08:59 1/6 Gettext Rendszer

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar

Szoftvergyártás: gyártásvezérlés kód-figyeléssel

Operációs rendszerek gyak.

Megoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat

Magas szintű programozási nyelvek 2 Előadás jegyzet

w w w. h a n s a g i i s k. h u

C#, OOP. Osztályok tervezése C#-ban

Programozási nyelvek Java

Occam 1. Készítette: Szabó Éva

BŐVÍTMÉNYEK TELEPÍTÉSE ÉS SZERKESZTÉSE WORDPRESS-BEN

Java grafikai lehetőségek

A szerzõrõl... xiii Bevezetés... xv

JCL eljárások Tanfolyami jegyzet. ICSS Kft 2012

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Adóhátralék kezelés egyszerűen. Telepítési útmutató. A program futtatásához Windows XP, Windows 7, 8 operációs rendszer szükséges.

Programozási nyelvek II.: JAVA

Átírás:

Javadoc Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu Utolsó módosítás: 2018. április 13.

Dokumentációs megjegyzés (1) A forráskódban /** és */ határolók között elhelyezett megjegyzés. Nem hivatalosan Javadoc megjegyzésnek is nevezik. Osztály, interfész, metódus, konstruktor vagy adattag deklarációja előtt helyezhető el. Egyéb helyeken figyelmen kívül lesznek hagyva. A megjegyzés szövegét HTML-ben kell megadni. Használható a HTML bármelyik verziója. A szövegben ügyelni kell a < és & karakterek használatára (megadásuk < és & módon történhet). 2

Dokumentációs megjegyzés (2) Tartalmazhatja a forráskódban egyetlen sor, mint például: /** Egysoros dokumentációs megjegyzés. */ Megadható több sorban, mint például: /** Ez pedig egy több sorból * álló dokumentációs * megjegyzés. */ A feldolgozás során a határolók között a sorok elejéről elhagyásra kerülnek a whitespace és * karakterek. Ha egy sor elején nincs * karakter, akkor nem kerülnek elhagyásra a whitespace karakterek a sor elejéről. Ez hasznos például programkód pre elemben történő megadása esetén. 3

Dokumentációs megjegyzés felépítése Az alábbi két részből áll: Fő leírás (main description): a /** határoló után kezdődik és a címke szakasz elejéig tart, annak hiányában a */ határolóig. Címke szakasz (tag section): az első olyan @ karakterrel kezdődik, amely a sor elején jelenik meg, ha elhagyjuk annak elejéről a vezető * karaktereket, a whitespace karaktereket és a /** határolót. Ha a fő leírásban sor elején kell olyan @ karaktert megadni, amely nem a címke szakasz elejét jelzi, használjuk az @ karakterhivatkozást. Megadható fő leírást nem tartalmazó, csak címke szakaszból álló dokumentációs megjegyzés. 4

Fő leírás (1) Az első mondat a dokumentált entitás (például osztály, metódus) tömör összefoglalását kell, hogy tartalmazza. Angol nyelv esetén az első mondat végét az a pont karakter jelzi, melyet szóköz, tabulátor vagy újsor karakter követ. Ha egy ilyen pont karakter nem az első mondat végét jelezi, akkor az egyedhivatkozással adjuk meg a szóközt, vagy helyezzünk el egy megjegyzést <!-- és --> határolók között közvetlenül a pont karakter után. Az angoltól eltérő nyelveknél a fenti megoldás nem működik, ilyenkor a problémás írásjelet karakterhivatkozással (.) adjuk meg helyette. 5

Fő leírás (2) A felhasználó nyelvi beállításai határozzák meg a dokumentációs megjegyzések nyelvét. Linux környezetben lásd a LANG környezeti változó értékét. Az operációs rendszer szintű nyelvi beállítások felülbírálása: A Javadoc program parancssorból történő futtatásakor adjuk meg a -locale opciót, mint például -locale en_us A Maven Javadoc Plugin esetén használjuk a locale paramétert vagy az azonos nevű rendszertulajdonságot. 6

Több adattag dokumentálása Kerülendő az alábbi: /** * Az intervallum eleje és vége. */ public int start, end; A dokumentációs megjegyzés ilyenkor le lesz másolva mindkét adattaghoz. 7

Címkék (1) A dokumentációs megjegyzésekben használható speciális kulcsszavak, melyekben a kis és nagybetűk különbözőek! Kétfajta címke használható: blokk címke és szövegközi címke. Szövegközi címkék esetén megszorítások lehetnek arra, hogy a címke hol megengedett a megjegyzésben. Blokk címkék esetén megszorítások lehetnek az előfordulások számára. 8

Címkék (2) Blokk címke (block tag): @címke formában adhatók meg a sor elején, opcionálisan megengedettek előttük whitespace és * karakterek. Példa: @author, @param A címkéhez a kulcsszót követő szöveg tartozhat, melyet akár több sor is tartalmazhat. A szöveg a következő blokk címkéig vagy a dokumentációs megjegyzés végét jelző */ határolóig tart. Szövegközi címke (inline tag): {@címke} formában adhatók meg a megjegyzésben bárhol, ahol szöveg megengedett. Példa: {@code}, {@link} 9

Példa A JDK 9 java.util.linkedlist osztályának forrásából: /** * Pops an element from the stack represented by this list. * In other words, removes and returns the first element of * this list. * * <p>this method is equivalent to {@link #removefirst()}. * * @return the element at the front of this list (which is * the top of the stack represented by this list) * @throws NoSuchElementException if this list is empty * @since 1.6 */ public E pop() { return removefirst(); } 10

Csomagokhoz tartozó megjegyzés állományok Csomagok dokumentálásához az ajánlott megoldás: Helyezzünk el a csomagban egy packageinfo.java nevű állományt, melynek tartalmát az alábbi példa szemlélteti: /** * Segédosztályokat tartalmazó csomag. */ package util; A dokumentációs megjegyzésben csak bizonyos blokk és szövegközi címkék megengedettek. 11

Áttekintő megjegyzés állományok (1) Megadható a teljes alkalmazásra vagy több csomagra vonatkozó dokumentáció, melyet külön állomány tartalmaz. Ennek neve tetszőleges lehet, de tipikusan overview.html használt a gyakorlatban. Tipikusan a csomagokat tartalmazó könyvtárszerkezet tetején helyezik el. Az állomány elérési útvonalát a Javadoc eszköznek a -overview opcióval kell megadni, Apache Maven használata esetén pedig a -Doverview= opcióval a megfelelő bővítménynek (Maven Javadoc Plugin). 12

Áttekintő megjegyzés állományok (2) Az állományt HTML-ben kell megírni. Kötelező a body elem megadása, melynek tartalma kerül másolásra a dokumentáció generálásakor. Példa az állomány tartalmára: <html> <body> <p>nyílt forrású osztálykönyvtár racionális számok kezeléséhez. A fő funkcionalitást a {@link math.fraction} csomag tartalmazza.</p> </body> </html> Bizonyos blokk és szövegközi címkék is használhatók. 13

Megjegyzések automatikus másolása Metódusok dokumentációs megjegyzései örökölhetők a szülőosztálytól és az implementált interfészektől. Ez nem vonatkozik a konstruktorokra! Ha egy dokumentációs megjegyzésben hiányzik a fő leírás, a @return, @param vagy @throws címkék valamelyike, akkor ezek automatikus másolása. @throws címke másolása csak akkor, ha a kivétel dobását deklarálja a metódus! A dokumentáció másolása explicit módon kérhető az {@inheritdoc} szövegközi címkével. A fő leírásban, @return, @param és @throws címkékhez tartozó szövegben használható. 14

Rendelkezésre álló címkék Szövegközi címkék: {@code} {@docroot} {@index} (JDK 9) {@inheritdoc} {@link} {@linkplain} {@literal} {@value} Blokk címkék: @author @deprecated @exception @hidden (JDK 9) @param @provides (JDK 9) @return @see @serial @serialdata @serialfield @since @throws @uses (JDK 9) @version 15

Szövegközi címkék használata Címke Áttekintő megjegyzés állomány Modul deklaráció Csomag megjegyzés állomány Típusdeklaráció Konstruktor deklaráció Metódus deklaráció Adattag deklaráció {@code} {@docroot} {@index} {@inheritdoc} {@link} {@linkplain} {@literal} {@value} 16

Blokk címkék használata Címke Áttekintő megjegyzés állomány Modul deklaráció Csomag megjegyzés állomány Típusdeklaráció Konstruktor deklaráció Metódus deklaráció Adattag deklaráció @author @deprecated @exception @hidden @param @provides @return @see @serial @serialdata @serialfield @since @throws @uses @version 17

Szövegközi címkék (1) {@code szöveg} A szöveg megjelenítése fix szélességű betűtípussal (programkódként). A szövegben szabadon használható a < és & karakter. Példa: {@code true}, {@code e1.hashcode() == e2.hashcode()} {@docroot} A generált állományokat tartalmazó könyvtárstruktúra gyökerének relatív elérési útvonalát szolgáltatja. Példa: <a href="{@docroot}/../copyright.html">copyright</a> 18

Szövegközi címkék (2) {@index szó leírás} {@index "kifejezés" leírás} Annak jelzésére szolgál, hogy az adott szó vagy kifejezés az adott opcionális leírással együtt meg kell, hogy jelenjen a standard doclet által létrehozott indexekben. Példa: {@index JVM} {@index JVM Java Virtual Machine} {@index "RFC 3986"} 19

Szövegközi címkék (3) {@inheritdoc} Dokumentáció másolása a legközelebbi ősosztályból vagy implementált interfészből. Csak metódushoz tartozó dokumentációs megjegyzésben használható az alábbi helyeken: Fő leírásban (csak a fő leírás másolását eredményezi). A @return, @param és @throws blokk címkékhez tartozó szövegben (csak a megfelelő címkéhez tartozó szöveg másolását eredményezi). Példa: /** * {@inheritdoc} * * <p>this implementation always throws an * {@code UnsupportedOperationException}. */ 20

Szövegközi címkék (4) {@link csomag.osztály#tag címke} Hiperhivatkozás az adott csomag, osztály, interfész, metódus, konstruktor vagy adattag dokumentációjára (megjelenítése fix szélességű betűtípussal). Példa: {@link math} {@link math.fraction} {@link math.fraction#zero} {@link math.fraction#fraction(long,long)} {@link math.fraction#add(long)} {@linkplain csomag.osztály#tag címke} Ugyanaz, mint a {@link}, csak normál betűtípussal történik a megjelenítés. 21

Szövegközi címkék (5) {@literal szöveg} Ugyanaz, mint a {@code}, csak a szöveg megjelenítése normál betűtípussal történik. {@value csomag.osztály#adattag} Az adott konstans adattag értékét szolgáltatja, csak final módosító esetén használható. Példa: /** * The value of this constant is {@value}. */ public static final int DEFAULT_VALUE = 7; 22

Általános irányelvek a blokk címkék használatára A többször is előforduló blokk címkéket egy csoportban ajánlott megadni. Az alábbi sorrendben ajánlott a megadás: @author, @version, @param, @return, @exception/@throws, @see, @serial/@serialfield/@serialdata, @deprecated 23

Blokk címkék (1) @author szöveg Szerzők nevének megadására szolgáló címke, melyből egy dokumentációs megjegyzésben több is előfordulhat. Példa: @author Péter Jeszenszky @deprecated szöveg Azt jelzi, hogy a dokumentált entitás elavult, használata kerülendő. A szöveg első mondatában jelezni, hogy mióta, és a helyettesítőt is. Használata esetén a dokumentált entitáshoz adjuk meg a @Deprecated annotációt is! Egy dokumentációs megjegyzésben egyszer használni. Példa: @deprecated As of version 1.1, replaced by {@link #newmethod(int)}. 24

Blokk címkék (2) @exception kivételosztály leírás Ugyanaz, mint a @throws címke. @hidden A programelem elrejtése a generált API dokumentációból. Példa: /** @hidden */ 25

Blokk címkék (3) @param paraméternév leírás Az adott nevű paraméter leírást szolgáltatja. Típusparaméter esetén a nevet < és > határoló karakterek között kell megadni. Egy dokumentációs megjegyzésben egy adott nevű paraméterhez csak egyszer megadni. A @param címkéket a paraméterek sorrendjének megfelelően ajánlott megadni. Példa: @param e the element to add 26

Blokk címkék (4) @return leírás Metódus visszatérési értékét szolgáltatja. Egy dokumentációs megjegyzésben csak egyszer megadni. 27

Blokk címkék (5) @see hivatkozás Hivatkozás elhelyezésére szolgál, többféle módon használható, egy dokumentációs megjegyzésben akár többször is előfordulhat: @see "szöveg" módon, mint például: @see "The Java Programming Language" @see <a href="uri-hivatkozás">szöveg</a> módon, mint például: @see <a href="http://jcp.org/en/jsr/detail?id=173">jsr 173: Streaming API for XML</a> @see csomag.osztály#tag címke módon, a {@link} címkéhez hasonlóan, mint például: @see java.lang.system#currenttimemillis() 28

Blokk címkék (6) @since szöveg A szoftver azon verziójának megadására szolgál, melyben megjelent a dokumentált entitás. Példa: @since 1.2 @throws kivételosztály leírás Metódus vagy konstruktor által dobott kivétel dokumentálására szolgál. Több @throws címke esetén ajánlott a kivételosztályok neve alapján ábécé sorrendbe rendezni ezeket. Példa: @throws IOException if an I/O error occurs 29

Blokk címkék (7) @version szöveg A szoftver verziójának a jelzésére szolgál, amelynek része a dokumentált entitás. Egy dokumentációs megjegyzésben akár többször is előfordulhat. Példa: @version 4.12 30

API dokumentáció generálása (1): javadoc eszköz Az alábbi példa szemlélteti a program használatát: javadoc -d build/apidocs \ célkönyvtár -encoding UTF-8 \ a források karakterkódolása -charset UTF-8 \ HTML karakterkódolás -sourcepath src/main/java \ a forrásokat tartalmazó könyvtár app.core app.gui csomagok, amelyekből dokumentációt kell generálni 31

API dokumentáció generálása (2): Apache Maven Használjuk a Maven Javadoc Plugin javadoc célját, ehhez az mvn javadoc:javadoc parancsot kell végrehajtani. Ha a reporting elemben hivatozunk a bővítményre, akkor az API dokumentáció a webhely része lesz: <reporting> <plugins>... <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-javadoc-plugin</artifactid> <version>3.0.0</version> </plugin>... </plugins> </reporting> 32

API dokumentáció generálása (3): integrált fejlesztői környezetek Eclipse IDE: Válasszuk az alábbi menüpontot: Project Generate Javadoc IntelliJ IDEA: Válasszuk az alábbi menüpontot: Tools Generate Javadoc NetBeans: Válasszuk az alábbi menüpontot: Run Generate Javadoc 33

Doclet (1) Egy olyan program, melyet a javadoc eszköz használ a kimenet előállításához. Nem is feltétlenül API dokumentációt állít elő, szolgálhat egyéb speciális célokra. Doclet API: https://docs.oracle.com/javase/9/docs/api/jdk/jav adoc/doclet/package-summary.html A JDK jdk.javadoc modulja tartalmazza a jdk.javadoc.doclet csomagban. Standard Doclet: A Javadoc által alapértelmezésben használt doclet. 34

Doclet (2) További hasznos docletek: Beige UML doclet (licenc: Apache License 2.0) https://github.com/demidenko05/beige-uml UML osztálydiagramok előállítása UMLGraph doclet (licenc: Simplified BSD License) https://www.spinellis.gr/umlgraph/ UML osztálydiagramok előállítása 35

A JDK 9 újdonságai JEP 224: HTML5 Javadoc http://openjdk.java.net/jeps/224 A javadoc eszköznek megadható -html5 opció HTML5 kimenetet eredményez. JEP 225: Javadoc Search http://openjdk.java.net/jeps/225 Funkció biztosítása a dokumentációban való kereséshez, az alábbiak kereshetők: Modulok, csomagok, típusok és tagok deklarált nevei. Az {@index} szövegközi címkével megjelölt keresőkifejezések. 36

Kapcsolódó eszközök és szolgáltatások Checkstyle http://checkstyle.sourceforge.net/ Lásd: http://checkstyle.sourceforge.net/config_javadoc.html javadoc.io http://javadoc.io/ 37

További információk Javadoc Guide https://docs.oracle.com/javase/9/javadoc/javadoc.htm How to Write Doc Comments for the Javadoc Tool http://www.oracle.com/technetwork/articles/java/index-137868.html Requirements for Writing Java API Specifications http://www.oracle.com/technetwork/articles/javase/index-142372.html The Standard Doclet https://docs.oracle.com/javase/9/javadoc/javadoc-command.htm#jsjav-gui D-F9E5D57D-5A94-4043-A010-B24511A7BAB2 Documentation Comment Specification for the Standard Doclet https://docs.oracle.com/javase/10/docs/specs/doc-comment-spec.html Maven Javadoc Plugin http://maven.apache.org/plugins/maven-javadoc-plugin 38