C++ va C tillari uchun statik kod analizatori cppcheck 2.6 ning chiqarilishi

Statik kod analizatorining cppcheck 2.6 yangi versiyasi chiqarildi, bu C va C++ tillaridagi koddagi xatolarning turli sinflarini aniqlash imkonini beradi, jumladan, o‘rnatilgan tizimlar uchun xos bo‘lgan nostandart sintaksisdan foydalanishda. Plaginlar to'plami taqdim etilgan bo'lib, ular orqali cppcheck turli xil ishlab chiqish, uzluksiz integratsiya va sinov tizimlari bilan birlashtirilgan, shuningdek kod uslubiga kod muvofiqligini tekshirish kabi xususiyatlarni taqdim etadi. Kodni tahlil qilish uchun siz o'zingizning parseringizdan yoki Clang-dan tashqi tahlilchidan foydalanishingiz mumkin. Shuningdek, u Debian paketlari uchun birgalikda kodni tekshirish ishlarini bajarish uchun mahalliy resurslarni taqdim etish uchun donate-cpu.py skriptini o'z ichiga oladi. Loyihaning manba kodi GPLv3 litsenziyasi ostida tarqatiladi.

cppcheck-ning rivojlanishi aniqlanmagan xatti-harakatlar va xavfsizlik nuqtai nazaridan xavfli dizaynlardan foydalanish bilan bog'liq muammolarni aniqlashga qaratilgan. Maqsad, shuningdek, noto'g'ri pozitivlarni minimallashtirishdir. Aniqlangan muammolar orasida: mavjud bo'lmagan ob'ektlarga ko'rsatgichlar, nolga bo'linishlar, butun sonlar to'lib ketishi, noto'g'ri bitni almashtirish operatsiyalari, noto'g'ri konvertatsiyalar, xotira bilan ishlashda muammolar, STL-dan noto'g'ri foydalanish, null ko'rsatgichlardan voz kechish, haqiqiy kirishdan keyin tekshirishlardan foydalanish. buferga, buferning oshib ketishi, ishga tushirilmagan o'zgaruvchilardan foydalanish.

Yangi versiyada:

  • Analizator yadrosiga quyidagi tekshiruvlar qo'shildi:
    • funktsiya tanasida qaytarish operatorining yo'qligi;
    • bir-biriga o'xshash ma'lumotlarni qayd qiladi, aniqlanmagan xatti-harakatlarni aniqlaydi;
    • solishtirilayotgan qiymat turning qiymat ifodasidan tashqarida;
    • nusxa ko'chirishni optimallashtirish std::move(local)ni qaytarish uchun qo'llanilmaydi;
    • turli oqimlarda (oqim) o'qish va yozish uchun faylni bir vaqtning o'zida ochib bo'lmaydi;
  • Unix platformalari uchun diagnostika xabarlarini turli ranglarda ko'rsatish uchun qo'shimcha yordam;
  • ValueFlow uchun ramziy tahlil qo'shildi. Ikki noma'lum o'zgaruvchilar orasidagi farqni hisoblashda oddiy deltadan foydalanadi;
  • "aniqlash" tokenlari ro'yxati uchun ishlatiladigan qoidalar ham #include bilan mos kelishi mumkin;
  • kutubxona yorlig'i endi tegni o'z ichiga olishi mumkin , va shunga mos ravishda std::size, std::empty, std::begin, std::end va boshqalar kabi konteynerlarni qabul qila oladigan bepul funksiyalar. ulagichlar uchun yeld yoki harakatni belgilashi mumkin;
  • kutubxona yorlig'i endi tegni o'z ichiga olishi mumkin noyob egalik huquqiga ega aqlli ko'rsatkichlar uchun. Endi bu turdagi aqlli ko'rsatkichlarga osilgan havolalar haqida ogohlantirish beriladi;
  • —cppcheck-build-dir parametrini qayta ishlash bilan bog'liq muammolarni hal qildi;
  • htmlreport endi muallif haqidagi ma'lumotlarni ko'rsatishi mumkin (git blame yordamida);
  • doimiy bo'lmagan, lekin bo'lishi mumkin bo'lgan o'zgaruvchilar haqida kengaytirilgan ogohlantirishlar;
  • Analizatorning to'plangan xato va kamchiliklari tuzatildi.

Bundan tashqari, Misra C 2012 tekshiruvlari, jumladan 1-o'zgartirish va 2-tuzatish, 1.1, 1.2 va 17.3-qoidalardan tashqari, to'liq amalga oshirildi. 1.1 va 1.2 tekshiruvlar kompilyator tomonidan bajarilishi kerak. Tekshirish 17.3 GCC kabi kompilyator tomonidan amalga oshirilishi mumkin.

Manba: opennet.ru

a Izoh qo'shish