Paglabas ng cppcheck 2.6, isang static code analyzer para sa C++ at C na mga wika

Вышла новая версия статического анализатора кода cppcheck 2.6, позволяющего выявлять различные классы ошибок в коде на языках Си и Си++, в том числе при использовании нестандартного синтаксиса, типичного для встраиваемых систем. Предоставляется коллекция плагинов, через которые обеспечена интеграция cppcheck с различными системами разработки, непрерывной интеграции и тестирования, а также предоставлены такие возможности как проверка соответствия кода стилю оформления кода. Для разбора кода может применяться как собственный парсер, так и внешний парсер от Clang. В состав также входит скрипт donate-cpu.py для предоставления локальных ресурсов для выполнения работы по совместной проверке кода пакетов Debian. Исходные тексты проекта распространяются под лицензией GPLv3.

Ang pagbuo ng cppcheck ay nakatuon sa pagtukoy ng mga isyu na may kaugnayan sa hindi natukoy na pag-uugali at ang paggamit ng mga security-risk construct. Ang layunin din ay upang mabawasan ang mga maling positibo. Kabilang sa mga isyung natukoy ang mga pointer sa mga bagay na hindi umiiral, paghahati sa zero, mga integer overflow, mga maling operasyon ng bit shift, mga maling conversion, mga isyu sa pamamahala ng memorya, maling paggamit ng STL, mga null pointer dereference, mga post-buffer check, mga buffer overrun, at ang paggamit ng mga hindi na-initialize na variable.

Sa bagong bersyon:

  • Ang mga sumusunod na pagsusuri ay naidagdag na sa core ng analyzer:
    • kawalan ng return statement sa katawan ng function;
    • magkakapatong na mga tala ng datos, mga di-natukoy na kahulugan ng pag-uugali;
    • ang halagang inihahambing ay nasa labas ng representasyon ng halaga ng uri;
    • Hindi inilalapat ang copy optimization sa pagbabalik ng std::move(local);
    • hindi maaaring buksan ang isang file nang sabay-sabay para sa pagbabasa at pagsusulat sa iba't ibang stream;
  • Para sa mga platform ng Unix, idinagdag ang suporta para sa pagpapakita ng mga mensaheng diagnostic sa iba't ibang kulay;
  • Nagdagdag ng simbolikong pagsusuri sa ValueFlow. Isang simpleng delta ang ginagamit kapag kinakalkula ang pagkakaiba sa pagitan ng dalawang hindi kilalang baryabol;
  • Ang mga panuntunang ginagamit para sa listahan ng token na "define" ay maaari ring tumugma sa #include;
  • tag ng aklatan maaari na ngayong maglaman ng tag , at alinsunod dito, ang mga libreng function na maaaring tumanggap ng mga container tulad ng std::size, std::empty, std::begin, std::end, atbp. ay maaaring tumukoy ng yeld o action para sa mga container;
  • tag ng aklatan maaari na ngayong maglaman ng tag Para sa mga smart pointer na may natatanging pagmamay-ari, isang babala ang inilalabas ngayon tungkol sa mga nakalawit na sanggunian sa mga naturang smart pointer;
  • Naayos na ang mga isyu sa paghawak ng parameter na --cppcheck-build-dir;
  • Maaari na ngayong ipakita ng htmlreport ang impormasyon ng awtor (gamit ang git blame);
  • pinalawak na mga babala tungkol sa mga baryabol na hindi pare-pareho ngunit maaaring pare-pareho;
  • Naitama na ang mga naipon na error at pagkukulang ng analyzer.

Bukod pa rito, ang mga pagsusuri mula sa Misra C 2012 ay ganap na naipatupad, kabilang ang Susog 1 at Susog 2, maliban sa mga tuntunin 1.1, 1.2, at 17.3. Ang mga pagsusuri 1.1 at 1.2 ay dapat isagawa ng compiler. Ang pagsusuri 17.3 ay maaaring isagawa ng isang compiler, tulad ng GCC.

Pinagmulan: opennet.ru

Bumili ng maaasahang pagho-host para sa mga site na may proteksyon ng DDoS, mga server ng VPS VDS 🔥 Bumili ng maaasahang website hosting na may proteksyon ng DDoS, VPS VDS servers | ProHoster