Мы использовали Perl::Critic здесь, чтобы обеспечить соблюдение наших условных кодов. Недавно мы столкнулись с проблемами с заполнением каталога /tmp из-за функции Temp::File::tempdir. tempdir очищается, когда процесс Perl завершается, но поскольку весь наш сервер является процессом Perl, это происходит только тогда, когда сервер сам перезагружается (не очень часто). Мы хотим, чтобы разработчики в будущем использовали метод объекта newdir, который очищается после себя, как только объект выходит из области видимости.
В принципе, мы пытаемся пометить Temp::File::tempdir как нарушение правил кода, но я не могу найти никакого правила, которое было бы похоже на CPAN. Я понимаю, что это трудно обеспечить на динамически типизированном языке без введения ложных срабатываний, но я ожидаю, что кто-то столкнулся с аналогичной проблемой в прошлом с другой устаревшей функцией. Мы не ожидаем, что поймаем все сложные случаи, только самые очевидные применения Temp::File::tempdir. Идея состоит в том, чтобы препятствовать случайному использованию tempdir, когда newdir мог выполнять работу, а не улавливать все попытки обмануть критика (разработчик всегда мог просто использовать ## no critic). Вероятно, было бы достаточно, чтобы жаловаться, когда tempdir используется, если use Temp::File определен (предпочтительно, проверяя, что ничто иное не переопределяет tempdir), и когда используется Temp::File::tempdir.
Есть ли что-то подобное, или я должен начать с нуля? Благодаря