C++ жана C тилдери үчүн статикалык код анализатору cppcheck 2.6 чыгарылышы

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

cppcheckти иштеп чыгуу аныкталбаган жүрүм-турум менен байланышкан көйгөйлөрдү аныктоого жана коопсуздук жагынан кооптуу конструкцияларды колдонууга багытталган. Максаты ошондой эле жалган позитивдерди азайтуу. Белгиленген көйгөйлөрдүн арасында: жок объекттерге көрсөткүчтөр, нөлгө бөлүү, бүтүн сандардын ашып кетиши, туура эмес бит которуу операциялары, туура эмес конвертациялар, эс тутум менен иштөөдөгү көйгөйлөр, STL туура эмес колдонуу, нөл көрсөткүчтү жокко чыгаруу, иш жүзүндөгү кирүүдөн кийин текшерүүлөрдү колдонуу буферге, буфердин ашып кетиши, башталбаган өзгөрмөлөрдү колдонуу.

Жаңы версияда:

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

Кошумча, Мисра C 2012 текшерүүлөрү, анын ичинде 1-түзөтүү жана 2-түзөтүүлөр, 1.1, 1.2 жана 17.3 эрежелерин кошпогондо, толугу менен ишке ашырылган. 1.1 жана 1.2 текшерүүлөрдү компилятор аткарышы керек. Текшерүү 17.3 GCC сыяктуу компилятор тарабынан аткарылышы мүмкүн.

Source: opennet.ru

Комментарий кошуу