2009-12-07 12 views
12

मैं एक सी # प्रोजेक्ट के लिए कुछ एपीआई दस्तावेज़ उत्पन्न करने के लिए डॉक्सिजन का उपयोग कर रहा हूं, जिस पर मैं काम कर रहा हूं। मेरे पास इस परियोजना में काफी "आंतरिक" कार्यक्षमता है और यह नहीं चाहता कि डॉक्सिजन जेनरेट किए गए एचटीएमएल में इन हस्ताक्षरों का उत्पादन करे।सी # आंतरिक एक्सेस संशोधक के साथ डॉक्सिजन

मैंने HIDE_FRIEND_COMPOUNDS को सक्षम करने का प्रयास किया है, लेकिन यह अभी भी जेनरेट किए गए दस्तावेज़ों में मेरे आंतरिक वर्गों में उजागर होने का परिणाम है।

क्या कोई यह जानता है कि यह कैसे करें?

उत्तर

1

डॉक्सिजन में कॉन्फ़िगरेशन फ़ाइल में विकल्पों को सेट करने के तरीके से दस्तावेज़ को बाहर करने के लिए कई विधियां हैं।

तो अपने तरीके से निजी हैं तो EXTRACT_PRIVATE = NO

तुम भी, पैटर्न बाहर करने के लिए, उदाहरण के लिए अपने निजी कक्षाएं एक निर्देशिका छिपा बुलाया में स्थित हैं, तो निर्दिष्ट कर सकते हैं निर्धारित करते हैं, आप की स्थापना करके कि निर्देशिका में सभी फ़ाइलों को बाहर कर सकते हैं।

