Издање цппцхецк 2.6, статичког анализатора кода за Ц++ и Ц језике

Објављена је нова верзија статичког анализатора кода цппцхецк 2.6, која вам омогућава да идентификујете различите класе грешака у коду на језицима Ц и Ц++, укључујући и коришћење нестандардне синтаксе, типичне за уграђене системе. Обезбеђена је колекција додатака преко којих је цппцхецк интегрисан са различитим системима за развој, континуирану интеграцију и тестирање, а такође пружа функције као што је провера усклађености кода са стилом кода. За рашчлањивање кода можете користити или сопствени парсер или спољни парсер из Цланг-а. Такође укључује донате-цпу.пи скрипту за обезбеђивање локалних ресурса за обављање колаборативног прегледа кода за Дебиан пакете. Изворни код пројекта се дистрибуира под ГПЛв3 лиценцом.

Развој цппцхецк-а је фокусиран на идентификацију проблема повезаних са недефинисаним понашањем и коришћењем дизајна који су опасни са безбедносне тачке гледишта. Циљ је такође минимизирати лажне позитивне резултате. Међу идентификованим проблемима: показивачи на непостојеће објекте, дељења нулом, прекорачења целог броја, нетачне операције померања бита, нетачне конверзије, проблеми при раду са меморијом, нетачна употреба СТЛ-а, дереференцирање нулте показивача, употреба провера након стварног приступа у бафер, прекорачење бафера, коришћење неиницијализованих променљивих.

У новој верзији:

  • Следеће провере су додате језгру анализатора:
    • одсуство оператора повратка у телу функције;
    • евидентира податке који се преклапају, утврђује недефинисано понашање;
    • вредност која се пореди је изван вредности репрезентације типа;
    • оптимизација копирања се не примењује на ретурн стд::мове(лоцал);
    • датотека се не може отворити истовремено за читање и писање у различитим токовима (стреам);
  • за Уник платформе, додата подршка за приказивање дијагностичких порука у различитим бојама;
  • додата симболичка анализа за ВалуеФлов. Користи једноставну делту када израчунава разлику између две непознате променљиве;
  • правила која се користе за листу токена "дефини" такође могу да одговарају #инцлуде;
  • библиотечка ознака сада може да садржи ознаку , а сходно томе и бесплатне функције, које могу прихватити контејнере као што су стд::сизе, стд::емпти, стд::бегин, стд::енд, итд. може специфицирати иелд или акцију за конекторе;
  • библиотечка ознака сада може да садржи ознаку за паметне показиваче који имају јединствено власништво. Сада се издаје упозорење о висећим референцама на ове врсте паметних показивача;
  • отклоњени проблеми са обрадом параметра —цппцхецк-буилд-дир;
  • хтмлрепорт сада може да прикаже информације о аутору (користећи гит бламе);
  • проширена упозорења о варијаблама које нису константне, али би могле бити;
  • Нагомилане грешке и недостаци анализатора су исправљени.

Поред тога, провере из Мисра Ц 2012, укључујући амандман 1 и амандман 2, су у потпуности спроведене, осим правила 1.1, 1.2 и 17.3. Провере 1.1 и 1.2 мора извршити компајлер. Верификацију 17.3 може извршити компајлер као што је ГЦЦ.

Извор: опеннет.ру

Додај коментар