كيف يمكنني تحليل كود بايثون تحديد إشكالية المجالات ؟

StackOverflow https://stackoverflow.com/questions/100298

سؤال

لدي مصدر كبير مستودع الانقسام عبر مشاريع متعددة.أود أن تنتج تقريرا عن صحة التعليمات البرمجية المصدر ، تحديد مجالات المشاكل التي تحتاج إلى معالجة.

على وجه التحديد, أود أن أصل الكلمة الروتينية مع ارتفاع cyclomatic التعقيد ، تحديد التكرار ، وربما تشغيل بعض الوبر مثل تحليل ثابت إلى بقعة مشبوهة (وبالتالي من المرجح الخاطئة) يبني.

كيف يمكن أن أذهب حول بناء مثل هذا التقرير ؟

هل كانت مفيدة؟

المحلول

لقياس cyclomatic التعقيد ، هناك أداة لطيفة المتاحة في traceback.org.الصفحة كما يعطي لمحة جيدة عن كيفية تفسير النتائج.

+1 pylint.وهي كبيرة في التحقق من الامتثال إلى معايير الترميز (سواء كان PEP8 أو الخاصة بك المنظمة البديل) ، والتي يمكن في نهاية المطاف تساعد على تقليل cyclomatic التعقيد.

نصائح أخرى

بالنسبة cyclomatic تعقيد يمكنك استخدام radon: https://github.com/rubik/radon

(استخدام pip لتثبيته: pip install radon)

بالإضافة إلى أنه أيضا لديه هذه الميزات:

  • الخام المقاييس (وهذه تشمل المعني ، خط التعليق الخطوط فارغة الخطوط &c.)
  • مقاييس هولستيد (كل منهم)
  • الصيانة مؤشر (المستخدم في Visual Studio)

من أجل تحليل ساكنة هناك pylint و pychecker.أنا شخصيا استخدام pylint كما يبدو أن يكون أكثر شمولا من pychecker.

بالنسبة cyclomatic تعقيد يمكنك محاولة هذا برنامج perl, أو هذا المادة الذي يقدم برنامج بيثون أن تفعل الشيء نفسه

Pycana تعمل مثل سحر عندما تحتاج إلى فهم مشروع جديد!

PyCAna (كود بايثون محلل) ، اسم نزوة رمز بسيط محلل بيثون أن يخلق فئة الرسم بعد تنفيذ الخاص بك التعليمات البرمجية.

انظر كيف يعمل:http://pycana.sourceforge.net/

الإخراج:

النص البديل http://pycana.sourceforge.net/relations.png

شكرا بيديف, يمكنك دمج pylint في Eclipse IDE حقا بسهولة و الحصول على رمز التقرير في كل مرة تقوم بحفظ الملف تم تعديله.

استخدام flake8, الذي يوفر pep8, pyflakes ، cyclomatic تعقيد التحليل في أداة واحدة

هناك أداة تسمى CloneDigger هذا يساعدك على العثور على غرار التعليمات البرمجية المتكررة.

للتحقق من cyclomatic التعقيد ، هناك بالطبع 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-مكابي أو pytest-مكابي, ، وما إلى ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top