সি ++ উত্স থেকে ইউএমএল শ্রেণির চিত্রগুলি তৈরি করতে ডক্সিজেন কীভাবে ব্যবহার করবেন


90

আমি এমন কিছু উপাদান অনুসন্ধান করেছিলাম যা ডক্সিজেনের সাহায্যে সাধারণ শ্রেণীর চিত্রগুলি কীভাবে উত্পন্ন করতে পারে তা বর্ণনা করে তবে একটিও খুঁজে পেল না। কেউ সাহায্য করতে পারেন?

সি ++ ফাইলের সেট থেকে নীচে দেখানো হয়েছে আমাকে ডায়াগ্রামগুলি তৈরি করতে হবে। বিকল্প পাঠ

এটি আরও সহজ করার জন্য আরও ভাল সরঞ্জাম যদি থাকে তবে দয়া করে আমাকে জানান।


আপনি কী এ্যাট্রিবিউট এবং পদ্ধতির ধরণ সম্পর্কে তথ্য সহ ডায়াগ্রামগুলি অর্জন করেছিলেন?
আইজিজি

উত্তর:


50

ডক্সিজেন উত্তরাধিকারের চিত্রগুলি তৈরি করে তবে আমি মনে করি না এটি একটি সম্পূর্ণ শ্রেণিবদ্ধ স্তর তৈরি করবে। এটি আপনাকে গ্রাফভিজ সরঞ্জামটি ব্যবহার করার অনুমতি দেয়। আপনি যদি ডক্সিজেন জিইউআই ফ্রন্ট্যান্ড্যান্ড সরঞ্জাম ব্যবহার করেন তবে আপনি এতে সম্পর্কিত বিকল্পগুলি খুঁজে পাবেন Step2: -> Wizard tab -> Diagrams। DOT সম্পর্কিত বিকল্পগুলি বিশেষজ্ঞ ট্যাবের অধীনে।


6
আপনি পুরো শ্রেণিবিন্যাস নেভিগেট করতে সক্ষম হবেন, ডায়াগ্রামে যা প্রদর্শিত হবে তার সীমাবদ্ধতা রয়েছে। এমন কয়েকটি পরামিতি রয়েছে যা গ্রাফের পরিধি সীমাবদ্ধ করে। একটি পৃষ্ঠাতে DOT_GRAPH_NODES এন্ট্রি সংখ্যা সীমাবদ্ধ করে এবং MAX_DOT_GRAPH_DEPTH এটি কত গভীর হয় তা সীমাবদ্ধ করে। এগুলিকে বড় মানগুলিতে সেট করা বড় প্রকল্পের জন্য খুব সময় সাশ্রয়ী হয়ে ওঠে।
ড্যানস

ধন্যবাদ এটা আমার জন্য কাজ করেছে। আমি বিশেষজ্ঞ-> ডট
টিসেনাপ্যাথি

46

এই পোস্টটি থেকে উদ্ধৃতি (এটি নিজেই অক্সিজেনের লেখক লিখেছেন):

run doxygen -g and change the following options of the generated Doxyfile:

    EXTRACT_ALL            = YES
    HAVE_DOT               = YES
    UML_LOOK               = YES

run doxygen again

11
এটি কোনও পূর্ণ শ্রেণীর চিত্রটি তৈরি করবে না (যেমন, ক্লাস এ এবং ক্লাস বি এর মধ্যে বহু-এক-এক সম্পর্ক); কেবল একটি উত্তরাধিকার চিত্র, যেমন সুপারক্লাস / সাবক্লাস সম্পর্কগুলি দেখায়।
স্টেথথম

39

হুম, এটি কিছুটা পুরনো প্রশ্ন বলে মনে হচ্ছে, তবে যেহেতু আমি গত কয়েকদিন ধরে ডক্সিন কনফিগারেশন নিয়ে গোলমাল করছি, যখন আমার মাথাটি বর্তমান তথ্যে পূর্ণ রয়েছে তবে আসুন এটিতে একটি ছুরিকাঘাত করা উচিত -

আমি মনে করি পূর্ববর্তী উত্তরগুলি প্রায় রয়েছে:

অনুপস্থিত বিকল্পটি COLLABORATION_GRAPH = YESডক্সিফাইলে যুক্ত করা। আমি ধরে নিয়েছি আপনি ডক্সিউইজার্ড জিইউআইতে কোথাও সমতুল্য জিনিসটি করতে পারেন (আমি ডক্সিউইজার্ড ব্যবহার করি না)।

সুতরাং, আরও সম্পূর্ণ উদাহরণ হিসাবে আমি ইউএমএল আউটপুট সম্পর্কিত যে "ডোক্সিফাইল" বিকল্পগুলি ব্যবহার করি সেগুলি হ'ল:

