Doxygen

מתוך ויקיפדיה, האנציקלופדיה החופשית
Doxygen
Doxygen.png
Doxygen-1.8.1.png
תאריך השקה 26 באוקטובר 1997 עריכת הנתון בוויקינתונים
גרסה אחרונה 1.9.1 (8 בינואר 2021) עריכת הנתון בוויקינתונים
גרסת בטא 1.9.1[1]
ב־תבנית:Start date and age
מערכת הפעלה Mac OS, Microsoft Windows, מערכת הפעלה דמוית יוניקס עריכת הנתון בוויקינתונים
נכתבה בשפות C++
סוג רישיון GPL-2.0 עריכת הנתון בוויקינתונים
קוד מקור https://github.com/doxygen/doxygen עריכת הנתון בוויקינתונים
Cross-platform

www.doxygen.org
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית OOjs UI icon info big.svg

דוקסיג'ן (באנגלית: Doxygen /ד ɒ k s i dʒ ən / DOK -see-jən)[2] הוא מחולל תיעוד,[3][4][5][6] כלי לכתיבת תיעוד הפניה לתוכנה. התיעוד נכתב בתוך מקטע הקוד ובכך קל יחסית לשמור על עדכניותו. דוקסיג'ן יכול להצליב תיעוד וקוד, כך שקורא המסמך יכול להתייחס בקלות לשורות הקוד בפועל.

דוקסיג'ן הוא תוכנה חופשית, המופץ בתנאי הרישיון הציבורי הכללי של גנו GNU GPL, גרסה 2.

עיצוב[עריכת קוד מקור | עריכה]

כמו Javadoc, דוקסיג'ן מחלץ תיעוד מהערות קובץ קוד המקור. בנוסף לתחביר Javadoc, דוקסיג'ן תומך בתגי התיעוד המשמשים בערכת הכלים Qt ויכול להפיק פלט בשפת HyperText Markup (HTML) כמו גם ב- Microsoft Compiled HTML Help, תבנית מלל עשיר (RTF), תבנית מסמך נייד (PDF), LaTeX, פוסטסקריפט או דפי man.

שימושים[עריכת קוד מקור | עריכה]

שפות תכנות נתמכות על ידי דוקסיג'ן כוללות C,[7] C ++, C #, D, Fortran, IDL, Java, Objective-C,[8] Perl,[9] PHP,[10] Python,[11][12] ו- VHDL.[13] ניתן לתמוך בשפות נוספות באמצעות הוספת קוד.

דוקסיג'ן פועל ברוב המערכות דמויי יוניקס, MacOS ו-Windows.

הגרסה הראשונה של דוקסיג'ן השאילה קוד מגרסה מוקדמת של ++DOC, שפותחה על ידי רולנד וונדרלינג ומלטה זוקלר במכון Zuse Berlin. מאוחר יותר, קוד דוקסיג'ן שוכתב מחדש על ידי דימיטרי ואן היץ'.

לדוקסיג'ן תמיכה מובנית ליצירת דיאגרמות ירושה עבור שכבות ++C. לקבלת דיאגרמות ותרשימים מתקדמים יותר, דוקסיג'ן יכול להשתמש בכלי "dot" של Graphviz.[14]

קוד לדוגמה[עריכת קוד מקור | עריכה]

התחביר הגנרי של הערות תיעוד, הוא להתחיל הערה בכוכבית נוספת לאחר תיחום ההערות המוביל

'/ *':

/**
<A short one line description>

<Longer description>
<May span multiple lines or paragraphs as needed>

@param Description of method's or function's input parameter
@param ...
@return Description of the return value
*/

אפשר גם לסמן התחלה של כל שורה ברווח-כוכבית-רווח, כדלקמן, אך אין זה הכרחי.

/**
 * <A short one line description>
 *
 * <Longer description>
 * <May span multiple lines or paragraphs as needed>
 *
 * @param Description of method's or function's input parameter
 * @param ...
 * @return Description of the return value
 */

תכניתנים רבים נמנעים משימוש בהערות בסגנון C ובמקום זאת משתמשים בהערות בשורה יחידה בסגנון ++C. דוקסיג'ן מקבל הערות עם לוכסן ימני נוסף כהערות דוקסיג'ן.

/// <A short one line description>
///
/// <Longer description>
/// <May span multiple lines or paragraphs as needed>
///
/// @param Description of method's or function's input parameter
/// @param ...
/// @return Description of the return value

להלן הדגמה על אופן תיעוד קובץ מקור ++C.

צילום מסך של התיעוד HTML שנוצר מהקוד
/**
 * @file
 * @author John Doe <jdoe@example.com>
 * @version 1.0
 *
 * @section LICENSE
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details at
 * https://www.gnu.org/copyleft/gpl.html
 *
 * @section DESCRIPTION
 *
 * The time class represents a moment of time.
 */

class Time {

 public:

 /**
 * Constructor that sets the time to a given value.
 *
 * @param timemillis is a number of milliseconds
 * passed since Jan 1, 1970.
 */
 Time (int timemillis) {
 // the code
 }

 /**
 * Get the current time.
 *
 * @return A time object set to the current time.
 */
 static Time now () {
 // the code
 }
};

גישה חלופית לתיעוד משתנים מוצגת להלן. תוצאת מבנה התיעוד תהיה זהה.

 /**
 * Constructor that sets the time to a given value.
 */
 Time (int timemillis ///< Number of milliseconds passed since Jan 1, 1970.>
 )
 {
 // the code
 }

שימוש בשפת סימון עשירה יותר אפשרית גם כן. לדוגמה, הוספת משוואות באמצעות פקודות LaTeX :

/**
 *
 * An inline equation @f$ e^{\pi i}+1 = 0 @f$
 *
 * A displayed equation: @f[ e^{\pi i}+1 = 0 @f]
 *
 */

קוד מקור ופיתוח דוקסיג'ן[עריכת קוד מקור | עריכה]

קוד המקור של דוקסיג'ן מתארח כיום ב-GitHub, שם המפתח הראשי, דימיטרי ואן היץ', תורם תחת שם המשתמש "דוקסיג'ן".[15] דוקסיג'ן כתוב בשפת ++C, וכולל למעלה מ-300,000 שורות קוד מקור. לצורך ניתוח מילולי, הכלי הסטנדרטי Lex (או מחליפו Flex) מופעל על יותר מ-35,000 שורות של תסריטי Lex. נעשה שימוש בכלי הניתוח Yacc (או מחליפו Bison), אך רק למשימות קלות; עיקר ניתוח השפה נעשה על ידי קוד ++C מקורי. תהליך הבנייה מבוסס על CMake וכולל גם כמה תסריטים של פייתון.

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]

ויקישיתוף מדיה וקבצים בנושא Doxygen בוויקישיתוף

הערות שוליים[עריכת קוד מקור | עריכה]