Scrivi un programma che stampa il messaggio di errore di sintassi del compilatore o dell'interprete. Il messaggio di errore dovrebbe essere fuorviante in modo che i manutentori del codice impiegheranno giorni per scoprire che l'errore era falso, ciò significa che dovresti offuscare (e nascondere le tue intenzioni). Inoltre, l'errore deve essere il più esatto possibile e deve fare riferimento al codice correttamente.
Per i linguaggi rispettati, supponiamo che il manutentore del codice eseguirà compile program.p && ./program
la riga di comando per compilare ED eseguire il programma, ciò significa che non può distinguere se l'output proviene dal compilatore o dal programma stesso. Inoltre, supponiamo che il manutentore del codice attivi i messaggi di errore di sintassi.
Per riferimento, ecco un esempio che ho fatto: https://gist.github.com/359604
La DATA
sezione codifica la stringa del messaggio di errore e l'hash %abcdef
è la tabella di decodifica. L'errore ha stampato i riferimenti alle barre rovesciate, il che rende un manutentore del codice tenterà di contare le barre rovesciate.
Le voci saranno classificate in base a:
- Il codice ha un'intenzione ingannevolmente ovvia
/6
- Il codice riproduce correttamente l'errore
/16
(il punto inizia con 16 e si divide per i fattori corrispondenti per ogni imprecisione)- Lettere maiuscole corrette: 4
- Numero di riga e numero di colonna corretti: 4
- Formulazione corretta: 2 per ogni parola errata
- Il numero di riga a cui viene fatto riferimento fuorvia il manutentore del codice
/3
Per esempio,
./pythontest1.py: line 7: syntax error near token `('
./pythontest1.py: line 7: ` x=input("Enter a number:") #Number input'
ottiene 8 (16/2) sulla correttezza per la mancanza di "imprevisto" prima di "token", viene visualizzato un normale interprete Python
./pythontest1.py: line 7: syntax error near unexpected token `('
./pythontest1.py: line 7: ` x=input("Enter a number:") #Number input'
Se il punto "il codice riproduce correttamente l'errore" è inferiore a 1, la voce viene squalificata.
In caso di pareggio, inserirò ulteriori fattori di classificazione.