Gcov
জিসিওভি একটি সোর্স কোড কভারেজ বিশ্লেষণ এবং বিবৃতি-দ্বারা-বিবৃতি প্রোফাইলিং টুল। জিকোভ একটি প্রোগ্রামে প্রতিটি বিবৃতি কতবার কার্যকর করা হয় তার সঠিক গণনা তৈরি করে এবং যন্ত্রপাতি যোগ করার জন্য সোর্স কোডের বিবরণ দেয়। জিসিওভি জিএনইউ কম্পাইলার কালেকশন (জিসিসি) স্যুটের সাথে একটি স্ট্যান্ডার্ড ইউটিলিটি হিসাবে আসে। জি. সি. ও. ভি ইউটিলিটি একটি প্রোগ্রাম কতবার কোডের অংশগুলি কার্যকর করে তার তথ্য দেয়। এটি সোর্স ফাইলের একটি অনুলিপি তৈরি করে, যা এক্সিকিউশন ফ্রিকোয়েন্সি সহ টীকা করা হয়। জিসিওভি ইউটিলিটি কোনও সময়-ভিত্তিক তথ্য তৈরি করে না এবং শুধুমাত্র জিসিসি স্যুটের সাথে সংকলিত কোডে কাজ করে। ম্যানুয়ালটি দাবি করে যে এটি অন্য কোনও প্রোফাইলিং বা টেস্ট কভারেজ পদ্ধতির সাথে সামঞ্জস্যপূর্ণ নয়, তবে এটি এলএলভিএম-জেনারেটেড ফাইলগুলির সাথেও কাজ করে। বিবরণ জিসিওভি একটি বিশেষ যন্ত্রযুক্ত প্রোগ্রামের একটি পরীক্ষা কভারেজ বিশ্লেষণ তৈরি করে। কভারেজ বিশ্লেষণের জন্য প্রোগ্রামটি সংকলন করার জন্য বিকল্পগুলি-প্রোফাইল-আর্ক্স-সবচেয়ে-কভারেজ ব্যবহার করা উচিত (প্রথম বিকল্পটি শাখা পরিসংখ্যান রেকর্ড করার জন্য এবং দ্বিতীয়টি লাইন এক্সিকিউশন গণনা সংরক্ষণ করার জন্য);-প্রোফাইল-আর্ক্সও প্রোগ্রামটিকে সংযুক্ত করার জন্য ব্যবহার করা উচিত। এই ধরনের প্রোগ্রাম চালানোর পর ". bb". "bbg" এবং ". দা" এক্সটেনশন (প্রত্যয়) সহ বেশ কয়েকটি ফাইল তৈরি হবে, যা gcov দ্বারা বিশ্লেষণ করা যেতে পারে। এটি সোর্স ফাইলগুলিকে কমান্ড-লাইন আর্গুমেন্ট হিসাবে গ্রহণ করে এবং একটি টীকাযুক্ত সোর্স তালিকা তৈরি করে। সোর্স কোডের প্রতিটি লাইন কতবার কার্যকর করা হয়েছে তার সাথে প্রিফিক্স করা হয়; যে লাইনগুলি কার্যকর করা হয়নি সেগুলি "#####" দিয়ে প্রিফিক্স করা হয়। gcov sourcefile.gcov নামে একটি লগফাইল তৈরি করে যা নির্দেশ করে যে একটি উৎস ফাইল sourcefile.c-এর প্রতিটি লাইন কতবার কার্যকর হয়েছে। এই টীকাযুক্ত উৎস ফাইলটি প্রোগ্রাম সম্পর্কে সময় সম্পর্কিত তথ্য বের করার জন্য আরেকটি প্রোফাইলিং টুল জি-প্রোফের সাথে ব্যবহার করা যেতে পারে। উদাহরণ সি-তে লেখা নিম্নলিখিত প্রোগ্রামটি পূর্ণসংখ্যা 1 থেকে 9-এর উপর লুপ করে এবং মডুলাস (%) অপারেটরের সাথে তাদের বিভাজ্যতা পরীক্ষা করে। #include <stdio.h> int মেইন (অকার্যকর) {int i; এর জন্য (i = 1; i <10; i + +) {যদি (i% 3 = = 0) প্রিন্টএফ ("% d 3\n দ্বারা বিভাজ্য", i); যদি (i% 11 = = 0) প্রিন্টএফ ("% d 11\n দ্বারা বিভাজ্য", i);} রিটার্ন 0;} কভারেজ পরীক্ষা সক্ষম করতে প্রোগ্রামটি নিম্নলিখিত বিকল্পগুলির সাথে সংকলিত হতে হবেঃ $gcc-Wall-প্রোফাইল-arcs-ftest-কভারেজ cov.c যেখানে cov.c প্রোগ্রাম ফাইলের নাম। এটি একটি ইন্সট্রুমেন্টেড এক্সিকিউটেবল তৈরি করে যার মধ্যে অতিরিক্ত নির্দেশাবলী রয়েছে যা প্রোগ্রামের প্রতিটি লাইন কতবার কার্যকর করা হয়েছে তা রেকর্ড করে। বিকল্পটি পৃথক লাইনগুলি কতবার কার্যকর করা হয় তা গণনা করার জন্য নির্দেশাবলী যোগ করে, যখন প্রোগ্রামের প্রতিটি শাখার জন্য যন্ত্র কোড অন্তর্ভুক্ত করে। শাখা যন্ত্রপাতি রেকর্ড করে যে 'যদি' বিবৃতি এবং অন্যান্য শর্তাবলীর মাধ্যমে কত ঘন ঘন বিভিন্ন পথ নেওয়া হয়। এক্সিকিউটেবলটি তখন কোড বিশ্লেষণ করতে এবং কভারেজ ডেটা তৈরি করতে চালানো যেতে পারে। $./a. out বর্তমান ডিরেক্টরিতে যথাক্রমে '. bb' '. bbg' এবং '. da' এক্সটেনশন সহ বেশ কয়েকটি কভারেজ ডেটা ফাইলে রান থেকে ডেটা লেখা হয়। যদি ইনপুট প্যারামিটার বা ডেটার উপর ভিত্তি করে প্রোগ্রামের কার্যকারিতা পরিবর্তিত হয়, তবে এটি একাধিকবার চালানো যেতে পারে এবং সামগ্রিক বিশ্লেষণের জন্য ফলাফলগুলি কভারেজ ডেটা ফাইলগুলিতে জমা হবে। এই তথ্য gcov কমান্ড এবং একটি উৎস ফাইলের নাম ব্যবহার করে বিশ্লেষণ করা যেতে পারেঃ $gcov cov.c 88.89 ফাইলে এক্সিকিউট করা 9টি উৎস লাইনের% cov.c তৈরি করা cov.c.gcov gcov কমান্ডটি ফাইল এক্সটেনশন '. gcov' সহ মূল উৎস ফাইলের একটি টীকা সংস্করণ তৈরি করে, যাতে প্রতিটি লাইন কতবার এক্সিকিউট করা হয়েছে তার গণনা থাকেঃ #include <stdio.h> int মেইন (অকার্যকর) {1 int i; 10 এর জন্য (i = 1; i <10; i + +) {9 যদি (i% 3 = = 0) 3 প্রিন্টএফ ("% d 3" দ্বারা বিভাজ্য, i); 9 যে লাইনগুলি কার্যকর করা হয়নি সেগুলি '#####' হ্যাশ দিয়ে চিহ্নিত করা হয়। কমান্ড-লাইন বিকল্প Gcov কমান্ড লাইন ইউটিলিটি প্রোফাইল ডেটা থেকে টীকাযুক্ত ফাইল তৈরি করার সময় নিম্নলিখিত বিকল্পগুলিকে সমর্থন করেঃ-h (---হেল্প): gcov ব্যবহার করার বিষয়ে সহায়তা প্রদর্শন করুন (স্ট্যান্ডার্ড আউটপুটে), এবং আর কোনও প্রক্রিয়াকরণ না করেই প্রস্থান করুন। - v (-- সংস্করণ): gcov সংস্করণ নম্বর প্রদর্শন করুন (স্ট্যান্ডার্ড আউটপুটে), এবং আর কোনও প্রক্রিয়াকরণ না করেই প্রস্থান করুন। - a (-- সমস্ত ব্লক): প্রতিটি মৌলিক ব্লকের জন্য পৃথক এক্সিকিউশন গণনা লিখুন। সাধারণত একটি লাইনের প্রধান ব্লকের জন্য জিসিওভি আউটপুট এক্সিকিউশন গণনা করা হয়। এই বিকল্পের সাহায্যে আপনি নির্ধারণ করতে পারেন যে একটি লাইনের মধ্যে ব্লকগুলি কার্যকর করা হচ্ছে কিনা। - b (-- শাখা-সম্ভাবনা): আউটপুট ফাইলে শাখার ফ্রিকোয়েন্সি লিখুন এবং স্ট্যান্ডার্ড আউটপুটে শাখার সংক্ষিপ্ত তথ্য লিখুন। এই বিকল্পটি আপনাকে দেখতে দেয় যে আপনার প্রোগ্রামের প্রতিটি শাখা কতবার নেওয়া হয়েছে। শর্তহীন শাখা দেখানো হবে না, যদি না-u বিকল্প দেওয়া থাকে। - c (-- শাখা-গণনা): নেওয়া শাখাগুলির শতাংশের পরিবর্তে নেওয়া শাখাগুলির সংখ্যা হিসাবে শাখা ফ্রিকোয়েন্সি লিখুন। - n (-- no-আউটপুট): gcov আউটপুট ফাইল তৈরি করবেন না। - l (-- লং-ফাইল-নেম): অন্তর্ভুক্ত উৎস ফাইলগুলির জন্য দীর্ঘ ফাইলের নাম তৈরি করুন। উদাহরণস্বরূপ, যদি হেডার ফাইল x. h-এ কোড থাকে এবং এটি a. c. ফাইলে অন্তর্ভুক্ত থাকে, তাহলে a. c. ফাইলে gcov চালানো হলে x.h.gcov-এর পরিবর্তে a.c##x.h.gcov নামে একটি আউটপুট ফাইল তৈরি হবে। এটি কার্যকর হতে পারে যদি x. h একাধিক উৎস ফাইলের মধ্যে অন্তর্ভুক্ত থাকে এবং আপনি পৃথক অবদান দেখতে চান। আপনি যদি '-p' বিকল্পটি ব্যবহার করেন, তবে অন্তর্ভুক্ত এবং অন্তর্ভুক্ত ফাইলের নাম উভয়ই সম্পূর্ণ পথের নাম হবে। - p (-- প্রিজার্ভ-পাথ): উৎপন্ন. gcov ফাইলের নামে সম্পূর্ণ পথের তথ্য সংরক্ষণ করুন। এই বিকল্পটি ছাড়া, শুধুমাত্র ফাইলের নাম উপাদানটি ব্যবহার করা হয়। এই বিকল্পের সাহায্যে, সমস্ত ডিরেক্টরি ব্যবহার করা হয়, যেখানে '/' অক্ষরগুলি '#' অক্ষরে অনুবাদ করা হয়। ডিরেক্টরির উপাদানগুলি সরানো হয়েছে এবং অপসারণযোগ্য নয়। উপাদানগুলির নাম পরিবর্তন করে '^' করা হয়েছে। সোর্স ফাইলগুলি বিভিন্ন ডিরেক্টরিতে থাকলে এটি কার্যকর। - r (-- আপেক্ষিক-শুধুমাত্র): শুধুমাত্র একটি আপেক্ষিক পথনাম সহ উৎস ফাইল সম্পর্কে আউটপুট তথ্য (উৎস উপসর্গ বাদ দেওয়ার পরে)। পরম পথগুলি সাধারণত সিস্টেম হেডার ফাইল এবং এর মধ্যে যে কোনও ইনলাইন ফাংশনের কভারেজ সাধারণত বিরক্তিকর হয়। - f (-- ফাংশন-সারসংক্ষেপ): ফাইল স্তরের সারসংক্ষেপ ছাড়াও প্রতিটি ফাংশনের জন্য আউটপুট সারসংক্ষেপ। - o directory|file (-- অবজেক্ট-ডিরেক্টরি অথবা-- অবজেক্ট-ফাইল ফাইল): হয় জি. সি. ও. ভি তথ্য ফাইল সম্বলিত ডিরেক্টরি অথবা অবজেক্ট পথের নাম উল্লেখ করুন। . gcno এবং. gcda ডেটা ফাইলগুলি এই বিকল্পটি ব্যবহার করে অনুসন্ধান করা হয়। যদি একটি ডিরেক্টরি নির্দিষ্ট করা থাকে, তবে ডেটা ফাইলগুলি সেই ডিরেক্টরিতে থাকে এবং এর এক্সটেনশন ছাড়াই ইনপুট ফাইলের নামের নামে নামকরণ করা হয়। যদি একটি ফাইল এখানে নির্দিষ্ট করা থাকে, ডেটা ফাইলগুলি তার এক্সটেনশন ছাড়াই সেই ফাইলের নামে নামকরণ করা হয়। - s ডিরেক্টরি (-- সোর্স-প্রিফিক্স ডিরেক্টরি): আউটপুট কভারেজ ফাইল তৈরি করার সময় উৎস ফাইলের নামগুলি অপসারণ করার জন্য একটি উপসর্গ। একটি পৃথক ডিরেক্টরিতে তৈরি করার সময় এই বিকল্পটি কার্যকর, এবং আউটপুট ফাইলের নাম নির্ধারণ করার সময় উৎস ডিরেক্টরির পথনাম প্রয়োজন হয় না। মনে রাখবেন যে উৎস ফাইলটি পরম কিনা তা নির্ধারণ করার আগে এই উপসর্গ সনাক্তকরণ প্রয়োগ করা হয়। - উ (-- শর্তহীন-শাখা): যখন শাখার সম্ভাব্যতা দেওয়া হয়, তখন শর্তহীন শাখার সম্ভাবনাগুলি অন্তর্ভুক্ত করুন। শর্তহীন শাখাগুলি সাধারণত আকর্ষণীয় হয় না। - d (-- ডিসপ্লে-অগ্রগতি): স্ট্যান্ডার্ড আউটপুটের অগ্রগতি প্রদর্শন করুন। কভারেজের সারসংক্ষেপ এলসিওভি হল জিসিওভি-র জন্য একটি গ্রাফিকাল ফ্রন্ট-এন্ড। এটি একাধিক উৎস ফাইলের জন্য জিসিওভি তথ্য সংগ্রহ করে এবং কভারেজ তথ্য সহ উৎস কোড সম্বলিত এইচটিএমএল পৃষ্ঠাগুলি তৈরি করে। এটি ফাইল কাঠামোর মধ্যে সহজ নেভিগেশনের জন্য ওভারভিউ পৃষ্ঠাগুলিও যোগ করে। Lcov বিবৃতি, কার্যকারিতা এবং শাখা কভারেজ পরিমাপকে সমর্থন করে। একটি উইন্ডোজ সংস্করণও রয়েছে। জিসিওভিআর জিসিওভি-র ব্যবহার পরিচালনা এবং সংক্ষিপ্ত কোড কভারেজ ফলাফল তৈরির জন্য একটি ইউটিলিটি প্রদান করে। এই কমান্ডটি পাইথন coverage.py প্যাকেজ দ্বারা অনুপ্রাণিত, যা পাইথনে অনুরূপ উপযোগিতা প্রদান করে। জিসিওভিআর হয় কম্প্যাক্ট মানব-পাঠযোগ্য সারসংক্ষেপ প্রতিবেদন, মেশিন পাঠযোগ্য এক্সএমএল প্রতিবেদন বা একটি গ্রাফিকাল এইচটিএমএল সারসংক্ষেপ তৈরি করে। জিসিওভিআর দ্বারা উত্পন্ন এক্সএমএল রিপোর্টগুলি জেনকিন্স গ্রাফিকাল কোড কভারেজের সংক্ষিপ্তসার সরবরাহ করতে ব্যবহার করতে পারেন। জি. সি. ও. ভি. আর বিবৃতি এবং শাখা কভারেজ পরিমাপকে সমর্থন করে এস. সি. ও. ভি একটি ইউটিলিটি যা জি. সি. ও. ভি দ্বারা উত্পন্ন মধ্যবর্তী পাঠ্য বিন্যাসকে (জি. সি. ও. ভি-আই ব্যবহার করে) কোড কভারেজের উপর প্রতিবেদন তৈরি করতে প্রক্রিয়া করে। এই প্রতিবেদনগুলি একটি সাধারণ পাঠ্য প্রতিবেদন বা আরও বিস্তারিত প্রতিবেদন সহ এইচটিএমএল পৃষ্ঠাগুলি হতে পারে। আরও দেখুন Tcov-সান স্টুডিও স্যুট রেফারেন্স সফ্টওয়্যার মেট্রিক্স সফ্টওয়্যার পরীক্ষার সরঞ্জামগুলিতে প্রদত্ত সোলারিসের জন্য কোড কভারেজ সরঞ্জাম