EXTRACT_ALL          = YES
CLASS_DIAGRAMS      = YES
HIDE_UNDOC_RELATIONS = NO
HAVE_DOT             = YES
CLASS_GRAPH          = YES
COLLABORATION_GRAPH  = YES
UML_LOOK             = YES
UML_LIMIT_NUM_FIELDS = 50
TEMPLATE_RELATIONS   = YES
DOT_GRAPH_MAX_NODES  = 100
MAX_DOT_GRAPH_DEPTH  = 0
DOT_TRANSPARENT      = YES

এই সেটিংসগুলি "উত্তরাধিকার" ( CLASS_GRAPH=YES) এবং "সহযোগিতা" ( COLLABORATION_GRAPH=YES) চিত্রগুলি উভয়ই উত্পন্ন করবে ।

ডক্সিজেন আউটপুটটির "স্থাপনার" জন্য আপনার টার্গেটের উপর নির্ভর করে সেটিংটিও কার্যকর DOT_IMAGE_FORMAT = svgহতে পারে। এসভিজি আউটপুট দিয়ে ডায়াগ্রামগুলি .png এর মতো বিটম্যাপ ফর্ম্যাটগুলির স্থির রেজোলিউশনের পরিবর্তে "স্কেলেবল"। স্পষ্টতই, যদি আইই ব্যতীত অন্য ব্রাউজারগুলিতে আউটপুট দেখতে হয় তবে এমনও রয়েছে INTERACTIVE_SVG = YESযা উত্পাদিত এসভিজি চিত্রের "ইন্টারেক্টিভ জুমিং এবং প্যানিং" এর অনুমতি দেবে। আমি কিছুক্ষণ আগে এটি চেষ্টা করেছিলাম, এবং এসভিজি আউটপুটটি খুব দৃষ্টি আকর্ষণীয় ছিল, কিন্তু এসভিজি-র জন্য ব্রাউজার সমর্থনটি এখনও কিছুটা বেমানান ছিল, সুতরাং আশা করা যায় যে পরিস্থিতি ইদানীং উন্নত হতে পারে।

অন্যান্য মন্তব্যে যেমন উল্লেখ করা হয়েছে, এর মধ্যে কয়েকটি সেটিংসের ( DOT_GRAPH_MAX_NODESবিশেষত) সম্ভাব্য পারফরম্যান্সের প্রভাব রয়েছে, তাই ওয়াইএমএমভি।

আমি "আরটিএফএম" শৈলীর উত্তরগুলি ঘৃণা করি, তাই এই বাক্যটির জন্য ক্ষমা চাইছি, তবে এই ক্ষেত্রে ডক্সিজেন ডকুমেন্টেশন সত্যই আপনার বন্ধু, সুতরাং উপরের উল্লিখিত সেটিংসে ডক্সিজেন ডক্স পরীক্ষা করে দেখুন - শেষবার যখন আমি দেখেছিলাম আপনি বিশদটি সন্ধান করতে পারেন http://www.doক্স . nl/manual/config.html


ভাল উত্তর. আপনার উত্তরে আপনি "CLASS_DIAGRAMS" লিখেছিলেন পরিবর্তে "CLASS_GRAPH"।
ডেভিডএস

হুম, আসলে, এখন আপনি এটিকে সামনে আনুন, আমি দেখতে পাচ্ছি আমার কাছে CLASS_DIAGRAMS = হ্যাঁ এবং CLASS_GRAPH = YES উভয়ই আছে। অক্সিজেন ১.৮.৯.১ এর জন্য ডকগুলি যাচাই করার পরে আমি দেখতে পেলাম যে আসলে CLASS_GRAPH = YES CLASS_DIAGRAMS = YES কে ওভাররাইড করবে তাই CLASS_GRAPH = হ্যাঁ অগ্রাধিকার গ্রহণের সাথে দুটি বিকল্পের ইন্টারঅ্যাক্ট হবে। সুতরাং, আসলে, মূল প্রশ্নটির উদ্দেশ্যে যা আমার আছে তা কাজ করবে, তবুও ভাল ধরা!
ব্যবহারকারী 6092647

আপনি OUTPUT_DIRECTORY পরিবর্তন করতে পারেন এবং পুনরুদ্ধার অনুসন্ধানের অনুমতি দিতে পারবেন
কিং এর জেসার

আপনার RECURSIVE
ফাইলটি

6

এন্টারপ্রাইজ আর্কিটেক্ট আমদানি করা উত্স কোড থেকে একটি ইউএমএল ডায়াগ্রাম তৈরি করবে।


"এটি আরও সহজ করার জন্য আরও ভাল সরঞ্জাম যদি থাকে তবে দয়া করে আমাকে জানান" প্রশ্নের উত্তর দেওয়ার জন্যও উত্সাহিত।
কাভিশ

5

