Найдите все файлы на живом сервере, которые не были затронуты в течение 48 часов, и назначьте их кандидатами на удаление (к счастью, есть живой сервер)
Под "прикосновением" я предполагаю, что вы проверите файл, чтобы увидеть, был ли он доступен какой-либо части системы. Я бы потратил на это полтора месяца, а не 48 часов. В старых базах PHP-кода вы часто обнаруживаете кучу кода, который вызывается через локальное задание cron раз в неделю или раз в месяц, или третье лицо регулярно вызывает его удаленно как псевдо-сервис. , Ожидая 6 недель, вы с большей вероятностью поймаете все вызываемые файлы.
Реализация системы шаблонов (Smarty) и попытка найти дубликат кода в шаблонах.
Почему? Серьезный вопрос, есть ли причина для внедрения системы шаблонов? (не разбирающиеся в PHP дизайнеры, разработчики, которые доставляют вам неприятности, добавляя слишком много логики в представления, или вы создаете шаблоны, и вы знаете, что в smarty вы работаете намного быстрее, чем в PHP). Если нет, то избегайте этого и просто используйте PHP.
Кроме того, насколько реально реализовать чистую систему шаблонов? Я бы дал благоприятные шансы, что в старых PHP-системах, подобных этой, будет масса «бизнес-логики», смешанной с их представлениями, которые не могут быть реализованы в чистом виде, и если вы разрешите смешанный PHP / Smarty, ваши разработчики будут использовать PHP каждый раз.
Многие методы скопировали и вставили код ... Я не знаю, насколько сильно я хочу с ним связываться.
Я не знаю ни одного инструмента для анализа кода, который бы делал это «из коробки», но можно было бы что-то сделать с помощью функций tokenizer .
Что вы должны действительно сделать
Я не хочу вас отговаривать или деморализовать, но почему вы хотите очистить этот код? Прямо сейчас он делает то, что должен делать. Тупо, но он делает это. Каждый ре-факторинговый проект подвергает риску текущие, недокументированные, возможно, критически важные для бизнеса функции, и в конце этой работы у вас появляется приложение, которое делает то же самое. Это 70 тысяч строк того, что звучит как дрянной код, который только вы заботитесь о том, чтобы исправить, не важно, что другие люди говорят вам о своих приоритетах. Если бы их приоритетом был чистый код, их код уже был бы чистым. Один человек не может изменить культуру. Если нет прямого бизнес-обоснования для очистки этого кода (открыть проект как бизнес-стратегию?), Этот устаревший код никуда не денется.
Вот другой набор приоритетов, которые следует учитывать в устаревших приложениях PHP
Существует ли одноэлементный объект базы данных или пара объектов, которые позволяют разработчикам легко настраивать отдельные соединения для чтения (подчиненный) и записи (ведущий). Многие устаревшие приложения PHP будут создавать несколько соединений с одной и той же базой данных за один вызов страницы, что является кошмаром производительности.
Есть ли прямой способ для разработчиков избежать внедрения SQL-кода? Дайте им это для нового кода (параметризованный SQL) и рассмотрите возможность исправления устаревшего SQL для использования этого нового метода, а также рассмотрите меры безопасности, которые можно предпринять на уровне сети.
Получите какой-нибудь тестовый фреймворк, охватывающий весь унаследованный код, и рассматривайте его как черный ящик. Используйте эти тесты для создания централизованного API, который разработчики могут использовать вместо множества вызовов функций и копировать / вставлять код, который они использовали.
Разработайте централизованную систему для значений конфигурации, большинство устаревшего кода PHP представляет собой ужасную комбинацию определений и констант классов, что означает, что любые изменения конфигурации означают толчок кода, что означает потенциальную DOOM.
Разработать пух, который подключен к системе управления исходным кодом, чтобы обеспечить разумность кода для всего нового кода, а не только для стиля , но чтобы убедиться, что бизнес-логика остается вне поля зрения SQL создается безопасным способом, эти старые библиотеки копирования / вставки не используются и т. д.
Разработайте разумную, отслеживаемую систему сборки и / или push и не позволяйте людям взломать код, работающий на производстве