Објављена је нова верзија статичког анализатора кода цппцхецк 2.6, која вам омогућава да идентификујете различите класе грешака у коду на језицима Ц и Ц++, укључујући и коришћење нестандардне синтаксе, типичне за уграђене системе. Обезбеђена је колекција додатака преко којих је цппцхецк интегрисан са различитим системима за развој, континуирану интеграцију и тестирање, а такође пружа функције као што је провера усклађености кода са стилом кода. За рашчлањивање кода можете користити или сопствени парсер или спољни парсер из Цланг-а. Такође укључује донате-цпу.пи скрипту за обезбеђивање локалних ресурса за обављање колаборативног прегледа кода за Дебиан пакете. Изворни код пројекта се дистрибуира под ГПЛв3 лиценцом.
Развој цппцхецк-а је фокусиран на идентификацију проблема повезаних са недефинисаним понашањем и коришћењем дизајна који су опасни са безбедносне тачке гледишта. Циљ је такође минимизирати лажне позитивне резултате. Међу идентификованим проблемима: показивачи на непостојеће објекте, дељења нулом, прекорачења целог броја, нетачне операције померања бита, нетачне конверзије, проблеми при раду са меморијом, нетачна употреба СТЛ-а, дереференцирање нулте показивача, употреба провера након стварног приступа у бафер, прекорачење бафера, коришћење неиницијализованих променљивих.
У новој верзији:
- Следеће провере су додате језгру анализатора:
- одсуство оператора повратка у телу функције;
- евидентира податке који се преклапају, утврђује недефинисано понашање;
- вредност која се пореди је изван вредности репрезентације типа;
- оптимизација копирања се не примењује на ретурн стд::мове(лоцал);
- датотека се не може отворити истовремено за читање и писање у различитим токовима (стреам);
- за Уник платформе, додата подршка за приказивање дијагностичких порука у различитим бојама;
- додата симболичка анализа за ВалуеФлов. Користи једноставну делту када израчунава разлику између две непознате променљиве;
- правила која се користе за листу токена "дефини" такође могу да одговарају #инцлуде;
- библиотечка ознака сада може да садржи ознаку , а сходно томе и бесплатне функције, које могу прихватити контејнере као што су стд::сизе, стд::емпти, стд::бегин, стд::енд, итд. може специфицирати иелд или акцију за конекторе;
- библиотечка ознака сада може да садржи ознаку за паметне показиваче који имају јединствено власништво. Сада се издаје упозорење о висећим референцама на ове врсте паметних показивача;
- отклоњени проблеми са обрадом параметра —цппцхецк-буилд-дир;
- хтмлрепорт сада може да прикаже информације о аутору (користећи гит бламе);
- проширена упозорења о варијаблама које нису константне, али би могле бити;
- Нагомилане грешке и недостаци анализатора су исправљени.
Поред тога, провере из Мисра Ц 2012, укључујући амандман 1 и амандман 2, су у потпуности спроведене, осим правила 1.1, 1.2 и 17.3. Провере 1.1 и 1.2 мора извршити компајлер. Верификацију 17.3 може извршити компајлер као што је ГЦЦ.
Извор: опеннет.ру