علامات التحذير الشاملة والمطولة لمجموعات C مع g
توفر Gcc مجموعة شاملة من علامات التحذير لمساعدة المطورين في اكتشاف المشكلات المحتملة في الكود الخاص بهم. لتمكين التحذيرات الشاملة والمطوّلة في لغة C، خذ في الاعتبار التوصيات التالية:
التحذيرات الأساسية:
- - متحذلق : الالتزام الصارم معايير لغة C.
- - الجدار : تنشيط جميع المقبولة بشكل عام تحذيرات.
- -Wextra : قم بتوسيع نطاق التحذير إلى ما بعد -Wall.
- -Wcast-align: كشف نتائج المؤشر المنحرفة.
- -Wcast-qual: التحذير من التغييرات في نوع المؤشر المؤهلات.
- -Wctor-dtor-privacy: تسليط الضوء على المشكلات المتعلقة بمنشئ الفئة ومعدلات الوصول إلى المدمر.
- -Wdisabled-optimization: تحديد الكود يمكن تحسينها ولكنها ليست كذلك.
-Wformat=2- : تحسين التعامل مع محدد التنسيق أثناء التجميع.
-Winit-self- : منع المتغيرات من إعادة تهيئة نفسها.
-Wlogic-op- : اكتشاف مشكلات أسبقية المشغل المحتملة .
-Wmissing-declarations- : التحذير من فقدان التصريحات للمتغيرات و وظائف.
-Wmissing-include-dirs- : تسليط الضوء على الدلائل المتضمنة المفقودة.
-Wnoexcept- : تشجيع آليات معالجة الاستثناءات.-Wold-style-cast
: تحديد التوافق المحتمل للتعليمات البرمجية المشكلات.- -Woverloaded-virtual
: تحذير من التحميل الزائد للطريقة الافتراضية.- -Wredundant-decls
: أشر إلى الإعلانات الزائدة عن الحاجة.- -Wshadow
: منع التظليل غير المقصود لـ المتغيرات.- -Wsign-conversion
: اكتشاف أخطاء تحويل التوقيع المحتملة.- -Wsign-promo
: تسليط الضوء على المشكلات المحتملة المتعلقة بترويج التوقيع. - -Wstrict-null-sentinel
: تعزيز أمان التعليمات البرمجية من خلال التحكم في null Sentinel value.- -Wstrict-overflow=5
: حدد مستوى تجاوز الأعداد الصحيحة بخمسة تحذيرات.- -Wswitch-default
: ضمان شامل تبديل معالجة البيان.- -Wundef
: التحذير من المتغيرات غير المحددة أو وحدات الماكرو.- -Wno-unused
: يستبعد التحذيرات المتغيرة غير المستخدمة لتعزيز التركيز على القضايا الأكثر أهمية. تحذيرات اختيارية ولكن مشكوك فيها:
]
-Wdisabled-optimization
: قد يشير إلى رمز دون المستوى الأمثل، ولكن ليس بالضرورة خطأ.- -Wfloat-equal
: من المحتمل أن يسبب نتائج إيجابية كاذبة لمقارنات المساواة الآمنة.- -Wold-style-cast
: قد يكون خطأ. الإيجابيات في مكتبات الطرف الثالث.- -Wsign-conversion
: يتطلب اهتمامًا دقيقًا بأنواع البيانات لمنعها أخطاء.- -Wsign-promo
: اعتبارات مماثلة مثل -Wsign-conversion.- -Wswitch-default
: يفرض معالجة صريحة لبيان التبديل. حالات ولكن يمكن أن تكون مملة. تحذيرات ل استبعاد:
تم حذف هذه التحذيرات بسبب نتائج إيجابية كاذبة محتملة أو فائدة محدودة:
-Wabi
: يتطلب تجميع الثنائيات من مصادر متنوعة. - -Waggregate-return
: قد يشير إلى نوع بيانات ضمني التحويلات.- -Wconversion
: قد يُنشئ تحذيرات للتحويلات الضمنية غير الضارة.- -Weffc
: يمكن أن يكون مزدحمًا بتحذيرات غير ذات صلة.- -Winline
: قد لا يكون قابلاً للتطبيق في جميع الطرق المضمنة السيناريوهات.- -Winvalid-pch
: لا ينطبق على المشاريع التي لا تستخدم الرؤوس المترجمة مسبقًا.- -Wmissing-format-attribute
: يتطلب ملحقات GNU غير شائعة الاستخدام.- -Wpadded: يتطلب التحسين اليدوي لـ تخطيطات الفئة.
- -Wstack-protector: يتطلب إشارات مترجم محددة لحماية المكدس.
- -Wstrict-aliasing=3: عروض إضافية محدودة تحذيرات مقارنة بالمستويات الأدنى.
- -Wswitch-enum: مقيدة بشكل مفرط وقد لا تكون مناسبة للجميع حالات الاستخدام.
- -Wunsafe-loop-optimizations: يمكن أن تولد تحذيرات زائفة في سيناريوهات معينة.