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~~ |