C++ və C dilləri üçün statik kod analizatoru cppcheck 2.6-nın buraxılışı

Statik kod analizatorunun cppcheck 2.6 yeni versiyası buraxılmışdır ki, bu da C və C++ dillərində kodda müxtəlif sinif xətalarını, o cümlədən quraşdırılmış sistemlər üçün xarakterik olan qeyri-standart sintaksisdən istifadə zamanı müəyyən etməyə imkan verir. Cppcheck-in müxtəlif inkişaf, davamlı inteqrasiya və sınaq sistemləri ilə inteqrasiya olunduğu plaginlər toplusu təqdim olunur, həmçinin kod üslubuna kodun uyğunluğunu yoxlamaq kimi xüsusiyyətləri təmin edir. Kodu təhlil etmək üçün ya öz analizatorunuzdan, ya da Clang-dan xarici analizatordan istifadə edə bilərsiniz. O, həmçinin Debian paketləri üçün birgə kodu nəzərdən keçirmək üçün yerli resursları təmin etmək üçün donate-cpu.py skripti daxildir. Layihənin mənbə kodu GPLv3 lisenziyası altında paylanır.

cppcheck-in inkişafı qeyri-müəyyən davranış və təhlükəsizlik baxımından təhlükəli dizaynların istifadəsi ilə bağlı problemlərin müəyyənləşdirilməsinə yönəldilmişdir. Məqsəd həm də yanlış pozitivləri minimuma endirməkdir. Müəyyən edilmiş problemlər arasında: mövcud olmayan obyektlərə göstəricilər, sıfıra bölmələr, tam daşqınlar, səhv bit dəyişdirmə əməliyyatları, səhv çevrilmələr, yaddaşla işləyərkən problemlər, STL-dən düzgün istifadə edilməməsi, boş göstəricilərə istinadlar, faktiki girişdən sonra yoxlamaların istifadəsi buferə, buferin aşılması, işə salınmamış dəyişənlərin istifadəsi.

Yeni versiyada:

  • Analizatorun nüvəsinə aşağıdakı yoxlamalar əlavə edilmişdir:
    • funksiya orqanında qaytarma operatorunun olmaması;
    • üst-üstə düşən məlumatları qeyd edir, qeyri-müəyyən davranışı müəyyən edir;
    • müqayisə edilən dəyər növün dəyər təmsilindən kənardadır;
    • surətin optimallaşdırılması std::move(yerli) qayıtmaq üçün tətbiq edilmir;
    • müxtəlif axınlarda (axın) oxumaq və yazmaq üçün fayl eyni vaxtda açıla bilməz;
  • Unix platformaları üçün diaqnostik mesajları müxtəlif rənglərdə göstərmək üçün əlavə dəstək;
  • ValueFlow üçün simvolik analiz əlavə edildi. İki naməlum dəyişən arasındakı fərqi hesablayarkən sadə deltadan istifadə edir;
  • "müəyyən et" işarələrinin siyahısı üçün istifadə edilən qaydalar da #include ilə uyğunlaşa bilər;
  • kitabxananın teqi indi teqini və müvafiq olaraq std::size, std::empty, std::begin, std::end və s. kimi konteynerləri qəbul edə bilən pulsuz funksiyaları ehtiva edə bilər. bağlayıcılar üçün yeld və ya hərəkəti təyin edə bilər;
  • kitabxana teqi indi unikal sahibliyə malik ağıllı göstəricilər üçün teqini ehtiva edə bilər. İndi bu cür ağıllı göstəricilərə sallanan istinadlar barədə xəbərdarlıq edilir;
  • —cppcheck-build-dir parametrinin emalı ilə bağlı problemləri həll etdi;
  • htmlreport indi müəllif haqqında məlumatı göstərə bilər (git blame istifadə edərək);
  • sabit olmayan, lakin ola biləcək dəyişənlər haqqında genişləndirilmiş xəbərdarlıqlar;
  • Analizatorda yığılmış səhvlər və çatışmazlıqlar düzəldildi.

Əlavə olaraq, 2012, 1 və 2-cü qaydalar istisna olmaqla, Misra C 1.1-dən olan yoxlamalar, o cümlədən 1.2-ci Düzəliş və 17.3-ci düzəliş tam şəkildə həyata keçirilib. 1.1 və 1.2 yoxlamaları tərtibçi yerinə yetirməlidir. Doğrulama 17.3 GCC kimi kompilyator tərəfindən həyata keçirilə bilər.

Mənbə: opennet.ru

Добавить комментарий