আমার মনে হয় আপনাকে ডক্সিস ফাইলটি সম্পাদনা করতে হবে এবং GENERATE_UML (এর মতো কিছু) সেট করতে হবে। এবং আপনার ডট / গ্রাফভিজ ইনস্টল করা দরকার।


12
আপনি কি ইউএমএল_লুক বিকল্প সম্পর্কে কথা বলছেন?
ডেভিড ডরিয়া

@ ডেভিডডোরিয়া অবশ্যই হবে। তবে ইউএমএল_লুক কোনও ডেটা ধরণের প্রদর্শন করবে না।
রুড ভারহোফ

2

সর্বোচ্চ 2 টি আপভেস্ট করা উত্তর সঠিক। আজকের হিসাবে, আমার কেবলমাত্র ডিফল্ট সেটিংস থেকে পরিবর্তন করার দরকার ছিল বিল্ট-ইন জেনারেটরের পরিবর্তে ডট ব্যবহার করে প্রজন্মকে সক্ষম করা

কিছু গুরুত্বপূর্ণ নোট:

  • প্রকল্পের সমস্ত শ্রেণীর প্রকৃত পূর্ণ চিত্র চিত্রিত করা হবে না । এটি প্রতিটি শ্রেণিবিন্যাসের জন্য পৃথক চিত্র তৈরি করবে। আপনার যদি একাধিক, অসম সম্পর্কিত শ্রেণিবদ্ধ স্তর থাকে তবে আপনি একাধিক চিত্র পাবেন।
  • এই সমস্ত চিত্রগুলি পাওয়া যাবে html/inherits.html(ওয়েবসাইট নেভিগেশন থেকে) শ্রেণিতে => শ্রেণি শ্রেণিবিন্যাস => "পাঠ্য শ্রেণীর শ্রেণিবিন্যাসে যান"।
  • এটি একটি সি ++ প্রশ্ন, সুতরাং আসুন টেমপ্লেটগুলি সম্পর্কে কথা বলি। বিশেষত যদি আপনি উত্তরাধিকারী হন T
    • প্রতিটি টেম্পলেট ইনস্ট্যান্টেশন সঠিকভাবে ডোজিজেন দ্বারা আলাদা ধরণের হিসাবে বিবেচিত হবে। বিভিন্ন তাত্ক্ষণিকতা থেকে প্রাপ্ত যে ধরণের ডায়াগ্রামে বিভিন্ন প্যারেন্ট ক্লাস থাকবে।
    • কোনও শ্রেণীর টেম্পলেট যদি fooউত্তরাধিকার সূত্রে প্রাপ্ত হয় Tএবং Tটেম্পলেট ধরণের প্যারামিটারের একটি ডিফল্ট থাকে তবে এই জাতীয় ডিফল্ট অনুমান করা হবে। যদি এমন কোনও ধরণের থাকে barযা উত্তরাধিকার সূত্রে প্রাপ্ত হয় foo<U>যেখানে Uডিফল্টের চেয়ে আলাদা হয় তবে barতার foo<U>পিতামাতাই থাকবে। foo<>এবং bar<U>একটি সাধারণ পিতামাতারা হবে না।
    • যদি একাধিক শ্রেণীর টেম্পলেট থাকে যা তাদের কমপক্ষে একটি টেমপ্লেট প্যারামিটার থেকে উত্তরাধিকার সূত্রে আসে, তবে টেক্সটাইল ধরণের প্যারামিটারগুলিতে কোডের ঠিক একই নাম থাকা সত্ত্বেও ডক্সিজেন এই শ্রেণীর টেম্পলেটগুলির জন্য একটি সাধারণ পিতামাতার দায়িত্ব গ্রহণ করবে। এটি নামকরণে ধারাবাহিকতার জন্য উত্সাহ দেয়।
    • সিআরটিপি এবং বিপরীত সিআরটিপি কেবল কাজ করে।
    • পুনরাবৃত্ত টেম্পলেট উত্তরাধিকার গাছগুলি প্রসারিত হয় না। যে কোনও variantতাত্পর্যটি উত্তরাধিকার সূত্রে প্রদর্শিত হবে variant<Ts...>
    • কোনও তাত্পর্য ছাড়াই শ্রেণির টেম্পলেটগুলি অঙ্কিত হচ্ছে। <...>তাদের নামের সাথে একটি স্ট্রিং থাকবে যা প্রকারের এবং টাইপবিহীন পরামিতিগুলিকে প্রতিনিধিত্ব করে যা ডিফল্ট ছিল না।
    • ক্লাস টেম্পলেট পূর্ণ এবং আংশিক বিশেষত্বও আঁকা হচ্ছে। বিশেষায়নের বিভিন্ন ধরণের থেকে উত্তরাধিকার সূত্রে ডক্সিকেশন সঠিক গ্রাফ তৈরি করে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.