हमारे पास PHP स्क्रिप्ट का एक कोडबेस है जिसे हम एक नए कोडिंग कन्वेंशन में बदलना चाहते हैं। हम स्क्रिप्ट को नए मानक में बदलने के लिए स्वचालित सौंदर्यीकरण पर विचार कर रहे हैं। हम यह सुनिश्चित करना चाहते हैं कि कोड अभी भी उसी तरह काम करता है जैसा उसने मूल रूप से किया था। हम यह सुनिश्चित करने के लिए कमांड लाइन पर php -l का उपयोग कर सकते हैं कि कोई त्रुटि नहीं है, लेकिन हम यह सुनिश्चित करने के लिए अगले चरण पर जाना चाहेंगे कि पुराना स्वरूपित कार्यात्मक रूप से नया जैसा ही है।

क्या कोई तरीका है कि हम बाइनरी या पुराने और नए दोनों से जो कुछ भी संकलित कर सकते हैं यह सुनिश्चित करने के लिए कि वे समान हैं? मुझे लगता है कि संकलित रूप में इंडेंटेशन, लाइन ब्रेक इत्यादि को अनदेखा किया जाता है?

2
user151841 16 फरवरी 2011, 19:57
7
आपके इकाई परीक्षण कहां हैं?
 – 
meagar♦
16 फरवरी 2011, 19:58
5
वास्तव में, आपके पास जो होना चाहिए था (और यदि आपने नहीं किया तो उन्हें अभी लिखें) इकाई-परीक्षण हैं जो इंगित करेंगे कि कोई व्यवहार बदलता है या नहीं। इस तरह, आप कोडबेस में कोई भी बदलाव कर सकते हैं और फिर भी जान सकते हैं कि क्या यह सब काम करता है।
 – 
Rafe Kettler
16 फरवरी 2011, 19:59

3 जवाब

सबसे बढ़िया उत्तर

आप php बाइटकोड की तुलना बाइटकिट-क्ली से कर सकते हैं (blogpost) / < a href="https://github.com/sebastianbergmann/bytekit-cli" rel="nofollow">(github प्रोजेक्ट)।

यह देखने के लिए कि क्या आपका नया और पुराना कोड समान php-bytecode उत्पन्न करता है। यह जानकर कि आप पूरी तरह से आश्वस्त हो सकते हैं कि सब कुछ काम करेगा। (यदि आप एनोटेशन का उपयोग कर रहे हैं तो मुझे यकीन नहीं है कि यह कैसे काम करता है)

4
edorian 16 फरवरी 2011, 20:25
1
संक्षेप में (और PHP संदर्भ में): यदि आपके पास टिप्पणियों में प्रोग्रामेटिक रूप से प्रासंगिक सामग्री है और प्रोग्राम के कुछ अन्य भाग उस टिप्पणी को स्कैन करते हैं तो यह देखने के लिए कि उसे कुछ करना है या नहीं। (जैसे phpunit में @expectedException सामान)।
 – 
edorian
16 फरवरी 2011, 21:00

पुरानी और नई स्क्रिप्ट पर token_get_all पर कॉल करें और अपने परिवर्तनों (जोड़े/हटाए गए रिक्त स्थान, टैब) के परिणामों की तुलना करें , घुंघराले ब्रेसिज़, यहां तक ​​कि कुछ स्थानों पर टिप्पणियां और अल्पविराम) खाते में।

2
rik 16 फरवरी 2011, 20:11

मैं phc का उपयोग करने का सुझाव दूंगा। प्रत्येक फ़ाइल को पार्स करें और एक्सएमएल आउटपुट उत्पन्न करें, और पहले और बाद में एक्सएमएल आउटपुट की तुलना करें।

phc --dump-xml filename.php

बेशक, समस्या का एक हिस्सा यह हो सकता है कि आपका ब्यूटीफायर वास्तविक पार्सर का उपयोग नहीं करता है, और इसलिए दोषपूर्ण हो सकता है (मुझे नहीं पता, मैंने इसे नहीं देखा है)। phc में एक --pretty-print विकल्प है जो एक वास्तविक पार्सर पर आधारित है, इसलिए आपके पास इसके साथ बेहतर भाग्य हो सकता है।

0
Paul Biggar 18 फरवरी 2011, 03:57