टीसीओवी

From alpha
Jump to navigation Jump to search
tcov
डेवलपर(ओं)Oracle Corporation
ऑपरेटिंग सिस्टमSolaris
प्लेटफॉर्मSPARC
प्रकारCode coverage
लाइसेंसFree for download and use as described in the Sun Studio product license.
वेबसाइटdevelopers.sun.com

टीसीओवी फोरट्रान, सी (प्रोग्रामिंग भाषा) और सी++ में लिखे गए सॉफ्टवेयर के लिए एक कोड कवरेज़ विश्लेषण और स्टेटमेंट-दर-स्टेटमेंट प्रोफाइलिंग टूल है। Tcov किसी प्रोग्राम में प्रत्येक कथन को निष्पादित करने की संख्या की सटीक गणना उत्पन्न करता है और इंस्ट्रूमेंटेशन जोड़ने के लिए स्रोत कोड को एनोटेट करता है। यह एक मानक उपयोगिता है, जो सन स्टूडियो (सॉफ्टवेयर) सॉफ्टवेयर के साथ फ्रीवेयर प्रदान की जाती है।

टीसीओवी उपयोगिता यह जानकारी देती है कि कंप्यूटर प्रोग्राम कितनी बार कोड के खंडों को निष्पादित करता है। यह निष्पादन आवृत्तियों के साथ एनोटेट की गई स्रोत फ़ाइल की एक प्रति तैयार करता है। कोड को मूल ब्लॉक स्तर या स्रोत लाइन स्तर पर एनोटेट किया जा सकता है। चूँकि एक मूल ब्लॉक में कथनों को समान संख्या में निष्पादित किया जाता है, मूल ब्लॉक निष्पादन की गिनती ब्लॉक में प्रत्येक कथन को निष्पादित करने की संख्या के बराबर होती है। tcov उपयोगिता कोई समय-आधारित डेटा उत्पन्न नहीं करती है।

विवरण

tcov किसी वस्तु कोड का परीक्षण कवरेज विश्लेषण तैयार करता है। टीसीओवी स्रोत फ़ाइलों को तर्क के रूप में लेता है और एक एनोटेटेड स्रोत सूची तैयार करता है। कोड के प्रत्येक मूल ब्लॉक (या प्रत्येक पंक्ति यदि टीसीओवी के लिए विशेष विकल्प निर्दिष्ट है) को निष्पादित किए जाने की संख्या के साथ पहले जोड़ा जाता है; जिन पंक्तियों को निष्पादित नहीं किया गया है, उनके उपसर्ग में ##### लगाया गया है।

tcov उपयोगिता एनोटेटेड प्रोग्राम सूची के अंत में एक सारांश भी रखती है। सबसे अधिक बार निष्पादित बुनियादी ब्लॉकों के आँकड़े निष्पादन आवृत्ति के क्रम में सूचीबद्ध हैं। पंक्ति संख्या ब्लॉक में पहली पंक्ति की संख्या है।

टीसीओवी के दो कार्यान्वयन हैं:

  • पुरानी शैली का कवरेज विश्लेषण:[1] इस कार्यान्वयन में, जिसे tcov मूल के रूप में भी जाना जाता है, संकलक प्रत्येक ऑब्जेक्ट फ़ाइल के लिए प्रत्यय .d के साथ एक कवरेज डेटा फ़ाइल बनाता है। जब कंप्यूटर प्रोग्राम पूरा हो जाता है, तो कवरेज डेटा फ़ाइलें अपडेट की जाती हैं।
  • नई शैली कवरेज विश्लेषण:[2] इस कार्यान्वयन में, जिसे tcov एन्हांस्ड के रूप में भी जाना जाता है, संकलन समय पर कोई अतिरिक्त फ़ाइल नहीं बनाई जाती है। इसके बजाय, प्रोफ़ाइल डेटा को संग्रहीत करने के लिए फ़ोल्डर (कंप्यूटिंग) बनाया जाता है, और उस निर्देशिका में tcovd नामक एक एकल कवरेज डेटा फ़ाइल बनाई जाती है।

