Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "Kódduplikációk a forráskódban"— Előadás másolata:

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

2 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.

3 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.

4 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.

5 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;}

6 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.).

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

8 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.

9 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.

10 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.)


Letölteni ppt "Kódduplikációk a forráskódban"

Hasonló előadás


Google Hirdetések