Нашри cppcheck 2.6, таҳлилгари рамзи статикӣ барои забонҳои C++ ва C

Версияи нави таҳлилгари коди статикии cppcheck 2.6 бароварда шуд, ки ба шумо имкон медиҳад синфҳои гуногуни хатогиҳоро дар забонҳои C ва C++ муайян кунед, аз ҷумла ҳангоми истифодаи синтаксиси ғайристандартӣ, ки барои системаҳои дохилшуда хос аст. Маҷмӯаи плагинҳо пешниҳод карда мешаванд, ки тавассути он cppcheck бо системаҳои гуногуни рушд, ҳамгироии пайваста ва санҷиш муттаҳид карда мешавад ва инчунин чунин хусусиятҳоро ба монанди санҷиши мувофиқати код бо услуби код таъмин мекунад. Барои таҳлили код, шумо метавонед таҳлилгари шахсии худ ё таҳлилгари беруна аз Clang истифода баред. Он инчунин скрипти donate-cpu.py-ро дар бар мегирад, то захираҳои маҳаллӣ барои иҷрои кори муштараки баррасии кодҳо барои бастаҳои Debian таъмин кунад. Рамзи сарчашмаи лоиҳа тибқи иҷозатномаи GPLv3 паҳн карда мешавад.

Рушди cppcheck ба муайян кардани мушкилоти марбут ба рафтори номуайян ва истифодаи тарҳҳое, ки аз нуқтаи назари бехатарӣ хатарноканд, нигаронида шудааст. Мақсад инчунин кам кардани мусбатҳои бардурӯғ аст. Дар байни мушкилоти муайяншуда: нишондиҳандаҳо ба объектҳои мавҷуда, тақсимкунӣ ба сифр, изофаи ададҳо, амалиёти нодурусти тағирёбии битҳо, табдили нодуруст, мушкилот ҳангоми кор бо хотира, истифодаи нодурусти STL, истинодҳои нул, истифодаи чекҳо пас аз дастрасии воқеӣ ба буфер, изофабори буферӣ, истифодаи тағирёбандаҳои ибтидоӣ.

Дар версияи нав:

  • Ба ядрои анализатор санҷишҳои зерин илова карда шуданд:
    • набудани оператори бозгашт дар мақоми функсия;
    • маълумоти такроршавандаро сабт мекунад, рафтори номуайянро муайян мекунад;
    • арзиши муқоисашаванда берун аз муаррифии арзиши намуд аст;
    • оптимизатсияи нусхабардорӣ барои баргардонидани std::move (маҳаллӣ);
    • файлро дар як вақт барои хондан ва навиштан дар ҷараёнҳои гуногун (ҷараён) кушодан мумкин нест;
  • барои платформаҳои Unix, дастгирии иловагӣ барои намоиши паёмҳои ташхисӣ бо рангҳои гуногун;
  • таҳлили рамзӣ барои ValueFlow илова карда шуд. Ҳангоми ҳисоб кардани фарқияти байни ду тағирёбандаи номаълум аз дельта оддӣ истифода мебарад;
  • қоидаҳои истифода бурда мешавад барои рӯйхати нишонаҳо "муайян" низ метавонад мувофиқ #include;
  • теги китобхона акнун метавонад тег дошта бошад , ва мувофиқан функсияҳои ройгон, ки метавонанд контейнерҳоро қабул кунанд, ба монанди std::size, std::empty, std::begin, std::end ва ғайра. метавонад yeld ё амалро барои пайвасткунакҳо муайян кунад;
  • теги китобхона акнун метавонад тег дошта бошад барои нишондиҳандаҳои интеллектуалӣ, ки моликияти беназир доранд. Ҳоло дар бораи истинодҳои овезон ба ин намуди нишондиҳандаҳои интеллектуалӣ огоҳӣ дода мешавад;
  • мушкилоти собит бо коркарди параметри —cppcheck-build-dir;
  • htmlreport акнун метавонад маълумотро дар бораи муаллиф нишон диҳад (бо истифода аз git blame);
  • огоҳиҳои васеъ дар бораи тағирёбандаҳое, ки доимӣ нестанд, аммо метавонанд бошанд;
  • Хатою нуксонхои дар анализатор чамъшуда ислох карда шуданд.

Илова бар ин, санҷишҳо аз Misra C 2012, аз ҷумла ислоҳи 1 ва ислоҳи 2, ба истиснои қоидаҳои 1.1, 1.2 ва 17.3, пурра иҷро карда шуданд. Санҷишҳои 1.1 ва 1.2 бояд аз ҷониби компилятор анҷом дода шаванд. Санҷиши 17.3 метавонад аз ҷониби як компилятор ба монанди GCC анҷом дода шавад.

Манбаъ: opennet.ru

Илова Эзоҳ