سؤال

ولقد تم تجرب NDepend و تم قراءة بعض blogposts عن ذلك، وحتى يسمع بودكاست. أعتقد أن NDepend قد تكون أداة مفيدة حقا، ولكن ما زلت لا أرى فيها أود أن استخدامها.

وكيف استخدامه؟ هل تستخدم ذلك، لماذا؟ لماذا لا؟

وأود أن نسمع عن بعض الأمثلة العالم الحقيقي وصولا إلى الأرض.

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

المحلول

ولقد استعملت NDepend على نطاق واسع خلال السنوات القليلة الماضية. في الأساس وإنما هي أداة تحليل التبعية، وحتى هذا يمكن أن تساعدك مع الكثير من القضايا المتعلقة التبعية.

واحد من أهم الأشياء أنا استخدامها لهو دراسة تبعيات بين بلدي الجمعيات، وأنواع وطرق. هذا يساعدني على الحفاظ على ضوء ما إذا كان اقتران بين أنواع هي من جهة، وأيضا يساعدني على الفور إعادة بيع ديون الفرص.

عند الشروع في ريفاكتور واسع، على سبيل المثال، extracting.moving أنواع لجمعيات أخرى، وهذا يتيح لك معرفة ما يعتمد على ما لذلك لم يكن لديك لتفعل القديمة "نقل أنواع بلدي إلى آخر التجميع، ثم حاول وتجميع ونرى ما فواصل"

لديها

وNDepend أيضا مصفوفة بصرية كبيرة لعرض هذا النوع من المعلومات.

وبالإضافة إلى ذلك، فإنه يحتوي على لغة الاستعلام رائعة، CQL، الذي يتيح لك استعلامات مخصصة للكتابة. يمكن أن تكون هذه الأشياء البسيطة مثل "تريني كل الأساليب التي استدعاء هذا الأسلوب"، على استفسارات لتسليط الضوء على كود القتلى والاستعلامات على تعقيد cylcomatic، اقتران، وما إلى ذلك، والكثير الكثير.

في المقابل، يمكن دمجها في عملية الإنشاء، حتى تتمكن من التحذيرات بناء / فشل تستند إلى استعلامات CQL، مثل "فشل بناء إذا كان الأسلوب له أكثر من 100 خط من التعليمات البرمجية ولكن لا تعليق" (هذا مثال - أنا لا أقترح هذا المقياس خاص هو شيء جيد)

ويمكن أيضا بيانات مدونة التغطية استيراد وتعطيك تمثيل مرئي من المناطق مع تغطية رمز قليلا، وكذلك مما يتيح لك تشغيل الاستعلامات CQL ضد المعلومات مدونة التغطية (على سبيل المثال تبين لي طرق مع أقل من 70٪ من التغطية كود)

ويمكنك أيضا تحميل الإنشاء الحالية الخاصة بك من المشروع الخاص بك، وبناء السابقة، وتشغيل الاستعلامات بينهما مثل "تريني كل <م> أنواع جديدة التي لديها <70٪ تغطية رمز" - وهذا يساعد يمكنك تطبيق قواعد أكثر صرامة على codebases القائمة.

وهذا هو أداة رائعة، وليس من الصعب جدا على التعلم. انه أمر مخيف في البداية، فقط بسبب الحجم الهائل من من informaiton فهو يوفر لك، ولكن ينصح بشدة.

نصائح أخرى

وأنا أيضا تجد أنه لا تقدر بثمن في فهم بنية استدعاءات الأسلوب معقدة. يمكنني استدعاء جميع طرق transitively باستخدام طريقة أو مجال معين، على سبيل المثال، ويمكن أن نرى إذا كان هناك مشاكل محتملة مع التعميم، أو تبعيات غير المرغوب فيها، أو المسارات التي هي أكثر من اللازم الملتوية، وما إلى ذلك.

والرسم البياني التبعية هو أيضا الآن التفاعلية، حتى أتمكن من إزالة الأساليب التي لا تعنيني حاليا في وخطوة أخرى في جميع أنحاء لإعطاء التصور خير ما يجري.

ولقد وجدت أنه من المفيد أن تصور التغييرات بين الإصدارات من التجمعات. حتى لقطة من التغييرات في بيان نظرا ...

وأعتقد أنه يضيء في بيئة التكامل المستمر حيث يمكنك إعداد CQL الاستعلامات لقياس مقاييس الرمز الذي كنت مهتما في (Cyclomatic التعقيد، طرق طويلة، وما إلى ذلك)، وبعد ذلك يمكنك قياس التقدم في تلك المناطق خلال الوقت.

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

وهذا هو أداة مفيدة عند طلبك لديها عدد كبير من التجمعات. انه يساعدني على معرفة تبعيات رمز وفضلا عن التغيرات بين الإصدارات

وأنا أيضا باستخدام NDepend مقارنة نسختين من بعض التجمع. NDepend تملك هذه الميزة الممتازة. يعطي الذي يكون لي رأي حول التغييرات وسير العمل في الجمعية، الأساليب التي تم إضافتها وطرق إزالتها وغيرها الكثير.

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