سؤال

حصلت على حزمة من ملفات C ++ مع شفرة مصدر ثابت (تم تنطيرها بالفعل، وليس هناك حاجة لفعل أي شيء لهم).

يوجد برنامج / ليب / طريقة للحصول على قائمة بعدد المعالم كل وظيفة مع واحدة من تلك الملفات؟

أعني، الحصول على نتيجة مثل:

#File a.cpp
##a() -> 3 paramss
##foo() -> 0 params (void)

#File b.cpp
##test() -> 1 param

....

وسؤال أفضل.

هناك أي طريقة لمعالجة عدد العائدات لديها؟

#File a.cpp
##a() -> 3 params, 1 return
##foo() -> 0 params (void), 2 returns

على سبيل المثال، إذا كان "Foo" لديه عودة إذا كانت الحالة صحيحة وآخر إذا calse

شكرا مقدما.

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

المحلول

يمكنك محاولة تشغيل doxygen. على الملفات المصدر.

نظرا لأن المحتوى (يفترض) غير موثق، فأنت بحاجة إلى تهيئة Doxygen لاستخراج المحتوى من الملفات غير الموثقة.

إذا كنت ترغب فقط في تصفح قائمة الوظائف المتاحة، فيمكنك استخدام إخراج HTML.

يمكنك أيضا تكوين إخراج Doxygen لتكون XML، ثم اكتب محللا لسحب الإحصاءات التي تبحث عنها في كل وظيفة.

نصائح أخرى

أود حساب عدد ""، "والبدء في 1. يجب أن يمنحك هذا عددا دقيقا لعدد الحجج إلى وظيفة. ثم أتحقق من معرفة ما إذا كان "الفراغ" موجود قبل اسم الوظيفة، إذا لم يكن الأمر كذلك، فيمكنك الرهان أن هناك قيمة إرجاع.

ifstream infile;
infile.open(...);
int i, ret, args;
String s;

ret = args = 0;
s = infile.getline();
for( i=0; s[i] != '('; i++ ) {
 if( s[i] == 'v' && s[i+1] == 'o' && s[i+2] == 'i' && s[i+3] == 'd' ) {
  ret = 1;
  break;
 }
}

for( i=0; s[i] != '('; i++ ) {}

for( i; s[i] != ')'; i++ ) {
 if( args == 0 && s[i] != ' ' ) {
  args++;
 }
 if( s[i] == ',' ) {
  args++;
 }
}

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

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