Kódduplikációk a forráskódban

Slides:



Advertisements
Hasonló előadás
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Advertisements

Fejmozgás alapú gesztusok felismerése
Valós idejű tesztlefedettség- monitorozás JEE környezetben Dr. Ferenc Rudolf, Szegedi Tudományegyetem Bakota Tibor, FrontEndART Szoftver Kft.
Programozás III STRING-XML.
Diagnosztika szabályok felhasználásával, diagnosztikai következtetés Modell alapú diagnosztika diszkrét módszerekkel.
Rendszertervezés GIMP.
BANKFIÓK Egy elképzelés tényleges megvalósítása valós tervek alapján.
Rendszerfejlesztés II gyak
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
JavaScript.
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
permutáció kombináció variáció
Szoftver bonyolultsági mértékek alkalmazási területei Király Roland 2011.
Programozás I. Horváth Ernő 1. Elérhetőségek Bauer Péter Horváth Ernő Tanszéki honlap
Programozás I. Horváth Ernő.
Programozás I. Horváth Ernő.
Java programozási nyelv 5. rész – Osztályok III.
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Funkciópont elemzés: elmélet és gyakorlat
Szoftver mértékek Szoftver mérték: –A fejlesztési folyamat mérése –Végtermék mérése (termék mérték) Termék mérték: –Külső mértékek: Megbízhatósági mértékek.
ISZAM III.évf. részére Bunkóczi László
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Objektum Vezérelt Szoftverek Analízise Ferenc Rudolf és Beszédes Árpád Szegedi Tudományegyetem FrontEndART.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
2003. december 18.Gyires Béla Informatikai Nap1 Következtés tudás alapú rendszerekben Bognár Katalin Debreceni Egyetem Informatikai.
Fejmozgás alapú gesztusok felismerése Bertók Kornél, Fazekas Attila Debreceni Egyetem, Informatikai Kar Debreceni Képfeldolgozó Csoport KÉPAF 2013, Bakonybél.
Összetett adattípusok
VI. Konténerek 18. Tömbök 19. Rendezés, keresés, karbantartás
Az If függvény és a Feltételes Formázás az Excelben
Objektum orientált programozás a gyakorlatban
Készítette: Csíki Gyula
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás. Adott egy N elemű közösen használt tároló, N  1. Adott a folyamatoknak.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Webprogramozó tanfolyam
Kulcsok meghatározása a táblákban
Projekt eredményeinek disszeminációja – 2. és 12. fejlesztési elem ÁROP- 1.A „Szervezetfejlesztés a konvergencia régióban lévő önkormányzatok számára”
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
2012. március 21. Paulik Áron.  Ha a függvényünk feladata olyan, hogy nem lenne értelme a visszatérési értéknek, vagy csak nincs rá szükség, void típusúként.
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS SZEGEDI TUDOMÁNYEGYETEM S zoftverfejlesztés Tanszék Programrendszerek tanúsítása – szoftverminőség mérése Dr. Gyimóthy.
Programok készítése és futtatása. Integrált fejlesztői környezet (IDE) tartalmaz:  szövegszerkesztőt a program forráskódjának szerkesztésére,  fordítóprogramot.
LL(1)-elemzés ● az LL(1)-elemzők már jobbak az előzőeknél, bár nem fedik le a programozási nyelvek szükségleteit ● alapötlet: a levezetés következő lépéséhez.
A SZÉCHENYI PROGRAMIRODA KONCEPCIÓJA A TÁMOGATÁSI SZOLGÁLTATÁSOKRÓL.
Sapientia - Erdélyi Magyar Tudományegyetem (EMTE) Csíkszereda
Script nyelvek előadás
Gépészeti informatika (BMEGEMIBXGI)
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
A Nyugat költőinek kiadásai a magyarországi antikvár árveréseken c
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Változók.
Geometria 9. évfolyam Ismétlés.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
EGYENES ARÁNYOSSÁGGAL
Hauser Zoltán szakmai vezető Oktatási Hivatal EFOP VEKOP
B M Java Programozás 1. Gy: Java alapok IT A N Ismétlés ++
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
3. osztályban.
A projektek hosszú távú előnye – tartós foglalkoztatás
Függvénysablonok használata
Előadás másolata:

Kódduplikációk a forráskódban Rakyta Péter MultiRáció Ltd.

A kódduplikáció definíciója Olyan szekvencia a forráskódban, mely egynél többször fordul elő a forráskódban. A kódduplikációkat röviden klónoknak nevezzük. A klónok jelenéte valójában felesleges. A klónok számos hibaforrás lehetőségei lehetnek.

Klónokra visszavazathető problémák Sok klón jelenléte növeli a forráskód fenntartásához szükséges erőforrásokat. Hosszú kódrészek ismétlésében „elvesznek” a köztük lévő kisebb különbségek, egyben a klón funkciójának részleteivel is. A javítások gyakran elmaradnak egy-egy klón példányon. Sok klón jelenléte ezért a kevésbé következetes programozás következménye.

Klónok azonosítása a forráskódban Két forráskódrészletet akkor tekintünk klónnak, ha: minden karakterük azonos, karakterei azonosak formázástól és kommentektől eltekintve, „token” felbontásban azonosak, „token” felbontásban egy kicsit eltérnek egymástól, működésileg azonosak.

Példa egy klón példányra bool my_func1(double &c, double a, double b) { if ( b!=0 ) { c = a/b; return true; } else { cout << ”Number 'b' is zero!” << endl; } return false;} bool my_func2(double &c2, double a2, double b2) { if ( a!=0 ) { c2 = b2/a2; return true; } else { cout << ”Number 'a2' is zero!” << endl; } return false;}

Klónok detektálására szolgáló eszköz GOP131B projekt keretében: A FrontEndART által kifejlesztett nyelvelemző eszköz (c++, java)→ a forráskód felépítését leíró ASG (abstract semantic graph) → Az ASG-t elemezve a klón példányok azonosítása. → Alacsony és magas szintű attribútumok meghatározása (MultiRáció Ltd.).

Klónok detektálására szolgáló eszköz

Alacsony szintű attribútumok Clone Length: az ASG csúcsok száma, melyek a klónt alkotják. (Normalized) Clone Dispersion: könyvtárváltások száma, melyek elválasztják a klónokat. Clone Embeddness: a klón beágyazottsága (területéről imenő és bejövő ASG élek száma) – a klón eltávolíthatóságával kapcsolatos. Clone Complexity: a klón példány területének McCabe komplexitása. Clone Coverage: az adott forráskódelem által tartalmazott program sorok hány százalékát érinti klón.

Alacsony szintű attribútumok A klónok feljlődésének nyomon követése a forráskód egyes mérfödlköveinek elemzésével valósítható meg. Így nyomon követkető a klónok keletkezése és eltűnése. Változás alapú metrikák: Clone age: az adott klón milyen rég része a rendszernek. Spread Clones: Adott klón osztályban a példányok száma a megjelenésük óta milyen mértékben növekedett. Clone suspicioucy: Eltűnő, vagy elmozduló klónok aránya a jelenlegi klón példányok számához képest.

Magas szintű attribútumok Készülőben a GOP131B projekt keretein belül: Exporterek fejlesztése, mely egy SVN adatbázisból letölti az egyes revíziókhoz tartozó adatokat (változtatás szerzője, időpontja, st.) Az előző nyelvi elemző és az alacsony szintű metrikák segítségével magas szintű attribútumok meghtatározása (ki a felelős a klón példányért, mekkora erőforrást igényelhet a klón eltávolítása, stb.)