बड़े PHP अनुप्रयोग के लिए निर्भरता ग्राफ़




graph dependencies (2)

मैंने हाल ही में किसी बड़े ऑब्जेक्ट / मॉड्यूल / नेमस्पेस के साथ एक बड़ा पीएचपी आवेदन प्राप्त किया है ... फ़ंक्शन वाले केवल बहुत सी फाइलें।

बेशक, वहाँ बहुत सारी निर्भरताएं (और सभी फाइलें और लगभग हमेशा शामिल हैं)।

मैं एक ऐसे उपकरण की तलाश कर रहा हूं जो फाइलों का विश्लेषण कर सकता है और निर्भरता ग्राफ़ उत्पन्न कर सकता है। फिर फाइलों के स्वतंत्र फाइलों / सेटों का पता लगाना और पूरे चीज को फिर से कारगर करना आसान होगा।

अब तक मैंने जो सबसे अच्छा उपाय पाया है, वह सभी फ़ंक्शन कॉल्स का पता लगाने के लिए कोड-एसिफ़र सूंघ लिखने के लिए होगा और फिर ग्राफ़ उत्पन्न करने के लिए इसका इस्तेमाल करेगा।

ऐसा लगता है कि दूसरे के लिए कुछ उपयोगी है, इसलिए मुझे यकीन है कि उपकरण पहले से मौजूद हैं।

आप क्या सुझाव देंगे ?


मुझे लगता है कि सबसे अच्छा समाधान एक डॉक्टर जनरेट का उपयोग कर रहा है + grapviz, PHPDocumentor https://github.com/phpDocumentor/GraphViz पर एक Grapviz एक्सटेंशन को देखता है

यह PHPDocumentor के साथ बनाया गया उदाहरण है: http://demo.phpdoc.org/Clean/graphs/classes.svg

बहुत से आप एक्सएचप्रॉफ़ ( https://github.com/facebook/xhprof ) की तरह पदानुक्रमित प्रोफाइलर का उपयोग कर सकते हैं, यह निष्पादन से कार्य करने के लिए सभी कॉल के एक पेड़ को आकर्षित कर सकता है।

Graphviz द्वारा किया गया एक उदाहरण xhprof ड्रा


मैं कुछ दिन पहले लिखे हल्के परियोजना की सिफारिश कर सकता था। मूल रूप से मेरे पास 300+ फाइलें PHP प्रोजेक्ट थीं और मैं यह जानना चाहता था कि इन फाइलों को क्या आवश्यकता है / इसमें शामिल है और इसके विपरीत। इसके अलावा, मैं प्रत्येक फाइल के लिए जांचना चाहता हूं कि इस फाइल को किस फ़ाइल की आवश्यकता है / शामिल है (प्रत्यक्ष या अप्रत्यक्ष रूप से, फ़ाइल उत्थान के माध्यम से।) और इसके विपरीत: फाइलें जो इस विशेष फ़ाइल को शामिल करती हैं इनमें से किसी भी संयोजन के लिए मैं इंटरैक्टिव निर्भरता ग्राफ़ (फ़ाइल शामिल करने के आधार पर और वर्ग / फ़ंक्शन कॉल / उपयोग पर नहीं) चाहता था।

प्रोजेक्ट के सैंडबॉक्स और इसका स्रोत कोड देखें

ध्यान दें कि पूरी चीज केवल 2 दिनों में लिखी गई थी, इसलिए इसे बहुत कठोर न्याय न करें क्या महत्वपूर्ण है कि यह अपना काम कर रहा है!





codesniffer