Мы использовали 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
.
Есть ли что-то подобное, или я должен начать с нуля? Благодаря