مدقق ثابت للعثور على أخطاء المؤشر الذكي في برامج C ++
مدقق نمط ترميز ثابت للكشف عن سوء استخدام API من المؤشرات الذكية C ++ والتي من المحتمل أن تؤدي إلى أخطاء في الذاكرة مثل تسرب الذاكرة ، والاستخدام بعد مجاني ، وخالية مزدوجة.
الإبلاغ عن وسيطة قالب auto_ptr المستخدمة في حاوية STL.
std::vector<std::auto_ptr< int >> vi;
^
Warn here أبلغ عن جميع نقل الذاكرة من auto_ptr إلى آخر.
std::auto_ptr< int > p1 ( new int ( 42 ));
void foo (std::auto_ptr< int > p);
foo (p1);
^
Warn here الإبلاغ عن العملية التي delete المؤشر من مراقبي المؤشرات الذكية.
std::unique_ptr< int > p = std::make_unique< int >( 42 );
delete p.get();
^
Warn hereالإبلاغ عن المبادرات مع الذاكرة غير المخصصة.
int I;
std::unique_ptr< int > p (&I);
^
Warn here الإبلاغ عن حقل auto_ptr الخاص في فئة بدون منشئي النسخ ومشغلي المهام.
class Type {
private:
std::auto_ptr< int > p;
^
Warn here
};الإبلاغ عن بناء مؤشر ذكي مع متغير المؤشر الخام.
void foo ( int *p) {
std::unique_ptr< int > sp (p);
^
Warn here
} الإبلاغ عن النوع غير المتطابق من حجة القالب والمشغل new لبناء المؤشرات الذكية.
std::auto_ptr< int > sp ( new int [ 42 ]);
^
Warn here الإبلاغ عن استخدامات weak_ptr غير المقيدة غير المقيدة.
std::weak_ptr< int > wp;
...
*wp.lock() = 42 ;
^
Warn here الإبلاغ عن مؤشر release D الذي لم يتم تعامله.
std::unique_ptr< int > sp;
...
*sp.release() = 42 ;
^
Warn hereclang tidy مع العداء (SHA256SUM 2C237C9A7E280F91D705ED6E16189C0A63B17643F09F3E233B2F7E6ECC712272)
يرجى الاتصال بنا إذا كنت بحاجة إلى رمز المصدر.
smartpointersafety- لجميع أنماط الخطأ المذكورة أعلاه.على سبيل المثال
$ clang-tidy -checks= ' -*,smartpointersafety-* ' source.cpp