Slijede razlike između dviju inačica stranice.
| Starije izmjene na obje strane Starija izmjena Novija izmjena | Starija izmjena | ||
| racfor_wiki:fdd:plagiranje_koda [2022/06/07 20:11] bboras [Alati za detekciju plagiranja programskog koda] | racfor_wiki:fdd:plagiranje_koda [2024/12/05 12:24] (trenutno) | ||
|---|---|---|---|
| Redak 1: | Redak 1: | ||
| ==== Sažetak ==== | ==== Sažetak ==== | ||
| Velika potražnja za programerima u zadnje vrijeme dovela je programiranje na titulu jednog od najpopularnijih zanimanja današnjice. Programski kodovi za određene funkcionalnosti se mogu pronaći na Internetu u par klikova. To dovodi do problema da se sve više programskih rješenja plagira, što zbog specifičnosti pisanja programskog koda nije lako otkriti. U ovom radu razmatraju se osnovne tehnike plagiranja programskog koda, kao i neke od tehnika detekcije plagijata u programskom kodu. | Velika potražnja za programerima u zadnje vrijeme dovela je programiranje na titulu jednog od najpopularnijih zanimanja današnjice. Programski kodovi za određene funkcionalnosti se mogu pronaći na Internetu u par klikova. To dovodi do problema da se sve više programskih rješenja plagira, što zbog specifičnosti pisanja programskog koda nije lako otkriti. U ovom radu razmatraju se osnovne tehnike plagiranja programskog koda, kao i neke od tehnika detekcije plagijata u programskom kodu. | ||
| + | |||
| ==== Uvod ==== | ==== Uvod ==== | ||
| Plagijat se definira kao čin prisvajanja ili kopiranja tuđeg pisanog, umjetničkog ili drugog kreativnog rada u svoj vlastiti, bilo djelomice ili u cijelosti, bez navođenja izvornog autorstva ili izvornika [1]. Iz definicije se vidi da se plagiranje ne odnosi samo na tekstualne zapise, ali se danas najčešće srećemo upravo s tom vrstom plagiranja, pogotovo u akademskoj zajednici gdje su plagiranja seminara, laboratorijskih vježbi i ostalih aktivnosti postala česta pojava. Za razliku od „normalnog“ teksta, programski kod je specifičan tekst kojim se neka funkcionalnost može napisati na mnoštvo različitih načina, što i detekciju plagijata programskog koda čini kompliciranijom od npr. detekcije plagijata u tekstovima kao što su seminari, članci i sl. | Plagijat se definira kao čin prisvajanja ili kopiranja tuđeg pisanog, umjetničkog ili drugog kreativnog rada u svoj vlastiti, bilo djelomice ili u cijelosti, bez navođenja izvornog autorstva ili izvornika [1]. Iz definicije se vidi da se plagiranje ne odnosi samo na tekstualne zapise, ali se danas najčešće srećemo upravo s tom vrstom plagiranja, pogotovo u akademskoj zajednici gdje su plagiranja seminara, laboratorijskih vježbi i ostalih aktivnosti postala česta pojava. Za razliku od „normalnog“ teksta, programski kod je specifičan tekst kojim se neka funkcionalnost može napisati na mnoštvo različitih načina, što i detekciju plagijata programskog koda čini kompliciranijom od npr. detekcije plagijata u tekstovima kao što su seminari, članci i sl. | ||
| Redak 28: | Redak 29: | ||
| * Uklanjanje praznina | * Uklanjanje praznina | ||
| * Normalizacija teksta | * Normalizacija teksta | ||
| + | |||
| + | Normalizacija teksta je proces transformacije teksta u standardni oblik odnosno u neku kanonsku formu koju prije nije imao. Primjer tablice normalizacije prikazan je ispod - npr. ako se u izvornom tekstu nalazi tip podatka int, double ili short, nakon normalizacije ti će tipovi biti zamijenjeni s " | ||
| ^  Element | ^  Element | ||
| Redak 56: | Redak 59: | ||
| ==== Alati za detekciju plagiranja programskog koda ==== | ==== Alati za detekciju plagiranja programskog koda ==== | ||
| U ovom poglavlju demonstrirat će se neki od popularnih alata za detekciju plagijata u programskom kodu. | U ovom poglavlju demonstrirat će se neki od popularnih alata za detekciju plagijata u programskom kodu. | ||
| - | Za testiranje su napisana tri primjera Python programskog koda koji će se međusobno uspoređivati. | + | Za testiranje su napisana tri primjera Python programskog koda koji će se međusobno uspoređivati. Preciznije, prvi primjerak je originalan i pronađen na internetu, dok su preostala dva ručno modificirana. | 
| Prvi programski kod je jednostavan - računa i ispisuje površinu trokuta. | Prvi programski kod je jednostavan - računa i ispisuje površinu trokuta. | ||
| Redak 92: | Redak 95: | ||
| === Moss === | === Moss === | ||
| - | [[http:// | + | [[http:// | 
| {{: | {{: | ||
| - | Iz prikazanog se vidi da je alat cijeli programski kod prepoznao kao plagijat - očito je da mijenjanje imena varijabli i dodavanje beskorisnih razmaka i linija ne čini problem ovom alatu. Pri učitavanju trećeg primjera programskog koda (primjer s izdvojenom funkcijom), alat iz nepoznatog razloga kaže da nema podudaranja s ostalim primjercima što je čudno budući da je ranije između prvog i drugog primjera prepoznao sva podudaranja - moguće je da je riječ o nekoj grešci u alatu. Ipak, uzmemo li u obzir detekciju koju smo ranije proveli, može se reći da alat dobro obavlja svoj posao. | + | Iz prikazanog se vidi da je alat cijeli programski kod prepoznao kao plagijat - očito je da mijenjanje imena varijabli i dodavanje beskorisnih razmaka i linija ne čini problem ovom alatu. Pri učitavanju trećeg primjera programskog koda (primjer s izdvojenom funkcijom), alat iz nepoznatog razloga kaže da nema podudaranja s ostalim primjercima što je čudno budući da je ranije između prvog i drugog primjera prepoznao sva podudaranja - moguće je da je riječ o nekoj grešci u alatu. Ipak, uzmemo li u obzir detekciju koju smo ranije proveli, može se reći da alat dobro obavlja svoj posao na manje promjene varijabli tj. pri detekciji ne uzima u obzir samo " | 
| + | |||
| + | === CopyLeaks === | ||
| + | [[https:// | ||
| + | |||
| + | {{: | ||
| === Kalebu/ | === Kalebu/ | ||
| Redak 104: | Redak 112: | ||
| {{: | {{: | ||
| + | |||
| + | === Ostali alati === | ||
| + | Uz navedene alate, postoji još mnoštvo detektora plagijata za programski kod. Problem je što se većina tih alata, kao što je [[https:// | ||
| + | |||
| + | ==== Nove ideje ==== | ||
| + | |||
| + | Većina alata za detekciju plagijata u programskom kodu temelji se na usporedbi tokena i sličnih tekstualnih vrijednosti, | ||
| ==== Zaključak ==== | ==== Zaključak ==== | ||
| - | Plagiranje programskog koda je složena tema koja svakim danom postaje sve složenija. U ovom radu navedene su neke tehnike plagiranja koda kao i tehnike detekcije plagijata, ali tu je zapravo samo zagrebana površina. Čak da imamo " | + | Plagiranje programskog koda je složena tema koja svakim danom postaje sve složenija. U ovom radu navedene su neke tehnike plagiranja koda kao i tehnike detekcije | 
| ==== Literatura ==== | ==== Literatura ==== | ||
| Redak 115: | Redak 130: | ||
| [3] [[https:// | [3] [[https:// | ||
| + | [4] [[https:// | ||
| + | |||
| + | [5] [[https:// | ||
| + | |||
| + | [6] [[https:// | ||
| ~~DISCUSSION~~ | ~~DISCUSSION~~ | ||