Wir haben Perl::Critic
hier bei der Arbeit verwendet, um unsere Code-Konventionen durchzusetzen. Vor kurzem traten Probleme mit /tmp
Verzeichnis auf, das wegen der Temp::File::tempdir
Funktion gefüllt wurde. tempdir
räumt auf, wenn der Perl-Prozess beendet wird, aber da unser gesamtes Backend ein Perl-Prozess ist, tritt dies nur auf, wenn der Server selbst neu gestartet wird (nicht sehr oft). Wir möchten die Entwickler dazu ermutigen, in Zukunft die newdir
Objektmethode zu verwenden, die nach sich selbst aufräumt, sobald das Objekt den Gültigkeitsbereich verlässt.Perl :: Kritiker "Verwenden Sie diese Methode nicht" Typ Regel
Grundsätzlich versuchen wir, Temp::File::tempdir
als eine Verletzung der Code-Konvention zu markieren, aber ich kann keine Regel finden, die auf CPAN ähnlich wäre. Ich verstehe, dass dies in einer dynamisch typisierten Sprache schwer zu erzwingen ist, ohne falsche Positive einzuführen, aber ich würde erwarten, dass jemand in der Vergangenheit mit einer anderen veralteten Funktion auf ein ähnliches Problem gestoßen ist. Wir erwarten auch nicht, alle komplizierten Fälle zu erfassen, nur die offensichtlichsten Anwendungen von Temp::File::tempdir
. Die Idee ist, die versehentliche Verwendung von tempdir
zu verhindern, wenn newdir
den Job machen könnte, nicht alle Versuche zu fangen, den Kritiker zu täuschen (Entwickler könnte immer einfach ## no critic
verwenden). Es würde wahrscheinlich reichen, wenn tempdir
verwendet wird, wenn use Temp::File
definiert ist (vorzugsweise überprüft, dass nichts anderes tempdir
neu definiert) und wenn Temp::File::tempdir
verwendet wird.
Gibt es schon etwas ähnliches, oder sollte ich von vorne anfangen? Danke
Curious. Es gibt konfigurierbare 'ProhibitEvilModules' und' ProhibitEvilVariables' Policies, aber keine 'ProhibitEvilMethods'? – mob