उन्नत कवरेज विश्लेषण मूल विश्लेषण उपकरण की कुछ कमियों को दूर करता है, जैसे:[3]

  • C++ के लिए अधिक संपूर्ण समर्थन प्रदान करता है।
    1. include हेडर फ़ाइलों में पाए गए कोड का समर्थन करता है और उस दोष को ठीक करता है जो टेम्पलेट कक्षाओं और फ़ंक्शंस के लिए कवरेज संख्याओं को अस्पष्ट करता है।
  • मूल टीसीओवी रनटाइम की तुलना में अधिक कुशल रनटाइम।
  • कंपाइलर्स द्वारा समर्थित सभी प्लेटफ़ॉर्म के लिए समर्थित।

कार्यान्वयन

एनोटेटेड स्रोत कोड उत्पन्न करने के लिए निम्नलिखित तीन चरणों की आवश्यकता होती है:[4]

  • उचित कंपाइलर विकल्प के साथ कोड संकलन
  • प्रोफ़ाइल डेटा संचित करने के लिए प्रोग्राम निष्पादन
  • एनोटेटेड फ़ाइलें उत्पन्न करने के लिए tcov कमांड निष्पादन

प्रत्येक बाद का रन प्रोफ़ाइल डेटा फ़ाइल में अधिक कवरेज डेटा जमा करता है। पुनर्संकलन के बाद पहली बार प्रोग्राम निष्पादित होने पर प्रत्येक ऑब्जेक्ट फ़ाइल का डेटा शून्य कर दिया जाता है। tcovd फ़ाइल को हटाकर पूरे प्रोग्राम का डेटा शून्य कर दिया जाता है।[5] उपरोक्त चरणों को मूल और उन्नत टीसीओवी दोनों के लिए नीचे समझाया गया है:

पुरानी शैली का कवरेज विश्लेषण

स्रोत कोड को C प्रोग्राम के लिए -xa विकल्प और फोरट्रान और C++ प्रोग्राम के लिए -a विकल्प के साथ संकलित किया गया है। कंपाइलर प्रत्येक ऑब्जेक्ट फ़ाइल के लिए प्रत्यय .d के साथ एक कवरेज डेटा फ़ाइल बनाता है। कवरेज डेटा फ़ाइल पर्यावरण चर TCOVDIR द्वारा निर्दिष्ट निर्देशिका में बनाई गई है। यदि TCOVDIR सेट नहीं है, तो कवरेज डेटा फ़ाइल वर्तमान निर्देशिका में बनाई जाती है। उपरोक्त इंस्ट्रुमेंटेड बिल्ड चलाया जाता है और प्रोग्राम पूरा होने पर, .d फ़ाइलें अपडेट की जाती हैं। अंत में, एनोटेटेड स्रोत फ़ाइलों को उत्पन्न करने के लिए tcov कमांड चलाया जाता है। Tcov कमांड का सिंटैक्स इस प्रकार है:

<पूर्व> tcov विकल्प स्रोत-फ़ाइल-सूची </पूर्व>

यहां, स्रोत-फ़ाइल-सूची स्रोत कोड फ़ाइल नामों की एक सूची है। विकल्पों की सूची के लिए, tcov का डिफ़ॉल्ट आउटपुट फ़ाइलों का एक सेट है, प्रत्येक में प्रत्यय .tcov होता है, जिसे -o फ़ाइल नाम विकल्प के साथ बदला जा सकता है।

कोड कवरेज विश्लेषण के लिए संकलित प्रोग्राम को कई बार चलाया जा सकता है (संभावित रूप से भिन्न इनपुट के साथ); व्यवहार की तुलना करने के लिए प्रत्येक रन के बाद प्रोग्राम पर tcov का उपयोग किया जा सकता है।

