python लवण समस्याग्रस्त क्षेत्रों की पहचान करने के लिए मैं पायथन कोड का विश्लेषण कैसे कर सकता हूं?




समस्याग्रस्त मिट्टी और उनके प्रबंधन (7)

मेरे पास कई परियोजनाओं में एक बड़ा स्रोत भंडार विभाजित है। मैं स्रोत कोड के स्वास्थ्य के बारे में एक रिपोर्ट तैयार करना चाहता हूं, जो उन समस्याओं वाले क्षेत्रों की पहचान कर रहा है जिन्हें संबोधित करने की आवश्यकता है।

विशेष रूप से, मैं उच्च चक्रवात जटिलता के साथ दिनचर्या को कॉल करना चाहता हूं, पुनरावृत्ति की पहचान करता हूं, और शायद संदिग्ध (और इस प्रकार गलत गलती) संरचनाओं को खोजने के लिए कुछ लिंट-जैसी स्थिर विश्लेषण चला सकता हूं।

मैं ऐसी रिपोर्ट बनाने के बारे में कैसे जा सकता हूं?


CloneDigger नामक एक उपकरण है जो आपको समान कोड स्निपेट खोजने में मदद करता है।


जब आपको एक नई परियोजना को समझने की आवश्यकता होती है तो पिकाना आकर्षण की तरह काम करता है!

PyCAna (पायथन कोड विश्लेषक) पाइथन के लिए एक साधारण कोड विश्लेषक के लिए एक फैंसी नाम है जो आपके कोड को निष्पादित करने के बाद कक्षा आरेख बनाता है।

देखें कि यह कैसे काम करता है: http://pycana.sourceforge.net/

उत्पादन:

alt text http://pycana.sourceforge.net/relations.png



चक्रीय जटिलता की जांच के लिए, निश्चित रूप से mccabe पैकेज है।

स्थापना:

$ pip install --upgrade mccabe

उपयोग:

$ python -m mccabe --min=6 path/to/myfile.py

उपरोक्त 6 की दहलीज पर ध्यान दें। इस जवाब के अनुसार , स्कोर> 5 शायद सरलीकृत होना चाहिए।

नमूना आउटपुट --min=3 :

68:1: 'Fetcher.fetch' 3
48:1: 'Fetcher._read_dom_tag' 3
103:1: 'main' 3

यह वैकल्पिक रूप से pylint-mccabe या pytest-mccabe आदि के माध्यम से भी उपयोग किया जा सकता है।


स्थिर विश्लेषण के लिए pylint और pychecker । व्यक्तिगत रूप से मैं पिलिंट का उपयोग करता हूं क्योंकि यह पेचेकर से अधिक व्यापक लगता है।

चक्रवात जटिलता के लिए आप इस perl प्रोग्राम , या इस traceback.org को आजमा सकते हैं जो एक पायथन प्रोग्राम को एक ही करने के लिए पेश करता है


चक्रवात जटिलता को मापने के लिए, traceback.org पर एक अच्छा टूल उपलब्ध है। पृष्ठ भी परिणामों की व्याख्या करने के बारे में एक अच्छा अवलोकन देता है।

pylint लिए +1। कोडिंग मानकों के अनुपालन की पुष्टि करने में यह बहुत अच्छा है (चाहे वह PEP8 या अपने स्वयं के संगठन का संस्करण हो), जो अंत में चक्रवात जटिलता को कम करने में मदद कर सकता है।


चक्रवात जटिलता के लिए आप radon उपयोग कर सकते हैं: https://github.com/rubik/radon

(इसे स्थापित करने के लिए pip का प्रयोग करें: pip install radon )

इसके अतिरिक्त इसमें इन विशेषताएं भी हैं:

  • कच्चे मेट्रिक्स (इनमें एसएलओसी, टिप्पणी लाइन, खाली रेखाएं, और सी शामिल हैं।)
  • हेलस्टेड मेट्रिक्स (उनमें से सभी)
  • रखरखाव सूचकांक (विजुअल स्टूडियो में इस्तेमाल किया जाने वाला)




cyclomatic-complexity