Ctags: لا يكتشف رمزًا من httpd (الانحدار)

تم إنشاؤها على ١٣ ديسمبر ٢٠١٦  ·  8تعليقات  ·  مصدر: universal-ctags/ctags

أهلا،

أحدث علامات التصنيف العالمية (249c3c0c2a974ab03f7c307684563239096399a8) لا تكتشف الرمز ap_os_create_privileged_process في هذا الكود (قم بتضمين / ap_mpm.h من httpd 2.4.18):

AP_DECLARE(apr_status_t) ap_os_create_privileged_process(
    const request_rec *r,
    apr_proc_t *newproc,
    const char *progname,
    const char * const *args,
    const char * const *env,
    apr_procattr_t *attr,
    apr_pool_t *p);

أعاد هذا الأمر إخراجًا فارغًا:

ctags -x --C-kinds=fpvx --languages=+C --language-force=C include/ap_mpm.h|grep ap_os_create_privileged_process

ومع ذلك ، فإن إصدار علامات ctags العالمية من 7 مايو 2016 (e5b7a2508db6e1374ea78a300cc9b45f4b26b02a) اكتشفه بشكل صحيح:

ctags -x --C-kinds=fpvx --languages=+C --language-force=C include/ap_mpm.h|grep ap_os_create_privileged_process
ap_os_create_privileged_process prototype   107 include/ap_mpm.h AP_DECLARE(apr_status_t) ap_os_create_privileged_process(

لا يمكنني حتى إصلاح هذا عن طريق أي خيار -I . من الضروري استخدام المحلل اللغوي OldC في هذه الحالة.

شكرا لك.

ال 8 كومينتر

آسف على التأخير. عندي سؤال. تم العثور على e5b7a25 عن طريق بوابة bisect؟ أم لا؟
أعتقد أنه قد يتم تقديم هذا الخطأ عندما عمل pragmaware على سمة للوظيفة التي طلبت منه إصلاحها. هذا و # 1241 قد يرصد نفس الخطأ.

هذا خطأ ولكن قد يكون من الصعب إصلاحه ، على ما أعتقد.

ليس لدي وقت لإصلاحه الآن ، لكن هذا الخطأ له تأثيرات على حياتي اليومية. سأجد الوقت على أي حال.
عندما أجد الوقت ، سأخصص هذا لي. هذا يعني أنه حتى حقل المحال إليه لا شيء ، pragmaware ، لديك تغيير لإصلاح هذا :-P.

ربما يمكن للمحلل أن يكون لديه استدلالات لهذا النوع من الأشياء ، لكن حسنًا ، تركت pragmaware يقرر ما إذا كان الأمر يستحق ذلك / يمكن

ولكن مع معالجه المسبق الجديد ، يمكنك بسهولة حل المشكلة باستخدام -D 'AP_DECLARE(t)=t' :

$ ./ctags -x --C-kinds=+p -D 'AP_DECLARE(t)=t' /tmp/1242.c
ap_os_create_privileged_process prototype     1 /tmp/1242.c      AP_DECLARE(apr_status_t) ap_os_create_privileged_process(

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

pragmaware ، شكرا لك.

هل يمكنك أن تسأل عن الخيار القوي -D لـ http://docs.ctags.io/en/latest/parser-cxx.html .
هذه ليست المرة الأولى التي نسمح فيها للمستخدم بمعرفة الخيار -D .

مغلق عبر # 1245

يكتشف Ctags 6e839be606cbc750e6e6a7e6d16fe375adbef5ca هذا الرمز المستقل جيدًا. لكن ملف الرأس الأولي يحتوي على التمهيد التالي لهذا الرمز:

AP_DECLARE_HOOK(int, mpm, (apr_pool_t *pconf, apr_pool_t *plog, server_rec *server_conf))

/**
 * comment ...
 */

AP_DECLARE(apr_status_t) ap_os_create_privileged_process(
    const request_rec *r,
    apr_proc_t *newproc,
    const char *progname,
    const char * const *args,
    const char * const *env,
    apr_procattr_t *attr,
    apr_pool_t *p);

ولسبب ما لا يكتشفها ctags في هذه الحالة. قد تكون هذه المشكلة متعلقة بـ # 1251.

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

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

liuchengxu picture liuchengxu  ·  8تعليقات

cweagans picture cweagans  ·  8تعليقات

EvanCarroll picture EvanCarroll  ·  14تعليقات

blackb1rd picture blackb1rd  ·  8تعليقات

fommil picture fommil  ·  19تعليقات