Domanda

Ho un paio di semplici homework C ++ e so che gli studenti hanno condiviso il codice. Questi sono studenti intelligenti e sanno come imbrogliare Moss. Sto cercando uno strumento che possa rinominare variabili in base ai loro tipi (la prima variabile di tipo INT sarà int1, il primo array int sarà intptr1 ...) o fa qualcosa di simile a cui non riesco a pensare ora. Conosci un modo rapido per farlo?

modificare: Devo usare il muschio e segnalare il 90% di corrispondenza

Grazie

È stato utile?

Soluzione

Sì, lo strumento che stai cercando si chiama compilatore. :)

Seriamente, se i programmi presentati sono esattamente la stessa Tranne i nomi dell'identificatore, compilando allora (senza Informazioni sul debug) dovrebbe comportare esattamente lo stesso output.

Se lo fai con il debug acceso, il compilatore può lasciare metadati nell'eseguibile che è diverso per ciascun eseguibile, quindi il commento su come garantire che sia spento. Questo è anche il motivo per cui questo non funzionerà per i programmi Java: quel tipo di informazioni è presente o meno in modalità debug (ai fini dell'introspezione dinamica).

MODIFICARE: Vedo dai commenti aggiunti alla domanda che stai osservando alcuni invii che sono diversi in più dei semplici nomi degli identificatore. Se i programmi sono ancora strutturalmente equivalenti, questo dovrebbe comunque funzionare.

MODIFICARE: Dato che l'uso di muschio è un requisito, questa probabilmente non è la strada da percorrere. Sembra che Moss abbia un certo supporto per il confronto dell'assemblaggio, forse la compilazione con l'assemblatore e l'invio a Moss è un'opzione (a seconda del compilatore che stai usando).

Altri suggerimenti

Puoi scaricare e provare il nostro C cloneDr Rilevatore di codice duplicato. Trova codice duplicato anche quando i nomi delle variabili sono stati modificati. Cambiamenti multipli nello stesso pezzo sono trattati solo uno; Se rinominano i Varaibles in modo costante ovunque, riceverai un rapporto di "One Clone" con la precisa sottostituzione variabile.

Puoi provare Copia rivelatore in pasta insieme a ignoreIdentifiers acceso. Puoi almeno usarlo per un primo passaggio prima di andare allo sforzo di normalizzare i nomi per Moss. Oppure, poiché la fonte è disponibile, forse puoi farlo sputare la sua normalizzazione interna del codice.

Un altro modo per farlo sarebbe quello di compilare le applicazioni e confrontare i loro binari, quindi l'esame non si limita alla modifica del nome variabile/funzione.

Un editore esagonale può aiutarti in questo. Ho appena provato Esame (Non $ $) ed ero contento del risultato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top