الكشف عن دورة حزمة جافا:كيف يمكنني العثور على الفئات المحددة المعنية؟[مغلق]

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

سؤال

ما الأداة التي تنصح بالكشف عنها؟ حزمة جافا التبعيات الدورية، مع العلم أن الهدف هو أدرج بشكل واضح الفئات المحددة المشاركة في "دورة عبر الحزم" التي تم اكتشافها?

وأنا أعلم عن com.classycle و JDepend, ، لكن كلاهما فشل في إدراج الفئات المشاركة في تبعية الحزمة الدورية. المقاييس يحتوي على تمثيل رسومي مثير للاهتمام للدورات، ولكنه يقتصر مرة أخرى على الحزم، ومن الصعب جدًا قراءته في وقت ما.

لقد تعبت من الحصول على:

"لديك تبعية دورة الحزمة بين تلك الحزم الثلاث
لديك فصول xxx في كل منها
حظاً موفقاً في العثور على الفصول المناسبة وكسر هذه الحلقة المفرغة "

هل تعرف أي أداة تتخذ الخطوة الإضافية لتشرح لك فعليًا سبب اكتشاف الدورة (على سبيل المثال؟"قائمة الفئات المعنية")؟


ريايت...حان وقت إعلان النتائج:

@l7010.de:شكرا لتعاونك.سأصوت لصالحك (عندما يكون لدي ما يكفي من الممثلين)، خاصة بالنسبة للإجابة "CAP"...لكن CAP مات في الماء ولم يعد متوافقًا مع Eclipse 3.4 الخاص بي.والباقي تجاري وأبحث فقط عن البرامج المجانية.

@دانيال6651:شكرًا لك، ولكن، كما قيل، برنامج مجاني فقط (آسف لعدم ذكره في المقام الأول).

@izb كمستخدم متكرر لـ findbugs (باستخدام أحدث إصدار 1.3.5 الآن)، فأنا على بعد نقرة واحدة لقبول إجابتك...إذا كان بإمكانك أن تشرح لي ما هو الخيار المتاح لتنشيط Findbug لاكتشاف أي دورة.تم ذكر هذه الميزة فقط لـ الإصدار 0.8.7 في طور المرور (بحث 'كاشف النمط الجديد للعثور على التبعيات الدائرية بين الفئات')، ولا أستطيع اختباره.تحديث:إنه يعمل الآن، وكان لدي ملف تكوين قديم لـ findbugs لم يتم فيه تنشيط هذا الخيار.ما زلت أحب نذل - وغد رغم ذلك ؛)

الجواب هو...يرى إجابتي (الثانية) أدناه

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

المحلول

يستطيع Findbugs اكتشاف تبعيات الفئة الدائرية ويحتوي على مكون إضافي لـ Eclipse أيضًا.

http://findbugs.sourceforge.net/

نصائح أخرى

حسنًا...بعد الاختبار DepFinder المعروضة أعلاه, ، فقد اتضح أنه أمر رائع للكشف السريع عن التبعيات البسيطة، لكنه لا يتناسب بشكل جيد مع عدد الفئات ...

لذا فإن الإجابة الفعلية هي:CDA - محلل تبعية الفئة

إنه سريع وحديث وسهل الاستخدام ويوفر تمثيل رسومي للفئات وتبعياتها الدائرية.حلم تحقق ؛)

يجب عليك إنشاء مجموعة عمل تدخل فيها فقط دليل فئاتك (.class) (لا حاجة إلى أن يكون لديك مسار فصل كامل)
خيار "الكشف عن التبعيات الدائرية - بديل-ج" يعمل كما هو معلن ولا يستغرق 100٪ من وحدة المعالجة المركزية لساعات لتحليل 468 فصلًا.
ملحوظة:لتحديث مساحة العمل، تحتاج إلى فتحها مرة أخرى (!)، لتتمكن من إجراء فحص جديد لفصولك الدراسية.

screenshot

نحن نستخدم سونار للكشف عن دورات الحزمة.إنه يرسم رسمًا بيانيًا لطيفًا للتبعيات ويظهر أي منها يسير في الاتجاه الخاطئ.يمكنك حتى الانتقال إلى المصدر حيث يتم استخدام التبعية.

يرى http://www.sonarsource.org/fight-back-design-erosion-by-breaking-cycles-with-sonar/

يوجد ايضا الهيكل101 والتي ينبغي أن تفعل هذا.

عجلة عالية يكتشف دورات الفئة والحزمة ويبلغ عن مصدر التبعيات وصولاً إلى مستوى الفئة/الطريقة/الحقل مع الإشارة إلى نوع العلاقة (الميراث، التكوين، جزء من توقيع الطريقة، وما إلى ذلك).

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

الإخراج هو HTML مع محتوى SVG مضمن يتطلب متصفحًا حديثًا.

ويمكنك استخدام الأداة مفتوحة المصدر قبعة وهو البرنامج المساعد Eclipse.

يحتوي CAP على عرض حزمة رسومية والذي سيُظهر لك خطوط الفئات، لذلك بعد بعض النقرات (اعتمادًا على حجم الدائرة) ستجد الجاني.

الجواب المحتمل الأول هو...ليست جميلة.لكنه يبدأ في فعل ما أنا عليه بعد (حل أفضل الواردة أدناه).

مكتشف التبعية! تنزيله, ، قم بفك ضغطه.

إنه ليس المشروع الأكثر حداثة أو نشاطًا على الإطلاق، ولكن إذا قمت بتحرير [Dependency Finder]/bin/DependencyFinder.bat، وأضفت مساره إلى DEFAULT_DEPENDENCYFINDER_HOME، وقم بتعيين JAVA_HOME، فيمكنك تشغيله.

ثم تقوم بالنقر فوق الزر "استخراج" (CTRL-E - الزر الأول)، وأدخل مسار الفصل الدراسي الخاص بك، واتركه يمسح بعيدًا.

الجزء الصعب هو النقر بالضبط على المجموعة الصحيحة من "عناصر البرمجة" وعناصر "الإغلاق"، حتى لا تغرق بمستوى التفاصيل في النتيجة.

  • حدد فقط "الفئات" في الجانب الأيسر ("عناصر البرمجة").
  • حدد فقط "الفئات" في الجانب الأيمن ("الإغلاق").
  • أضف "/javax?./,/org./,/sun./" كنمط استبعاد (لكل من عناصر البرمجة وعمليات الإغلاق).
  • انقر على العجلات (الزر الأخير - حساب الكل - كنترول + أ).

وهنا تذهب.

كلما رأيت '<->'، فقد حصلت على نتيجة جيدة التبعية الدورية.(إذا حددت "الميزات" على جانب "الإغلاق"، فيمكنك أيضًا معرفة الوظيفة التي تؤدي إلى تشغيل الدورة - رائع.)

وأنا على استعداد لاختبار أي اقتراحات أخرى.

هناك بعض الأدوات التجارية:Structure101 وLattix والتي يمكن استخدامها لهذا الغرض.

إحدى الأدوات التي تقوم بذلك هي البرنامج التصوير المقطعي.إنه تجاري وواجهة المستخدم سيئة:o

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