سؤال

ونظرا رقم سطر من التعليمات البرمجية المصدر فئة معينة (جافا / C #) - هل هناك طريقة سهلة للحصول على اسم الأسلوب أنه يندرج ضمن؟ (وإذا كان يندرج ضمن فئة) (باستخدام يفترض والخلاصة بناء الجملة شجرة)

(وهذا من شأنه أن يكون مفيدا في الحد من انتاج checkstyle إلى مجرد طريقة لمست).

وأفترض كنت قد لاستخدام بناء الجملة شجرة مجردة للقيام خط # -> METHODNAME

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

المحلول

و(جافا محددة)

إذا تم تجميع ملف فئة مع معلومات التصحيح ثم سوف يحتوي الجدول رقم السطر تعيين رمز <-> رقم السطر. لا أعتقد أن هناك المدمج في API للحصول على هذا في وقت التشغيل على الرغم من أنني متأكد من أنك ربما يمكن القيام به مع مع بعض يبس الهندسة بايت كود هناك مثل ASM أو BCEL.

نصائح أخرى

وأنا لا أعرف عن جافا، ولكن المجالس NET ليس لديها أرقام الأسطر المخزنة في جداول بيانات التعريف الخاصة بهم - كنت في حاجة الى (قاعدة بيانات البرنامج) PDB ملف لهذا النوع من المعلومات

نعم، كما قلت، وذلك باستخدام النوع الصحيح من AST. و DMS برنامج إعادة هندسة أدوات يمكن بناء ASTS لجاوا وC #. ويزين كل عقدة AST مع البيانات رقم السطر. كل عقدة AST يناظر القاعدة النحوية.

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

ويستخدم هذه الحيلة بشكل كبير في أدوات التحليل ثابتة تم إنشاؤها باستخدام DMS، للإبلاغ عن اسم الأسلوب المخالف لمشكلة تشخيص في عدد خط معين. DMS هو مصممة لتمكين الآخرين لبناء هذه الأدوات تحليل ساكنة.

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