Gcov
جی سی او وی ایک سورس کوڈ کوریج تجزیہ اور بیان بہ بیان پروفائلنگ ٹول ہے۔ جی سی او وی کسی پروگرام میں ہر بیان کو کتنی بار انجام دیا جاتا ہے اس کی درست گنتی کرتا ہے اور آلات کو شامل کرنے کے لیے سورس کوڈ کی تشریح کرتا ہے۔ جی سی او وی جی این یو کمپائلر کلیکشن (جی سی سی) سوٹ کے ساتھ ایک معیاری افادیت کے طور پر آتا ہے۔ جی سی او وی یوٹیلیٹی اس بارے میں معلومات فراہم کرتی ہے کہ کوئی پروگرام کتنی بار کوڈ کے حصوں کو انجام دیتا ہے۔ یہ ماخذ فائل کی ایک کاپی تیار کرتا ہے، جس پر عمل درآمد کی تعدد کے ساتھ تبصرہ کیا جاتا ہے۔ جی سی او وی یوٹیلیٹی کوئی وقت پر مبنی ڈیٹا تیار نہیں کرتی اور صرف جی سی سی سوٹ کے ساتھ مرتب کردہ کوڈ پر کام کرتی ہے۔ دستی کا دعوی ہے کہ یہ کسی دوسرے پروفائلنگ یا ٹیسٹ کوریج میکانزم کے ساتھ مطابقت نہیں رکھتا ہے، لیکن یہ ایل ایل وی ایم سے تیار کردہ فائلوں کے ساتھ بھی کام کرتا ہے۔ تفصیل جی سی او وی ایک خاص آلات والے پروگرام کا ٹیسٹ کوریج تجزیہ تیار کرتا ہے۔ کوریج تجزیہ کے لیے پروگرام کو مرتب کرنے کے لیے اختیارات-پروفائل-آرکس-فیسٹ-کوریج کا استعمال کیا جانا چاہیے (پہلا آپشن برانچ کے اعدادوشمار کو ریکارڈ کرنے کے لیے اور دوسرا لائن پر عمل درآمد کی گنتی کو محفوظ کرنے کے لیے) ؛-پروفائل-آرکس کو بھی پروگرام کو لنک کرنے کے لیے استعمال کیا جانا چاہیے۔ اس طرح کے پروگرام کو چلانے کے بعد ". bb". "bbg" اور ". डा" ایکسٹینشنز (لاحقہ) کے ساتھ کئی فائلیں بن جائیں گی، جن کا تجزیہ gcov کے ذریعے کیا جا سکتا ہے۔ یہ سورس فائلوں کو کمانڈ لائن دلائل کے طور پر لیتا ہے اور ایک تشریح شدہ سورس لسٹنگ تیار کرتا ہے۔ سورس کوڈ کی ہر لائن کو اس کے پھانسی کی تعداد کے ساتھ پیش کیا جاتا ہے ؛ جن لائنوں کو پھانسی نہیں دی گئی ہے ان کو "#####" کے ساتھ پیش کیا جاتا ہے۔ جی سی او وی ایک لاگ فائل بناتا ہے جسے sourcefile.gcov کہا جاتا ہے جو اس بات کی نشاندہی کرتا ہے کہ ماخذ فائل sourcefile.c کی ہر لائن نے کتنی بار اسے انجام دیا ہے۔ اس اینوٹیٹڈ سورس فائل کو پروگرام کے بارے میں وقت کی معلومات حاصل کرنے کے لیے ایک اور پروفائلنگ ٹول جی پروف کے ساتھ استعمال کیا جا سکتا ہے۔ مثال مندرجہ ذیل پروگرام، جو سی میں لکھا گیا ہے، انٹیجرز 1 سے 9 پر لوپ کرتا ہے اور ماڈیولس (٪) آپریٹر کے ساتھ ان کی تقسیم کی جانچ کرتا ہے۔ کوریج کی جانچ کو فعال کرنے کے لیے پروگرام کو درج ذیل آپشنز کے ساتھ مرتب کیا جانا چاہیے: $gcc-Wall-پروفائل-arcs-fest-کوریج cov.c جہاں cov.c پروگرام فائل کا نام ہے۔ یہ ایک انسٹرومینٹڈ ایگزیکٹوبل بناتا ہے جس میں اضافی ہدایات ہوتی ہیں جو پروگرام کی ہر لائن پر عمل درآمد کی تعداد کو ریکارڈ کرتی ہیں۔ یہ آپشن انفرادی لائنوں کو انجام دینے کی تعداد کی گنتی کے لیے ہدایات شامل کرتا ہے، جبکہ پروگرام کی ہر شاخ کے لیے آلات کا کوڈ شامل کرتا ہے۔ برانچ انسٹرومینٹیشن ریکارڈ کرتا ہے کہ 'اگر' بیانات اور دیگر شرائط کے ذریعے کتنی بار مختلف راستے اختیار کیے جاتے ہیں۔ اس کے بعد قابل عمل کو کوڈ کا تجزیہ کرنے اور کوریج ڈیٹا بنانے کے لیے چلایا جا سکتا ہے۔ $./a. out رن کا ڈیٹا موجودہ ڈائرکٹری میں بالترتیب '. bb' '. bbg' اور '. da' ایکسٹینشنز کے ساتھ کئی کوریج ڈیٹا فائلوں پر لکھا جاتا ہے۔ اگر پروگرام کا نفاذ ان پٹ پیرامیٹرز یا ڈیٹا کی بنیاد پر مختلف ہوتا ہے، تو اسے متعدد بار چلایا جا سکتا ہے اور نتائج مجموعی تجزیہ کے لیے کوریج ڈیٹا فائلوں میں جمع ہو جائیں گے۔ اس ڈیٹا کا تجزیہ جی سی او وی کمانڈ اور سورس فائل کے نام کا استعمال کرتے ہوئے کیا جا سکتا ہے: $gcov cov.c 88.89 فائل میں چلائے گئے 9 سورس لائنوں میں سے% cov.c بنانا cov.c.gcov جی سی او وی کمانڈ اصل سورس فائل کا ایک تشریح شدہ ورژن تیار کرتا ہے، جس میں فائل کی توسیع '. gcov' ہوتی ہے، جس میں ہر لائن کو کتنے بار چلایا گیا اس کی گنتی ہوتی ہے: #include <stdio.h> int مین (کالعدم) {1 int i ؛ 10 کے لیے (i = 1 ؛ i <10 ؛ i + +) {9 اگر (i% 3 = = 0) 3 پرنٹ ایف ("% d 3" سے قابل تقسیم ہے، i) ؛ 9 جن لائنوں کو پھانسی نہیں دی گئی تھی انہیں '######' ہیش سے نشان زد کیا جاتا ہے۔ کمانڈ لائن آپشنز جی سی او وی کمانڈ لائن یوٹیلیٹی پروفائل ڈیٹا سے اینوٹیٹڈ فائلیں تیار کرتے وقت درج ذیل آپشنز کی حمایت کرتی ہے:-h (---ہیلپ): جی سی او وی (معیاری آؤٹ پٹ پر) کے استعمال کے بارے میں مدد دکھائیں، اور مزید کارروائی کیے بغیر باہر نکلیں۔ - v (-- ورژن): جی سی او وی ورژن نمبر (معیاری آؤٹ پٹ پر) دکھائیں، اور مزید کارروائی کیے بغیر باہر نکلیں۔ - a (-- تمام بلاکس): ہر بنیادی بلاک کے لیے انفرادی عمل کی گنتی لکھیں۔ عام طور پر جی سی او وی آؤٹ پٹ پر عمل درآمد صرف لائن کے مرکزی بلاکس کے لیے شمار ہوتا ہے۔ اس آپشن کے ساتھ آپ اس بات کا تعین کر سکتے ہیں کہ آیا ایک ہی لائن کے اندر بلاکس پر عمل نہیں کیا جا رہا ہے۔ - b (-- برانچ-امکانات): آؤٹ پٹ فائل میں برانچ فریکوئنسی لکھیں، اور معیاری آؤٹ پٹ میں برانچ کے خلاصہ کی معلومات لکھیں۔ یہ آپشن آپ کو یہ دیکھنے کی اجازت دیتا ہے کہ آپ کے پروگرام کی ہر برانچ کتنی بار لی گئی تھی۔ غیر مشروط شاخیں نہیں دکھائی جائیں گی، جب تک کہ-u آپشن نہ دیا جائے۔ - c (-- برانچ-کاؤنٹس): برانچ فریکوئنسی کو لی گئی برانچوں کی تعداد کے طور پر لکھیں، بجائے اس کے کہ لی گئی برانچوں کا فیصد۔ - n (-- کوئی آؤٹ پٹ نہیں): جی سی او وی آؤٹ پٹ فائل نہ بنائیں۔ - 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 ڈائرکٹری (-- ماخذ-سابقہ ڈائرکٹری): آؤٹ پٹ کوریج فائلیں تیار کرتے وقت ماخذ فائل کے ناموں کو ہٹانے کے لیے ایک سابقہ۔ یہ آپشن ایک علیحدہ ڈائرکٹری میں بناتے وقت مفید ہوتا ہے، اور آؤٹ پٹ فائل کے ناموں کا تعین کرتے وقت سورس ڈائرکٹری کا پاتھ نام درکار نہیں ہوتا ہے۔ نوٹ کریں کہ اس سابقہ کا پتہ لگانے کا اطلاق اس بات کا تعین کرنے سے پہلے کیا جاتا ہے کہ آیا ماخذ فائل مطلق ہے۔ - u (-- غیر مشروط-شاخیں): جب شاخوں کے امکانات دیے جاتے ہیں، تو ان میں غیر مشروط شاخوں کے امکانات شامل کریں۔ غیر مشروط شاخیں عام طور پر دلچسپ نہیں ہوتی ہیں۔ - d (-- ڈسپلے-پیش رفت): معیاری آؤٹ پٹ پر پیش رفت دکھائیں۔ کوریج کا خلاصہ Lcov gcov کے لیے ایک گرافیکل فرنٹ اینڈ ہے۔ یہ متعدد سورس فائلوں کے لیے جی سی او وی ڈیٹا اکٹھا کرتا ہے اور ایچ ٹی ایم ایل پیجز بناتا ہے جس میں سورس کوڈ کو کوریج کی معلومات کے ساتھ بیان کیا جاتا ہے۔ یہ فائل کے ڈھانچے کے اندر آسان نیویگیشن کے لیے جائزہ صفحات کو بھی شامل کرتا ہے۔ Lcov بیان، فنکشن، اور برانچ کوریج کی پیمائش کی حمایت کرتا ہے۔ ونڈوز کا ایک ورژن بھی ہے۔ جی سی او وی آر جی سی او وی کے استعمال کے انتظام اور خلاصہ شدہ کوڈ کوریج کے نتائج پیدا کرنے کے لیے ایک افادیت فراہم کرتا ہے۔ یہ کمانڈ ازگر coverage.py پیکیج سے متاثر ہے، جو ازگر میں اسی طرح کی افادیت فراہم کرتا ہے۔ جی سی او وی آر یا تو کمپیکٹ انسانی پڑھنے کے قابل خلاصہ رپورٹس، مشین پڑھنے کے قابل ایکس ایم ایل رپورٹس یا گرافیکل ایچ ٹی ایم ایل خلاصہ تیار کرتا ہے۔ جی سی او وی آر کے ذریعے تیار کردہ ایکس ایم ایل رپورٹس کو جینکنز کے ذریعے گرافیکل کوڈ کوریج کا خلاصہ فراہم کرنے کے لیے استعمال کیا جا سکتا ہے۔ جی سی او وی آر بیان اور برانچ کوریج کی پیمائش کی حمایت کرتا ہے۔ ایس سی او وی ایک افادیت ہے جو کوڈ کوریج پر رپورٹیں تیار کرنے کے لیے جی سی او وی (جی سی او وی-آئی کا استعمال کرتے ہوئے) کے ذریعے تیار کردہ انٹرمیڈیٹ ٹیکسٹ فارمیٹ پر کارروائی کرتی ہے۔ یہ رپورٹیں ایک سادہ ٹیکسٹ رپورٹ، یا مزید تفصیلی رپورٹس کے ساتھ ایچ ٹی ایم ایل پیجز ہو سکتی ہیں۔ سن اسٹوڈیو سوٹ حوالہ جات سافٹ ویئر میٹرکس سافٹ ویئر ٹیسٹنگ ٹولز میں فراہم کردہ سولر کے لیے Tcov-کوڈ کوریج ٹول بھی دیکھیں۔