C++ болон C хэлний статик кодын анализатор cppcheck 2.6-г гаргалаа.

Статик кодын анализатор cppcheck 2.6-ийн шинэ хувилбар гарсан бөгөөд энэ нь C ба C++ хэл дээрх кодын алдааны янз бүрийн ангиллыг тодорхойлох боломжийг олгодог, үүнд суулгагдсан системд ердийн стандарт бус синтакс ашиглах үед. cppcheck нь янз бүрийн хөгжүүлэлт, тасралтгүй интеграци, туршилтын системүүдтэй нэгтгэгдсэн залгаасуудын цуглуулгаас гадна кодын хэв маягт нийцэж буй кодыг шалгах зэрэг функцуудыг өгдөг. Кодыг задлахын тулд та өөрийн задлан шинжлэгч эсвэл Clang-ийн гадаад задлан шинжлэгчийг ашиглаж болно. Энэ нь Debian багцуудын кодыг шалгах хамтын ажиллагааг хийх орон нутгийн нөөцөөр хангах donate-cpu.py скриптийг агуулдаг. Төслийн эх кодыг GPLv3 лицензийн дагуу түгээдэг.

cppcheck-ийг хөгжүүлэх нь тодорхойгүй зан үйлтэй холбоотой асуудлуудыг тодорхойлох, аюулгүй байдлын үүднээс аюултай дизайныг ашиглахад чиглэгддэг. Үүний зорилго нь хуурамч эерэг үр дүнг багасгах явдал юм. Тодорхойлсон асуудлуудын дунд: байхгүй объект руу заагч, тэгээр хуваах, бүхэл тоон хэт их ачаалал, битийн буруу шилжих үйлдлүүд, буруу хөрвүүлэлт, санах ойтой ажиллахад тулгарч буй асуудлууд, STL-ийн буруу хэрэглээ, хоосон заагчийг хасах, бодит хандалтын дараа шалгалтыг ашиглах. буфер рүү, буфер хэт ихсэх, эхлээгүй хувьсагч ашиглах.

Шинэ хувилбарт:

  • Дараах шалгалтуудыг анализаторын цөмд нэмсэн.
    • функцийн биед буцах оператор байхгүй;
    • давхардсан өгөгдлийг бүртгэх, тодорхойгүй зан төлөвийг тодорхойлох;
    • харьцуулж буй утга нь тухайн төрлийн утгын илэрхийллээс гадуур байна;
    • std::move(local) буцаахад хуулбарын оновчлол хамаарахгүй;
    • файлыг өөр өөр урсгал (урсгал) дээр унших, бичихийн тулд нэгэн зэрэг нээх боломжгүй;
  • Unix платформуудын хувьд оношлогооны мессежийг өөр өнгөөр ​​харуулах нэмэлт дэмжлэг;
  • ValueFlow-д зориулсан симболын шинжилгээг нэмсэн. Үл мэдэгдэх хоёр хувьсагчийн ялгааг тооцоолохдоо энгийн дельта ашигладаг;
  • "тодорхойлох" токенуудын жагсаалтад ашигласан дүрмүүд нь #include-тэй тохирч болно;
  • номын сангийн шошго одоо шошго агуулж болно , үүний дагуу std::size, std::empty, std::begin, std::end гэх мэт контейнеруудыг хүлээн авах боломжтой үнэгүй функцүүд. холбогчдод yeld эсвэл үйлдлийг зааж өгч болно;
  • номын сангийн шошго одоо шошго агуулж болно өвөрмөц эзэмшилтэй ухаалаг заагчдад зориулсан. Эдгээр төрлийн ухаалаг заагчуудын унжсан лавлагааны талаар анхааруулга одоо гарч байна;
  • —cppcheck-build-dir параметрийг боловсруулахтай холбоотой асуудлыг зассан;
  • htmlreport одоо зохиогчийн талаарх мэдээллийг харуулах боломжтой (git blame ашиглан);
  • Тогтмол бус, гэхдээ байж болох хувьсагчдын талаарх өргөтгөсөн анхааруулга;
  • Анализаторын хуримтлагдсан алдаа, дутагдлыг зассан.

Нэмж дурдахад, 2012, 1, 2-аас бусад нэмэлт, өөрчлөлт оруулах 1.1, нэмэлт өөрчлөлт 1.2 зэрэг Misra C 17.3-ийн шалгалтууд бүрэн хэрэгжсэн. 1.1 ба 1.2 шалгалтыг хөрвүүлэгч хийх ёстой. Баталгаажуулалт 17.3-ыг GCC гэх мэт хөрвүүлэгч хийж болно.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх