سؤال

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

لقد ألقيت نظرة على محللي المصدر، مثل CheckStyle وPMD، ولم يكن لديهم حقًا إمكانات التحليل عبر الفئات.يبدو من الصعب توسيع نطاق محللي Bytecode، مثل FindBugs وJLint.

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

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

المحلول

هل جربت FindBugs؟وهو يدعم في الواقع مجموعة من الشروحات لسلامة الموضوع (نفس تلك المستخدمة في جافا التزامن في الممارسة العملية).يمكنك أيضًا كتابة القواعد المخصصة الخاصة بك.لست متأكدًا مما إذا كان بإمكانك إجراء تحليل عبر الفئات، لكنني أعتقد ذلك.

بيتر فينتجير لديه أداة فحص التزامن (الذي يستخدم ASM) لاكتشاف أشياء مثل هذه.لست متأكدًا مما إذا كان قد نشرها علنًا لكنه قد يتمكن من مساعدتك.

وأعتقد التغطية أدوات التحليل الثابتة/الديناميكية لسلامة الخيط تقوم بالتحقق من هذا القبيل.

نصائح أخرى

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

وأداة بسيطة لفحص على الشروح هي عرضة ( HTTP: //java.sun.com/j2se/1.5.0/docs/guide/apt/ أيضا جزء من جافا 6 المعهد في javax.annotation.processing) ولكن هذا ليس لديها سوى اكتب المعلومات (أي لم استطع العثور على طريقة سريعة للحصول على التسلسل الهرمي الميراث باستخدام API javax.lang.model، ولكن إذا كان يمكنك تحميل للدرجة التي يمكن الحصول على هذا انعكاس المعلومات باستخدام).

وحاول javap + regexes (على سبيل المثال. بيرل)

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