Kódelemzés a .NET Compiler Platform alkalmazásával

OData támogatás
Konzulens:
Dr. Kővári Bence András
Automatizálási és Alkalmazott Informatikai Tanszék

A szoftvereknek, mint termékeknek fontos része maga a forráskód, amely leírja a szoftverek által végzendő műveleteket, a szoftverek által kielégítendő üzleti igényeket és betartandó üzleti szabályokat. Mivel a forráskód a végső termékre jelentős hatással bír, ennek elemzése és vizsgálata fontos feladat. Az objektumorientált forráskód elemzése során szerzett információk – amellett, hogy hasznos, a forráskód minőségére vonatkozó metrikák származtathatóak belőlük – lehetőséget adnak arra, hogy komplex szoftveres mintákat keressünk a kódban.

Ilyen komplex szoftveres minták az objektumorientált tervezési minták. Első dokumentációjuk [1] óta széles körben elterjedtek az ipari alkalmazások fejlesztésében. Javítják a kód karbantarthatóságát, bővíthetőségét, és a mérnöki gyakorlatban fontos kipróbált megoldások használatát is segítik. Programozási nyelvektől függetlenül írják le a megoldásokat, így minden, az objektumorientáltságot támogató programnyelven alkalmazhatóak.

Egy szoftver forráskódjában lévő tervezési minták elemzése segít megérteni a kód adott részének célját és az implementációs részletek mögött meghúzódó tervezési döntéseket. A kód manuális (fejlesztő által történő) átvizsgálása viszont körülményes és időigényes feladat.

A .NET Compiler Platform [2] (korábban Roslyn) megjelenésével a C# és a Visual Basic programozási nyelvek fordításához kapcsolódó szolgáltatások (pl.: szintaxisfa elemzése) közvetlenül elérhetővé váltak a fejlesztők számára. Ezt az új eszközt használtam fel arra, hogy megvalósítsak egy olyan keretrendszert, aminek célja tervezési minták automatikus felismerése C# forráskódban.

A tervezési minták felismeréshez konkrét mintákat elemeztem. A felismerést egy rugalmas, jól bővíthető kritérium-ellenőrző rendszerként valósítottam meg C# nyelven. Eredményeimet nyílt forráskódú osztálykönyvtárak forráskódján validáltam és hasonlítottam össze más, Java alapú rendszerek eredményeivel.

Mivel az irodalom elsősorban eddig a Java nyelvre fókuszált, ezért munkám fontos lépés a C# nyelven írt szoftverek elemzésében. Hosszabb távon a tervezési minták felismerése mellett egyéb szoftveres minták felismerése is implementálható (pl.: objektumorientált tervezési elvek betartásának vizsgálata, anti-patternek felismerése).

[1] E. Gamma, R. Helm, R. Johnson és J. Vlissides, Design patterns: Elements of reusable object-oriented software, Pearson Education, 1994.

[2] „.NET compiler platform,” [Online]. Elérhető: http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx. [Hozzáférés dátuma: 2015. április 29.].

Letölthető fájlok

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