2010-06-01 7 views
12

Penso di aver riscontrato un errore in Params::Validate, ma non sono sicuro di aver identificato correttamente il pezzo di codice problematico. Il codice in questione non è riuscito a passare le eccezioni sulla catena (utilizzando Try::Tiny), quindi ho iniziato il debug e ho scoperto che una classe utilizzata all'interno del blocco try ha un distruttore. Questo distruttore chiama i metodi dell'oggetto che usano Params::Validate e esaminando Validate.pmsource Vedo un eval senza la localizzazione [email protected], cioè il globale [email protected] viene sovrascritto.

Ora vedo due opzioni:

  1. Params::Validate dovrebbe sempre localizzare [email protected] e quindi si tratta di un bug che devono essere segnalati.
  2. Il bug è nella classe in questione, perché non dovrebbe usare Params::Validate in un distruttore. Params::Validate può rimanere com'è ora.

Quale è? Come dovrei gestire questa situazione?

PS: Penso che i moduli CPAN dovrebbero essere solidi come roccia e né rompere se stessi né il loro ambiente, da qui il titolo della domanda.

risposta

11

Vedere http://search.cpan.org/perldoc?Params::Validate#SUPPORT per come inviare una segnalazione di errore. Hai speso un sacco di energia per scoprire la causa e la soluzione di un problema. Sarebbe un peccato se qualcun altro dovesse tornare sui propri passi senza sapere quello che hai già imparato.

Penso che i moduli CPAN dovrebbero essere solida e né rompere se stessi né il loro ambiente

In un mondo perfetto, il software avrebbe sempre fare ciò che ha affermato di fare e non hanno alcun lato- non documentata effetti. CPAN è un sistema abbastanza aperto, quindi quasi nessuno può caricare quasi tutto. Penso che questa sia più una caratteristica che un bug: una barriera bassa all'ingresso rende più facile lo sviluppo di moduli Perl e ha incoraggiato lo sviluppo di una libreria più ampia e più utile.

Params::Validate è stato rilasciato nove anni fa ed è stato aggiornato circa 94 volte da allora. Se guardi il file CHANGES, vedrai che gli autori sono stati abbastanza coscienziosi nel tenere aggiornato il modulo e nel risolvere problemi occasionali, nonché nell'aggiunta di nuove funzionalità. Probabilmente non li sorprenderà sapere che un utente ha trovato un problema, né dovresti essere troppo scioccato per scoprire che alcune delle librerie sono semplicemente eccellenti e non perfette.

4

A meno che non ci sia una documentazione che dice che il modulo conserva utilmente gli errori di valutazione significativi comecome parte della sua API, è assolutamente un bug.

Penso che i moduli CPAN dovrebbero essere solidi come roccia e né rompere se stessi né il loro ambiente, da qui il titolo della domanda.

Lo ha fatto davvero rompere qualcosa? Posso dirti che è un bug, ma non posso dirti che ti scusa per non aver provato i casi in cui ti aspettavi un chiaro [email protected] e non ne hai avuto uno grazie allo Params::Validate.Se "rompe" un ambiente di sviluppo, beh, questo è il test.

+0

Per essere precisi, è utilizzato nel nostro codice quadro e il mio reparto non è il responsabile per il framework. Quindi, sì, la mancanza di test, ma non del tutto da parte mia o del collega che ha scoperto il problema, aveva provato il suo codice e si chiedeva perché le sue eccezioni non si propagassero. –

Problemi correlati