Издање ЦонтролФлаг 1.0, алата за идентификацију грешака у Ц коду

Интел је објавио прво велико издање алата ЦонтролФлаг 1.0, који вам омогућава да идентификујете грешке и аномалије у изворном коду користећи систем машинског учења обученог на великој количини постојећег кода. За разлику од традиционалних статичких анализатора, ЦонтролФлаг не примењује готова правила, у којима је тешко предвидети све могуће опције, већ се заснива на статистичким подацима о употреби различитих језичких конструкција у великом броју постојећих пројеката. ЦонтролФлаг код је написан на Ц++ и отвореног кода под МИТ лиценцом.

Систем је обучен изградњом статистичког модела постојећег низа кодова пројеката отвореног кода објављених у ГитХуб-у и сличним јавним репозиторијумима. У фази обуке, систем одређује типичне обрасце за конструисање структура у коду и гради синтаксичко стабло веза између ових образаца, одражавајући ток извршења кода у програму. Као резултат, формира се референтно стабло одлучивања које комбинује развојно искуство свих анализираних изворних кодова. Код који се ревидира пролази кроз сличан процес идентификације образаца који се проверавају у односу на референтно стабло одлучивања. Велика неслагања са суседним гранама указују на присуство аномалије у обрасцу који се проверава.

Издање ЦонтролФлаг 1.0, алата за идентификацију грешака у Ц коду

Као пример могућности ЦонтролФлаг-а, програмери су анализирали изворне кодове ОпенССЛ и цУРЛ пројеката:

  • Аномалне конструкције “(с1 == НУЛЛ) ∧ (с2 == НУЛЛ)” и “(с1 == НУЛЛ) | (с2 == НУЛЛ)" , који се не подударају са уобичајеним шаблоном "(с1 == НУЛЛ) || (с2 == НУЛЛ)". Код је такође идентификовао аномалије у изразима „(-2 == рв)” (минус је била грешка у куцању) и „БИО_путс(бп, „:”) <= 0)” (у контексту провере успешног завршетка функција требало је да буде „== 0").
  • У цУРЛ-у је откривена грешка коју нису детектовали статички анализатори при коришћењу елемента структуре „с->кеепон“, који је имао нумерички тип, али је упоређен са логичком вредношћу ТРУЕ.

Међу карактеристикама верзије ЦонтролФлаг 1.0, постоји пуна подршка за стандардне шаблоне за језик Ц и могућност откривања аномалија у условним изразима „ако“. На пример, када анализирате фрагмент кода „ако (к = 7) и = к;“ Систем ће утврдити да изјава „иф“ обично користи конструкцију „променљива == број“ за упоређивање нумеричких вредности, тако да је велика вероватноћа да је „променљива = број“ у изразу „ако“ узрокована грешком у куцању. Комплет укључује скрипту која вам омогућава да преузмете постојећа спремишта језика Ц на ГитХуб-у и да их користите за изградњу модела. Доступни су и готови модели, што вам омогућава да одмах почнете да проверавате код.

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

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