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


99

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

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

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

जवाबों:


36

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

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


4
ट्रेसबैक
डॉट ओआरजी

पाइलिंट महान है, लेकिन धीमी है। हम प्री-पुश हुक के रूप में उपयोग करते हैं, लेकिन नियमित जांच और प्री-कमिट हुक के लिए फ्लैक 8 और प्लगइन्स का एक गुच्छा उपयोग करते हैं। मैं वास्तव में https://flakehell.readthedocs.io/config.htmlइन दिनों की सिफारिश करूंगा , हालांकि यह निष्पादन मॉडल बहुत अधिक मजबूत और विन्यास योग्य है।
डिलायन्गॉन्ग

29

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

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

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

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

Halstead मेट्रिक्स प्राप्त करने के लिए स्विच क्या है?
दिमा तिस्नेक

1
@qarma यदि मैं डॉक्स को समझता हूं, तो मुझे नहीं लगता कि आप कमांड लाइन का उपयोग कर सकते हैं। आपको पायथन एपीआई का उपयोग करना होगा।
डेव हाल्टर

18

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

साइक्लोमैटिक जटिलता के लिए आप इस पर्ल प्रोग्राम या इस लेख को आज़मा सकते हैं , जो ऐसा करने के लिए एक अजगर प्रोग्राम पेश करता है


11

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

PyCAna (Python Code Analyzer) अजगर के लिए एक सरल कोड विश्लेषक का एक फैंसी नाम है जो आपके कोड को निष्पादित करने के बाद एक वर्ग आरेख बनाता है।

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

उत्पादन:

वैकल्पिक शब्द




4

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


1
यह पायथन 3 के साथ काम नहीं करता है और इसे कभी भी बनाए नहीं रखा गया था।
एक्यूमेनस

3

साइक्लोमैटिक जटिलता की जाँच के लिए, निश्चित रूप से 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

वैकल्पिक रूप से इसका उपयोग पाइलिंट-मैकबेबे या पाइस्टेस्ट-मैकेबे , आदि के माध्यम से भी किया जा सकता है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.