Каков наилучший способ удалить мертвый код из вашего приложения? - PullRequest
3 голосов
/ 06 апреля 2011

Я часто чувствую, что после многократного перебора моего кода у меня остаются функции, классы или другие строки кода в целом, которые имели смысл в предыдущей ревизии, но не очень полезны для новой ревизии.Я знаю, что профилировщик может сказать вам, какая часть вашего кода была вызвана, когда вы запускаете свои тестовые примеры?Но как определить, какую часть кода никогда не вызывали, чтобы удалить, чтобы то, что осталось, было более читабельным?Например, есть ли быстрый способ узнать, какие функции в вашем коде никуда не вызываются и могут быть безопасно удалены.Это может звучать как тривиальный вопрос для небольшой кодовой базы, но когда ваша кодовая база растет с годами, это становится важным и не таким тривиальным вопросом.

Подводя итог, для разных языков, чтолучший подход для удаления мертвого кода?Существуют ли какие-либо решения или стратегии, не зависящие от языка.Или каждый язык предоставляет инструмент для идентификации мертвого кода.

Обычно мы программируем на Java, Python или Objective-C.

Ответы [ 2 ]

3 голосов
/ 06 апреля 2011

Вы ищете термин «покрытие кода», и есть различные инструменты , которые будут генерировать эту информацию. Вы должны убедиться, что вы используете каждый возможный путь через ваш код, чтобы иметь возможность обнаруживать «мертвый код» с помощью такого инструмента, что возможно только с действительно обширным набором тестов.

Большинство компиляторов имеют некоторый уровень обнаружения мертвого кода, но он обнаруживает только код, который невозможно вызвать, но не код, который никогда не будет вызван из-за логики программы и т. Д.

редактирование:

специально для Python: Как найти неиспользуемые функции в коде Python?

для Java: Как найти неиспользуемый / мертвый код в Java-проектах , Java: удаление мертвого кода

для Objective-C: XCode - поиск мертвых методов в проекте , Очистка кода Objective-C

2 голосов
/ 06 апреля 2011

Для функций попробуйте глобальный поиск по имени функции и проанализируйте, что вы получите.Мертвый код внутри функции обычно можно найти.

Если вы подозреваете, что функция не используется, вы можете удалить ее или закомментировать и посмотреть, скомпилируется ли то, что у вас есть.1004 * Это работает только для функций, которые не используются, потому что они больше не вызываются.Функциональность, которая никогда не используется, потому что путь управления через код больше не активен, найти труднее, и инструменты анализа кода тоже не смогут его найти.

...