PHP/Xdebug के साथ इस कोड (विंडोज 7 x64 पर Xdebug 2.2.1 और PHP 5.4 का उपयोग कर, यह भी मैं पठनीयता के लिए एक लाइन काउंटर जोड़ लिया है):PHP में Xdebug क्या करता है?
1: xdebug_start_code_coverage();
2:
3: for ($ii = 0; $ii < 3; ++$ii)
4: $x = time();
5:
6: if (false)
7: echo "Never executed.";
8:
9: echo var_dump(xdebug_get_code_coverage());
..मैं इस आउटपुट प्राप्त (मैं बदलाव कर दिया है कुछ मान इसे और अधिक पठनीय बनाने के लिए):
array (size=1)
'..\testpage.php' =>
array (size=4)
3 => int 1
4 => int 1
7 => int 1
9 => int 1
Xdebug के स्थल पर अधिक प्रलेखन कहते हैं:
"तत्वों में मूल्य पर निष्पादन इकाइयों की कुल संख्या का प्रतिनिधित्व करता है इस लाइन को निष्पादित किया गया है। "
स्रोत: http://www.xdebug.com/docs/code_coverage
तो जाहिरा तौर पर उत्पादन गलत है। लाइन 3 और 4 को तीन बार निष्पादित किया जाना चाहिए था जबकि Xdebug ने क्रमशः 1 कहा था। लाइन 6 को एक बार निष्पादित किया जाना चाहिए था, Xdebug बिल्कुल नहीं कह रहा था। लाइन 7 निश्चित रूप से निष्पादित नहीं किया जाना चाहिए था, फिर भी Xdebug ने कहा कि यह एक बार निष्पादित किया गया था। यह कहा जाना चाहिए कि उत्पादन घुंघराले ब्रेसिज़ के साथ या बिना रहता है।
इस यूआरएल परसे अधिक: http://xdebug.org/archives/xdebug-general/0377.html
.. Derick Rethans कह पकड़ा है (7 साल पहले!) है कि किसी तरह प्रलेखन गलत है (और अभी भी है), कि Xdebug केवल रिटर्न -1, 0 या 1 हालांकि, जैसा कि मेरा उदाहरण दिखाता है, एक्सडेबग सीधे 1 लौटता है और कठोर काउंटर अपने चयन को मनमाना बनाता है। यहां तक कि यदि Xdebug -1, 0 या 1 लौटा, तो मुझे नहीं पता कि वे मान क्या कहते हैं।
तो, आप में से कोई भी कुलीन कोडर का विचार है ?? और यदि Xdebug के साथ गंभीरता से कुछ गड़बड़ है, तो क्या इसका मतलब यह है कि मैं प्रोफाइलिंग और कोड कवरेज के लिए उपयोग किए जाने वाले किसी अन्य एप्लिकेशन और प्लगइन पर भरोसा नहीं कर सकता हूं, जो कि बदले में Xdebug का उपयोग करते हैं? मैं फ़िंग और PHPUnit सोच रहा हूं जो एक आम शादी प्रतीत होता है।
यदि आप इस मुद्दे पर कुछ विस्तारित करना चाहते हैं; यदि Xdebug दोषपूर्ण है और ऐसे में, सभी निर्भर अनुप्रयोग, आप PHP में कोड कवरेज रिपोर्ट के लिए क्या उपयोग करते हैं?
संपादित: उत्पादन एक ही कोड उदाहरण का उपयोग ऊपर सूचीबद्ध है, अगर मैं तर्क XDEBUG_CC_UNUSED
या XDEBUG_CC_DEAD_CODE
xdebug_start_code_coverage
लिए भेज तर्कों के रूप में कोई बदलाव नहीं है। मुझे लगता है कि Xdebug कोड कवरेज के लिए बिल्कुल काम नहीं करता है, न कि मेरे सिस्टम पर।
शायद PHP पदव्याख्यायित्र अभी भी यह पढ़ सकते हैं और इसके लिए मूल कोड भले ही यह निष्पादित नहीं किया जाएगा उत्पन्न करने के लिए है? –
कोल, मैं शर्त लगाता हूं कि आप लाइन 7 और हाँ के बारे में सोच रहे हैं, यह मामला हो सकता है। लेकिन क्या Xdebug पूरी तरह से बेकार नहीं होगा अगर वह ऐसी चीज के लिए जिम्मेदार नहीं था? और फिर भी, लाइन 3, 4 और 6 की समस्या है। –
मैंने Xdebug का कभी भी उपयोग नहीं किया है, इसलिए मैं निश्चित उत्तर नहीं दे सकता, लेकिन (http://www.digipedia.pl/usenet/thread/15739/ 883 /) ऐसा लगता है कि यह वास्तव में निष्पादित करने के लिए लाइन की संख्या को वापस नहीं करता है। – kennypu