Statikus kódelemzés forráskódok szintaktikai és szemantikai modellje alapján

OData támogatás
Konzulens:
Suba Gergely
Irányítástechnika és Informatika Tanszék

A szoftverek esetén fontos a program helyes működése, ez különösen igaz biztonságkritikus szoftvereknél, amelyek hibái nemcsak jelentős anyagi kárt, de akár emberi életeket is követelhetnek. Éppen ezért ezeknek meg kell felelniük bizonyos szabványoknak, amelyek betartásával a helytelen működés könnyebben elkerülhető.

A biztonságkritikus és különösen a beágyazott rendszerek fejlesztése során a C nyelv az egyik legelterjedtebb, legszélesebb körben használt, hiszen ez egy jól bevált, kellően hardverközeli nyelv, amihez sok fordító és fejlesztőeszköz áll rendelkezésre. Nagy hátránya viszont, hogy túlságosan megengedő, így könnyen lehet benne csak futásidőben kiderülő hibát ejteni.

A programok hibái gyakran csak a tesztelés során a szoftver futtatásával derülnek ki, így rengeteg időbe és pénzbe kerül ezek megtalálása és javítása. Egy statikus kódanalizátor szoftver ezzel szemben már fordításidőben jelzi a fejlesztőnek a problémákat, így azok akár a fejlesztés közben, azonnal javíthatók.

Az általam fejlesztett kódanalizátor tervezése során megismertem különböző népszerű kódelemzést támogató szoftvereket, modelleket és szabványokat.

Dolgozatomban a C nyelven leírható kifejezések halmazát szűkítem le a nyelvvel megfogalmazható algoritmusokat nem korlátozva, viszont elősegítve a lehetséges hibák elkerülését. A C nyelvhez a létező szabványokhoz képest szigorúbb típusellenőrzést írok elő, továbbá lehetőséget nyújtok egy adott típus értékkészletének szűkítésére, valamint a típussal végezhető műveletek korlátozására.

A C kód egyszerű kezelése érdekében azt a szoftver először egy EMF (Eclipse Modeling Framework) modellbe képezi le. Ehhez a modellhez gráfmintaillesztésen alapuló Viatra lekérdezéseket és validációs kényszereket fogalmaztam meg. Amennyiben a felhasználó által írt kód megszegi a szűkített C nyelv szabályait, a kódanalizátor szoftver az Eclipse integrált fejlesztőkörnyezetbe épülő, CDT-n (C / C++ Development Tooling) alapuló, saját fejlesztésű plugin segítségével jelez vissza. A fejlesztés során a program implementációjában ejtett hibák megkereséséhez és javításához teszteseteket definiáltam.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.