Informatii generale
- Categorie: Utilitar
- Judetul: Hunedoara
- Surse: GitHub - ImNvx/CodeGuard · GitHub
Descriere
O suită de aplicații software pentru detectarea plagiatului din codul sursă.
CodeGuard este o platformă de analiză a codului sursă. Platforma combină tehnici clasice de similaritate textuală cu un model de inteligență artificială antrenat de noi pentru a genera amprente de stil unice fiecărui utilizator și a evalua autenticitatea submisiilor.
De ce?
Experiență noastră comună la diverse concursuri și olimpiade din aria informaticii ne-a condus la o concluzie îngrijorătoare: numărul metodelor de copiat depășește cu mult pe cel a metodelor de prevenire a copiatului, lucru care ne-a determinat să dezvoltăm această suită de soluții. Un alt aspect care ne-a motivat a fost șocul pe care l-am avut în momentul în care am aflat că nu există nicio soluție open-source care să combată eficient utilizarea inteligenței artificiale.
Prezentare Generală
Componenta principală, CGinfo Dashboard, oferă o interfață grafică intuitivă pentru gestionarea claselor, elevilor și a concursurilor, integrată cu platforma Kilonova.ro pentru colectarea automată a submisiilor.
Funcționalități principale:
- Gestionare clase și elevi
- Crearea și administrarea claselor:
- Adăugarea și eliminarea elevilor cu validare automată a existenței utilizatorului pe Kilonova.
Gestionare concursuri:
- Crearea concursurilor cu nume, listă de probleme și interval orar
- Monitorizare a concursurilor active
- Istoric complet al concursurilor anterioare per clasa
Analiza submisiilor:
- Colectare automată a submisiilor de pe Kilonova la finalul concursului
- Calcul automat al metricilor de similaritate și autenticitate
- Vizualizare detaliată a fiecărei submisii, incluzând:
-Scorul obținut pe submisia respectivă
-Procentul de similaritate Jaccard față de celelalte submisii
-Procentul de nesimilaritate de stil (AI) față de istoricul utilizatorului
-Codul sursă complet
Tehnologii
CGinfo Dashboard este o aplicație cross-platform construită cu Flet. Am ales Flet deoarece este un framework lightweight, iar faptul că integrează Material 3 Expressive și Cupertino Design Framework a fost un mare plus. Aplicația se conectează la platforma kilonova.ro, colectează automat submisiile elevilor la finalul fiecărui concurs și le analizează prin două metode complementare: Jaccard Similarity (Detectează copierea directă între submisii prin compararea shingle-urilor normalizate) și CodeGuardHybrid.
(Arhitectura modelului de inteligență artificială (CodeGuardHybrid):
Modelul este o rețea neuronală hibridă creată cu ajutorul PyTorch, compusă din două ramuri:
-
Transformer Encoder: Procesează codul tokenizat folosindu-se de Positional Encoding din celebra lucrare științifică “Attention is all you need” și generează un vector prin mean pooling. Această ramură extrage particularitățile sintactice și lexicale (denumirea variabilelor, etc.)
-
MLP (Multi-Layer Perceptron) - Procesează 10 caracteristici de stil extrase explicit din cod:
- Convenții de denumire (camelCase, snake_case, PascalCase, etc.)
- Stilul de plasare a acoladelor
- Distanțarea operatorilor
- Gradul de indentare
- Raportul de comentarii
Cele două ramuri sunt concatenate și proiectate într-un vector de amprentă normalizat.
Aplicația utilizează două baze de date:
- TinyDB (db_clase.json) pentru stocarea claselor și a elevilor asociați. Am ales TinyDB deoarece este foarte ușor de lucrat cu el în Python și nu aveam nevoie de o bază de date complexă la aceste date.
- SQLite (Userdata/CGinfo.db) pentru stocarea submisiilor și a concursurilor. A fost nevoie de SQLite aici, deoarece codul sursă poate să ajungă să ocupe mult spațiu și vrem ca interogările să fie făcute cât mai rapid și eficient. Faptul că este serverless a fost o caracteristică importantă.
Pachetele principale folosite: torch, transformers, Flask, flet, flet-code-editor, tinydb, beautifulsoup4, lxml, requests, mysql-connector-python, sqlite3.
Recomandăm să aruncați o privire și peste readme-ul de pe GitHub, deoarece conține detalii în plus și elemente vizuale.
Cerinte sistem
Sisteme de operare: Windows, Linux, macOS (netestat)
Python 3.9 sau mai nou
Realizatori
Alexandru David Bușoi
- Scoala: Colegiul Național ,Iancu de Hunedoara"
- Clasa: 11
- Judet: Hunedoara
- Oras: Hunedoara
Eric Meștereagă
- Scoala: Colegiul Național “Iancu de Hunedoara”
- Clasa: 11
- Judet: Hunedoara
- Oras: Rapoltu Mare
Screenshots