EXCLUDE_PATTERNS = */hidden/* 

इसके अलावा आप सेटिंग द्वारा गैर दस्तावेज कोड भी शामिल नहीं कर सकते हैं।

HIDE_UNDOC_CLASSES = YES 

और

HIDE_UNDOC_MEMBERS = NO 
+0

ये सी # आंतरिक कक्षाएं हैं जो निजी कक्षाओं से अलग हैं। उनके पास असेंबली गुंजाइश है: एक ही असेंबली के अंदर केवल अन्य कोड उन्हें देख सकते हैं। मैं नहीं चाहता कि ये वर्ग दस्तावेज़ीकरण में दिखाई दे, मैं केवल सार्वजनिक वर्गों को दिखाना चाहता हूं। –

4

यह एक पुरानी प्रविष्टि है, लेकिन मैं एक ही मुद्दा था।

मेरे लिए काम करने वाली एक विधि केवल डॉक्सिजन की 'पूर्व परिभाषा' सुविधा का उपयोग करना है। यदि आप 'आंतरिक = निजी' को पूर्वनिर्धारित करते हैं (जो '# डिफ़ॉल्ट आंतरिक निजी' करने के बराबर है) तो डॉक्सिजन सभी 'आंतरिक' गुणों को 'निजी' के रूप में देखेगा - और अनुरोध किए जाने पर उन्हें अनदेखा करें।

यह एक क्लज है - लेकिन यह काम करता है।

9

Addon मैक एच का जवाब देने के लिए, आप इसे काम करने के लिए इन अतिरिक्त विन्यास पैरामीटर सेट करने के लिए है:

# The PREDEFINED tag can be used to specify one or more macro names that 
# are defined before the preprocessor is started (similar to the -D option of 
# gcc).  

PREDEFINED    = internal=private 

# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
# will be included in the documentation. 

EXTRACT_PRIVATE  = NO 

# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
# evaluate all C-preprocessor directives found in the sources and include 
# files. 

ENABLE_PREPROCESSING = YES 

# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
# names in the source code. If set to NO (the default) only conditional 
# compilation will be performed. Macro expansion can be done in a controlled 
# way by setting EXPAND_ONLY_PREDEF to YES. 

MACRO_EXPANSION  = YES 

# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
# then the macro expansion is limited to the macros specified with the 
# PREDEFINED and EXPAND_AS_DEFINED tags. 

EXPAND_ONLY_PREDEF  = YES 
+1

** संबंधित **: जाहिर है, जब तक आप 'EXTRACT_STATIC = YES' सेट नहीं करते हैं, तब तक Doxygen 'सार्वजनिक स्थैतिक' कक्षाओं के लिए कोई पृष्ठ नहीं उत्पन्न करेगा। स्पष्ट रूप से डॉक्सिजन सोचता है कि 'स्थैतिक' का मतलब सी # में एक ही बात है जिसका मतलब सी (यानी फ़ाइल-निजी) में है, जो सी ++ में भी अतिरिक्त गूंगा है, डॉक्सिजन की मूल भाषा, 'स्थिर' अक्सर इसका मतलब नहीं है। कुछ कारणों से, इस विकल्प के बिना, कक्षाओं में ऐसी कक्षाएं अभी भी सूचीबद्ध (सारांश के साथ) सूचीबद्ध होंगी, लेकिन v1.8.7 के रूप में एक लिंक के बिना (कोई क्लास पेज जेनरेट नहीं किया गया है)। (पीएस वाह इन बग कम से कम 4 साल पुराने हैं ?!) – Qwertie

0

बस विषय में आए ... \ आंतरिक Doxygen कीवर्ड का उपयोग यह है कि के लिए सिर्फ बनाया गया है ।

0

मेरे लिए

HIDE_UNDOC_CLASSES = YES 

काम करता है, यहां तक ​​कि EXTRACT_PRIVATE और PREDEFINED मूलभूत मूल्यों पर साथ करना। कारण के बारे में निश्चित नहीं है। मुझे उम्मीद है कि उन्हें NO पर सेट करने की आवश्यकता है (इसलिए निजी सदस्यों के लिए कोई दस्तावेज उपलब्ध नहीं है) और internal=private (इसलिए आंतरिक कक्षाओं से भी दस्तावेज हटा दिया जाता है), लेकिन ऐसा नहीं है। internal और private कक्षाएं अब जेनरेट किए गए दस्तावेज़ों में कहीं भी नहीं बताई गई हैं।

0

डॉक्सीजन स्पष्ट रूप से सी # कक्षाओं के लिए डिफ़ॉल्ट सोचता है और structs सार्वजनिक है, आंतरिक नहीं है, और उन्हें इस तरह दस्तावेज करेगा। हालांकि, यदि आप स्पष्ट रूप से C# internal एक्सेस संशोधक का उपयोग करते हैं, तो डॉक्सिजन (डिग्री के लिए) का सम्मान करता है।तो, यह स्रोत पर Doxygen चल:

namespace Test_Library 
{ 
    /// <summary> 
    /// I should be documented. 
    /// </summary> 
    public class ExplicitPublicClass 
    { 
     public int Field; 
    } 

    /// <summary> 
    /// I should NOT be documented. 
    /// </summary> 
    class ImplicitInternalClass 
    { 
     public int Field; 
    } 

    /// <summary> 
    /// I should NOT be documented. 
    /// </summary> 
    internal class ExplicitInternalClass 
    { 
     public int Field; 
    } 

    /// <summary> 
    /// I should be documented. 
    /// </summary> 
    public struct ExplicitPublicStruct 
    { 
     public int Field; 
    } 

    /// <summary> 
    /// I should NOT be documented. 
    /// </summary> 
    struct ImplicitInternalStruct 
    { 
     public int Field; 
    } 

    /// <summary> 
    /// I should NOT be documented. 
    /// </summary> 
    internal struct ExplicitInternalStruct 
    { 
     public int Field; 
    } 
} 

आप इस क्लास सूची हो जाता है Doxygen के उत्पादन में:

C ExplicitPublicClass  I should be documented. 
C ExplicitPublicStruct  I should be documented. 
C ImplicitInternalClass  I should NOT be documented. 
C ImplicitInternalStruct I should NOT be documented. 

हालांकि, आप अभी Doxygen की सूची में स्पष्ट रूप से आंतरिक वर्गों और structs मिलता है "नेमस्पेस संदर्भ:"

class  ExplicitInternalClass 
      I should NOT be documented. 

struct  ExplicitInternalStruct 
      I should NOT be documented. 

class  ExplicitPublicClass 
      I should be documented. More... 

struct  ExplicitPublicStruct 
      I should be documented. More... 

class  ImplicitInternalClass 
      I should NOT be documented. More... 

struct  ImplicitInternalStruct 
      I should NOT be documented. More... 

पर ध्यान दें कि ध्यान दें कि "अधिक ... "वास्तविक दस्तावेज से लिंक (साथ ही संबंधित वर्ग/संरचना नाम में उपलब्ध लिंक) पहले दो के लिए उपलब्ध नहीं है।

तो, आप व्यवहार आप सी # के स्पष्ट internal पहुँच संशोधक का उपयोग करके देख रहे के कुछ जरूरी नहीं कि व्यवहार आप देख रहे हैं के सभी प्राप्त कर सकते हैं, लेकिन। (तुलनात्मक रूप से, वीएसडोकमैन स्रोत कोड को उसी तरीके से ऊपर संसाधित करता है जिस तरह से आप इसे चाहते हैं: केवल स्पष्ट रूप से सार्वजनिक वर्ग और संरचना दस्तावेज हैं, स्पष्ट रूप से, न ही स्पष्ट रूप से, आंतरिक कक्षाओं या structs का कोई उल्लेख नहीं है।)

संबंधित मुद्दे