नई शैली कवरेज विश्लेषण

स्रोत कोड को -xprofile=tcov विकल्प के साथ संकलित किया गया है। मूल मोड के विपरीत, उन्नत टीसीओवी संकलन समय पर कोई फ़ाइल उत्पन्न नहीं करता है।[6] उपरोक्त इंस्ट्रुमेंटेड बिल्ड चलाया जाता है और प्रोग्राम पूरा होने पर, प्रोफ़ाइल डेटा को संग्रहीत करने के लिए एक निर्देशिका बनाई जाती है, और उस निर्देशिका में tcovd नामक एक एकल कवरेज डेटा फ़ाइल बनाई जाती है। tcovd में पंक्ति संख्याओं और निष्पादन गणना के बारे में जानकारी होती है। यह एक सादा पाठ फ़ाइल है. डिफ़ॉल्ट रूप से, निर्देशिका उस स्थान पर बनाई जाती है जहां प्रोग्राम चलाया जाता है, और इसे निष्पादन योग्य नाम दिया जाता है और .profile द्वारा प्रत्यय दिया जाता है। निर्देशिका को प्रोफ़ाइल बकेट के रूप में भी जाना जाता है। प्रोफाइल बकेट के स्थान को SUN_PROFDATA_DIR या SUN_PROFDATA पर्यावरण चर सेट करके ओवरराइड किया जा सकता है। अंत में, एनोटेटेड स्रोत फ़ाइलों को उत्पन्न करने के लिए tcov कमांड चलाया जाता है। अनिवार्य -x विकल्प को छोड़कर, टीसीओवी कमांड का सिंटैक्स मूल कमांड के समान है।

<पूर्व> tcov विकल्प -x प्रोफ़ाइलबकेट स्रोत-फ़ाइल-सूची </पूर्व>

मूल tcov से कमांड में एकमात्र अंतर यह है कि उन्नत tcov को दर्शाने के लिए अनिवार्य रूप से -x dir विकल्प जोड़ा जाता है।

उदाहरण

निम्नलिखित प्रोग्राम, सी प्रोग्रामिंग भाषा में लिखा गया है, इवेंट लूप पूर्णांक 1 से 9 तक ओवर करता है और मॉड्यूलस (%) ऑपरेटर के साथ उनकी विभाज्यता का परीक्षण करता है।

#include <stdio.h>

int
main (void)
{
  int i;

  for (i = 1; i < 10; i++)
    {
      if (i % 3 == 0)
        printf ("%d is divisible by 3\n", i);
      if (i % 11 == 0)
        printf ("%d is divisible by 11\n", i);
    }

  return 0;
}

कवरेज परीक्षण को सक्षम करने के लिए प्रोग्राम को निम्नलिखित विकल्पों के साथ संकलित किया जाना चाहिए:

पुरानी शैली के कोड कवरेज के लिए,

cc -xa cov.c

और नई शैली कोड कवरेज के लिए,

cc -xprofile=tcov -o cov cov.c

जहां cov.c प्रोग्राम फ़ाइल का नाम है। यह एक यंत्रीकृत निष्पादन योग्य बनाता है जिसमें अतिरिक्त निर्देश होते हैं जो प्रोग्राम की प्रत्येक पंक्ति को निष्पादित करने की संख्या को रिकॉर्ड करते हैं। -o विकल्प का उपयोग निष्पादन योग्य का नाम सेट करने के लिए किया जाता है। फिर कवरेज डेटा बनाने के लिए निष्पादन योग्य को चलाया जाना चाहिए। पुराने और नए स्टाइल कोड विश्लेषण के लिए इस फ़ाइल का निर्माण और स्थान अलग-अलग है। पुरानी शैली के विश्लेषण में, फ़ाइल नाम एक्सटेंशन .d वाली यह फ़ाइल, कंपाइलर के बाद बनाई गई, या तो TCOVDIR फ़ोल्डर (कंप्यूटिंग) या वर्तमान में, कवरेज डेटा के साथ अद्यतन की जाती है। नई शैली के विश्लेषण में, कवरेज डेटा फ़ाइल, tcovd नाम के साथ, <निष्पादन योग्य नाम>.प्रोफ़ाइल निर्देशिका में बनाई जाती है। इस डेटा का विश्लेषण tcov कमांड और स्रोत फ़ाइल के नाम का उपयोग करके किया जा सकता है:

