2010-11-12 8 views
22

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

+0

गारंटी के बारे में अंतिम बिंदु के लिए http://stackoverflow.com/questions/798389/python-tool-that-builds-a- निर्भरता-diagram-for-methods-of-a-class – Vanuan

उत्तर

21
  • आमतौर पर मॉड्यूल/पैकेज आयात के लिए "निर्भरता" परिभाषित किया जाता है।
  • जो आप खोज रहे हैं वह एक दृश्यमान कॉल प्रवाह है।

  • तुम अब भी गारंटी नहीं दे सकते कि आप कार्यक्षमता :)

  • मेरा अनुभव और समाधान नहीं तोड़ देगा:

    कई बार, मैं कॉल प्रवाह पाया डेटा जबरदस्त और आरेख बहुत जटिल है। तो मैं आमतौर पर फ़ंक्शन के लिए आंशिक रूप से कॉल प्रवाह का पता लगाता हूं, मुझे इसमें दिलचस्पी है।

    यह sys.settrace (...) फ़ंक्शन का उपयोग करके किया जाता है। टेक्स्ट डेटा के रूप में कॉल प्रवाह उत्पन्न करने के बाद, मैं ग्राफविज़ का उपयोग कर एक कॉल ग्राफ उत्पन्न करता हूं।

[संपादित करें: टिप्पणी के आधार पर]

तब मेरे टुकड़ों समाधान बेहतर काम करता है। बस कोड डालें और उस फंक्शन पर सजावटी का उपयोग करें जिसे आप ढूंढना चाहते हैं। आप अंतराल देखेंगे जहां स्थगित चित्र में आता है लेकिन इसे बाहर किया जा सकता है। आपको पूरी तस्वीर सीधे नहीं मिलेगी।

मैं ऐसा करने की कोशिश कर रहा हूं और few post बनाया है जो उस समझ पर काम करता है।

+4

+1 देखें। मैं बहुत प्रभावित हूं अगर यह बहुत से प्रकार के कोड का पालन कर सकता है जो बहुत सारे एचओएफ और अन्य गतिशील सुविधाओं का उपयोग करता है। मुझे कल्पना है कि यह मुख्य रूप से प्रोग्रामर के काम का मूल्यांकन करने के लिए उपयोगी होगा जो या तो ऐसी सुविधाओं का उपयोग करने के लिए पर्याप्त स्मार्ट नहीं हैं या पर्याप्त स्मार्ट नहीं हैं। – aaronasterling

+0

मैं चांदी की बुलेट की तलाश नहीं कर रहा हूं। जो मैं खोज रहा हूं वह मुझे एक सामान्य विचार देने के लिए और अधिक है। – anijhaw

+0

@anijhaw: तो आपको यह मिला। :) pycallgraph अपना काम करना चाहिए। मैंने यह भी समाधान प्रदान किया है कि मैं क्या सीख रहा हूं यह जानने के लिए मैं अक्सर उपयोग करता हूं। हालांकि इसे मुश्किल बना दिया जा सकता है। एक मुड़ वाले आवेदन में ट्रेसिंग कॉल का प्रयास करें। – pyfunc

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^