سؤال

هل هناك أي أدوات لإجراء تحليل ثابت لرمز Scala ، على غرار FindBugs و PMD لـ Java أو Splint لـ C/C ++؟ أعلم أن FindBugs يعمل على رمز Bytecode الذي تم إنتاجه عن طريق تجميع Java ، لذلك أنا فضولي بشأن كيفية عمله على Scala.

عمليات البحث في Google (اعتبارًا من 27 أكتوبر 2009) تكشف القليل جدًا.

عمليات البحث في Google (اعتبارًا من 01 فبراير 2010) تكشف عن هذا السؤال.

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

المحلول

يقوم FindBugs بتحليل رموز بايت JVM ، بغض النظر عن الأداة التي ولدتها. لقد حاولت استخدام FindBugs للتحقق من ملفات .class التي تم إنشاؤها بواسطة Scala. لسوء الحظ ، أنتجت FindBugs العديد من التحذيرات ، حتى لبرامج Scala التافهة.

نصائح أخرى

هنالك الان Scalastyle الذي يقوم بالمهمة التي تقوم بها CheckStyle لجافا. لا يشمل ذلك فقط تنسيق الشيكات ، ولكن أيضًا بعض الشيكات عن المصادر المعروفة من الأخطاء ، مثل فئة تنفذ HashCode () ولكن ليس متساويًا.

يوجد حاليًا حوالي 40 شيكًا ، لكننا نضيفها طوال الوقت.

لمزيد من المعلومات، راجع www.scalastyle.org.

هناك بعض الأعمال التي تحدث في هذا الاتجاه. بعض الروابط:

هناك أيضًا مناقشة حول قائمة بريد Scala ، أرشيف متاح هنا.

فيما يلي إجابة محدثة اعتبارًا من أغسطس 2014 بالنسبة للبعض الذي يهدف أو يعمل بشكل جيد مع Scala.

أنا شخصياً أعتقد أن JVM أو Java ينتهي بهم المطاف مع الكثير من الإيجابيات الخاطئة ، أو لديهم عمليات تفتيش تهدف في الغالب إلى فصول محددة Java. على سبيل المثال ، نظرًا لأنه في Scala لا نميل إلى استخدام مجموعات Java ، فإن جميع عمليات التفتيش المستندة إلى مجموعة FindBugs غير مطلوبة. مثال آخر هو عمليات التفتيش لاستخدام الحقول الثابتة غير ذات الصلة في Scala.

ستعمل FindBugs وغيرها من الأدوات التي تعتمد على Bytecode ، بمعنى أنها ستجد أخطاء في الكود الخاص بك. لسوء الحظ ، تم ضبط الأساليب القائمة على Bytecode مقابل إخراج مجمعي JAVAC ، مما يعني أنه من المحتمل أن ينتج عن معدلات إيجابية خاطئة للغاية ، وتفوت المشكلات الأساسية ، لأن Scala ستنتج تعابير مختلفة عن مترجم Javac.

أنا أستمتع كثيرًا بالترميز (على سبيل المثال https://www.codacy.com/app/hejfelix/frase/dashboard) لمشاريع المصادر المفتوحة

يوجد مكون إضافي لـ SBT لـ PMD Copy Paste Detector CPD.

https://github.com/sbt/cpd4sbt

Scala Copy Paste Detector ، استنادًا إلى AST. تبحث عن TROUTRES/ASTS التي تم تصويرها ، وإبلاغها.

إنه البرنامج المساعد لـ SBT.

https://github.com/ajtkulov/scala-cpd

لا أعرف الكثير عن Scala ولكن إذا كان منتج Klocwork المتوافق مع Java قد يعمل. يمكنك العثور عليها هنا Klocwork Solo

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