Abbiamo utilizzato Perl::Critic
qui al lavoro per applicare le convenzioni del codice. Recentemente ci siamo imbattuti in problemi con la directory /tmp
riempirsi a causa della funzione Temp::File::tempdir
. tempdir
pulisce quando termina il processo Perl, ma poiché l'intero backend è un processo Perl, questo si verifica solo quando il server stesso viene riavviato (non molto spesso). Vogliamo incoraggiare gli sviluppatori a utilizzare il metodo degli oggetti newdir
in futuro, che si ripulisce da solo non appena l'oggetto esce dall'ambito.Perl :: Critico "Non utilizzare questo metodo" - tipo di regola
Fondamentalmente, stiamo cercando di contrassegnare Temp::File::tempdir
come violazione della convenzione di codice, ma non riesco a trovare alcuna regola che sarebbe simile su CPAN. Capisco che questo sia difficile da applicare in un linguaggio tipizzato dinamicamente senza introdurre falsi positivi, ma mi aspetterei che qualcuno si sia imbattuto in problemi simili in passato con un'altra funzione deprecata. Non ci aspettiamo di prendere tutti i casi complicati, solo gli usi più ovvi di Temp::File::tempdir
. L'idea è di scoraggiare l'uso accidentale di tempdir
quando newdir
potrebbe fare il lavoro, non per cogliere tutti i tentativi di ingannare il critico (lo sviluppatore potrebbe sempre usare solo ## no critic
). Probabilmente sarebbe sufficiente lamentarsi quando si utilizza tempdir
se è stato definito use Temp::File
(preferibilmente controllando che nient'altro ridefinisce tempdir
) e quando viene utilizzato Temp::File::tempdir
.
C'è già qualcosa di simile o dovrei ricominciare da capo? Grazie
curioso. Sono disponibili le politiche configurabili 'ProhibitEvilModules' e' ProhibitEvilVariables', ma non 'ProhibitEvilMethods'? – mob