पुरानी शैली के कोड कवरेज के लिए,

tcov cov.c

और नई शैली कोड कवरेज के लिए,

tcov -x cov.profile cov.c

नई शैली विश्लेषण में अतिरिक्त तर्क प्रोफ़ाइल बकेट है। tcov कमांड फ़ाइल एक्सटेंशन '.tcov' के साथ मूल स्रोत कोड का एक एनोटेटेड संस्करण तैयार करता है, जिसमें प्रत्येक पंक्ति को निष्पादित करने की संख्या शामिल होती है:

        #include <stdio.h>

        int
        main (void)
        {
     1    int i;

    10    for (i = 1; i < 10; i++)
            {
     9        if (i % 3 == 0)
     3          printf ("%d is divisible by 3\n", i);
     9        if (i % 11 == 0)
######          printf ("%d is divisible by 11\n", i);
     9      }

     1    return 0;
     1  }

tcov उपयोगिता एनोटेटेड प्रोग्राम सूची के अंत में एक सारांश भी रखती है। सबसे अधिक बार निष्पादित बुनियादी ब्लॉकों के आँकड़े निष्पादन आवृत्ति के क्रम में सूचीबद्ध हैं। पंक्ति संख्या ब्लॉक में पहली पंक्ति की संख्या है।

कमांड लाइन विकल्प

प्रोफ़ाइल डेटा से एनोटेटेड फ़ाइलें बनाते समय Tcov कमांड लाइन उपयोगिता निम्नलिखित विकल्पों का समर्थन करती है:[7]

  • -ए: प्रत्येक कथन के लिए निष्पादन गणना प्रदर्शित करें। यदि यह विकल्प निर्दिष्ट नहीं है, तो निष्पादन गणना केवल कोड ब्लॉक के लीडर के लिए दिखाई जाती है।
  • -एन: एन सबसे अधिक बार निष्पादित कथनों की पंक्ति संख्याओं और उनकी निष्पादन गणनाओं की प्रदर्शन तालिका।
  • -o फ़ाइल नाम: आउटपुट को file.tcov के बजाय फ़ाइल नाम पर निर्देशित करें। इस विकल्प का उपयोग '-' निर्दिष्ट करके आउटपुट को मानक आउटपुट#स्टैंडर्ड आउटपुट (स्टडआउट) पर निर्देशित करने के लिए किया जा सकता है।
  • -x dir: यह नई शैली कवरेज विश्लेषण में समर्थित है। यदि यह विकल्प निर्दिष्ट नहीं है, तो पुरानी शैली का टीसीओवी कवरेज मान लिया जाता है।

यह भी देखें

संदर्भ

  1. "मूल Tcov कथन-दर-कथन विश्लेषण". Retrieved 6 Feb 2012.
  2. "उन्नत Tcov कथन-दर-कथन विश्लेषण". Retrieved 6 Feb 2012.
  3. "टीसीओवी की बेहतर विशेषताएं टीसीओवी मूल से बेहतर हैं". Retrieved 6 Feb 2012.
  4. oracle.com. "एनोटेटेड स्रोत कोड उत्पन्न करने के लिए आवश्यक चरण".
  5. www.sics.se. "SunOS manual page".
  6. docs.oracle.com. "enhanced tcov".
  7. developers.sun.com. "टीसीओवी दस्तावेज़ीकरण". Retrieved Feb 7, 2012.