هل تجد محللي التعليمات البرمجية المصدرية مفيدة؟

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

سؤال

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

المحلول

أستخدم بعض أدوات التحليل الثابتة في Java. FindBugs هو خط الدفاع الأول، حيث يلتقط الكثير من الأخطاء الشائعة ويقدم تعليقات مفيدة جدًا.غالبًا ما يكتشف الأخطاء السخيفة للمبرمجين المتعبين ولا يضع عبئًا كبيرًا على المستخدم.

بي إم دي يعد مفيدًا للعديد من الأخطاء الأخرى المزعجة، ولكنه يتطلب الكثير من التكوين.ستجد أن الإعدادات الافتراضية لـ PMDs غالبًا ما تكون أعلى من اللازم.هناك الكثير من القواعد التي ربما تكون مفيدة على نطاق صغير ولكنها في النهاية لا تساعد المبرمجين الآخرين في الحفاظ على التعليمات البرمجية الخاصة بك.غالبًا ما تتسم بعض قواعد PMD بالتحسين المبكر.

ربما أكثر فائدة هو التطوير المهني المستمر الدعم في PMD.فهو يحاول العثور على التعليمات البرمجية التي تم تكرارها في مكان آخر، من أجل جعل إعادة البناء أسهل بكثير.قم بتشغيل مشروع بأكمله، وهذا يساعد حقًا في تحديد الأولويات الكبرى لتنظيف التعليمات البرمجية وإيقاف أي انتهاكات لـ DRY.

Checkstyle يعد مفيدًا أيضًا، للتأكد من أن المبرمجين لديك يتوافقون مع بعض معايير أسلوب الترميز.إنه يحتوي على القليل من التداخل مع PMD ولكنه أكثر قابلية للاستخدام بشكل عام.

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

أوه، ولقد تم اختبارها أيضا مهرج.يبدو أنه جيد جدًا للعثور على الثغرات في الاختبارات، حتى عندما يكون للكود بعض التغطية.لا أوصي به حتى الآن، وذلك ببساطة لأنني لم أستخدمه بشكل كافٍ، ولكن يجب تجربته.

أقوم بتشغيل هذه الأدوات من داخل Eclipse وكجزء من مجموعة البناء الآلية.

نصائح أخرى

بالنسبة لـ C، أستخدم ميمواتش.إنه حقًا سهل الاستخدام ومجاني.

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

لقد استخدمت resharper وMS TS (أساسًا FXCop) وكلاهما مفيد جدًا خاصة في المجالات التالية:

  • تحديد الكود الميت
  • نطاق واسع
  • تحسينات الأداء (المتعلقة بالعولمة وما إلى ذلك)

التوصيات ليست رائعة دائمًا ولكنها تعمل بشكل عام على تحسين جودة الكود.

أنا مستخدم على المدى الطويل ل بي سي لينت لـ C وC++ وأجده مفيدًا جدًا.تكون هذه الأدوات مفيدة للغاية عند الاستيلاء على قاعدة تعليمات برمجية لا تعرفها.مع مرور الوقت، ستصل إلى قانون تناقص العائدات، حيث يميل عدد الأخطاء الجديدة التي تجدها إلى التراجع.

أنا دائمًا لا أزال أتطلع إلى مشروع كامل في إصدار كبير.

يحرر:هناك قائمة لطيفة من الأدوات ذات الصلة على ويكيبيديا هنا

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

إنه لا يغطي كل شيء، لذا فإن FxCop (أو ما شابه) يعد إضافة جيدة إلى صندوق الأدوات.ومع ذلك، نظرًا لأن Resharper يقدم تعليقات فورية، فإن وقت الاستجابة جيد حقًا.(أدرك أنه يمكن تشغيل FxCop من VS، لكنه ليس نفس imo).

أجد المحللات مفيدة إلى حد ما، وأستخدم الإصدار المدمج في الاستوديو المرئي (على سبيل المثال./تحليل لـ c/c++ والقواعد المخصصة لـ .net)، أحيانًا أستخدمها com.stylecop و com.codeitright بالنسبة لـ C# في الغالب للحصول على إرشادات حول كيف ينبغي أن تكون الأمور.

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

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

يقسم بعض المبرمجين الذين أعرفهم أن IBM Rational PurifyPlus رائع، ولكن هذا هو رأيهم، لقد أجريت للتو 2-3 جلسات مع الأداة.

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

ملاحظة.أميل إلى إنتاج أخطاء أقل بكثير في C# مقارنةً بـ C++، قد يقول شخص ما إنني مخطئ ولكن على الرغم من أنني أستخدم C++ لسنوات أكثر من C#، إلا أنني أجد أن نهج gc لـ C# أسهل بكثير من c++. خاصة بالنسبة للمشاريع التي تستعجل في الانتهاء منها في الوقت المحدد/الموعد النهائي، وهو ما يشبه كل مشروع في هذه الأيام...

أنا أستعمل StyleCop لـ #C.إنها أداة رائعة للحفاظ على نمط التعليمات البرمجية المتسق الذي يؤدي إلى تحسين جودة التعليمات البرمجية.أيضًا ريشاربر يقوم ببعض تحليل التعليمات البرمجية ولكنه أساسي جدًا.

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